学ubuntuUbuntu学步者我用 Linux

Linux two day

2017-11-01  本文已影响22人  Adapa

cat 看内容
cat
cat -n 加行好
cat -s 空行合并


cat
cat-n

cat的相反tac

tac

wc 统计文章的字数行数

w'c

sort排序

sort [-fbMnrtuk] [file or stdin]
选项与参数:
-f  :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b  :忽略最前面的空格符部分;
-n  :使用『纯数字』进行排序(默认是以文字型态来排序的);
-r  :反向排序;
-u  :就是 uniq ,相同的数据中,仅出现一行代表;
-t  :分隔符,默认是用 [tab] 键来分隔;
-k  :以那个区间 (field) 来进行排序的意思
sort

uniq 忽略和报告重复行

uniq [-icu]
选项与参数:
-i   :忽略大小写字符的不同;
-c  :进行计数
-u  :只显示唯一的行
uniq

tee
读取标准输入的数据,并将其内容输出成文件。

选项与参数:
-d  :后面接分隔字符。与 -f 一起使用;
-f  :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;
-c  :以字符 (characters) 的单位取出固定字符区间;

cut命令
可以从一个文本文件或者文本流中提取文本列。

cat sec.log | tee file1  # 读取sec.log ,并生成file1文件
cat sec.log | tee - a file1   # 读取sec.log ,并追加,
cat sec.log  |tee  file1 file2 

history
查看执行过的命令。

history  # 显示最近1000条历史命令
history 5   # 显示最后5条命令
!number# number为history之后命令前的序号:执行该条命令
!cat # 执行最后一条以cat开头的命令

more : 查看文件内容
less : 查看文件内容(这个不好用)
head : 输出文件的开始的部分, 可以指定行数 , 默认显示10行

head -n 5 file 

tail : 查看文件尾部的内容。默认显示最后10行(常用)

tail file1
tail -n 5 file1
tail -f file1  # 动态监控文件

which # 查找其他命令的位置

用户权限

rwxrwxr-- : 三组rwx 分别表示 所有者、所有组、其他人 的权限。

r : 表示可读, 可以用数字 4 来表示
w : 标识可写 ,可以用数字 2 来表示
x : 表示可执行 , 可以用数字 1 来表示
- :表示没有相应权限  可以用数字 0 来表示

修改权限的方法:

chmod o+w  file1
chmod g-w file1
chmod go-w file1
chmod u=rwx file1

r : 4  rwx=7
w : 2  rw=6
x : 1 rx=5

chmod 755  file1  # -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
chmod 644  #  -rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
chmod -R 777 递归目录及其一下全部目录或者文件


#  其中:
#  u 代表所有者(user)
#  g 代表所有者所在的组群(group)
#  o 代表其他人,但不是u和g (other)
#  a 代表全部的人,也就是包括u,g和o

目录上的权限:
r : 表示是否可以读取目录下的文件名
w : 表示是否可以在目录下创建修改文件
x : 表示目录是否可以被搜索

chown : 更改文件的所有者和所有组

chown root:root  file
chown root   file  
chown :root   file

用户&用户组操作

linux使用文件保存用户信息 :

linux使用文件保存用户信息 :

文件
#      /etc/passwd 用户账户信息。
#       /etc/shadow 安全用户账户信息。
#       /etc/group 组账户信息。
#       /etc/gshadow 安全组账户信息。
#       /etc/default/useradd 账户创建的默认值。
#       /etc/skel/ 包含默认文件的目录。
#       /etc/login.defs Shadow 密码套件配置。
passwd
第一个是用户名:密码(占位符x):用户UID:组UID : 描述:home目录:shell (系统交互)

密码保存在:/etc/shadow

shadow
用户名:加密了的密码:最后一次更改密码的时间:密码的最小年龄(用多少时间后强制更改密码):最大密码年龄(更改密码后最多用多长时间):秘密警告时间端(过期前多少时间提醒用户修改秘密):密码禁用期(过了多少天数后冻结未改密码账户):账户过期时间

添加用户useradd user
Ubuntu添加用户后不自己创建目录要手动创建

手动创建目录

登陆
su user
或者su - user 推荐这种

su-user

为什么是$?因为你缺少配置文件

缺少文件

去/etc/skel 下的bash文件 cp到当前目录下


image.png image.png 修正这里

//上面是Ubuntu桌面版的问题

useradd: 添加用户


useradd
sudo -m -s /bin/bash user
# -c 备注 加上备注。并会将此备注文字加在/etc/passwd中的第5项字段中         
#  -d 用户主文件夹。指定用户登录所进入的目录,并赋予用户对该目录的的完全控制权        
#  -e 有效期限。指定帐号的有效期限。格式为YYYY-MM-DD,将存储在/etc/shadow         
#  -f 缓冲天数。限定密码过期后多少天,将该用户帐号停用       
#  -g 主要组。设置用户所属的主要组  www.cit.cn           
#  -G 次要组。设置用户所属的次要组,可设置多组         
# -M 强制不创建用户主文件夹         
#  -m 强制建立用户主文件夹,并将/etc/skel/当中的文件复制到用户的根目录下         
#  -p 密码。输入该帐号的密码         
#  -s shell。用户登录所使用的shell         
#  -u uid。指定帐号的标志符user id,简称uid

useradd user1 # 添加用户 user1
useradd  -d /home/userTT user2

userdel : 删除用户

userdel  user1  #
userdel -r user1

#  -r, --remove   用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。
#    -f, --force    此选项强制删除用户账户,甚至用户仍然在登录状态。它也强制删除用户的主目录和邮箱,即使其它用户也使用同一个主目录或邮箱不属于指定的用户

usermod : 修改用户信息

# -c<备注>  修改用户帐号的备注文字。 
# -d登入目录>  修改用户登入时的目录。 
# -e<有效期限>  修改帐号的有效期限。 
# -f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。 
# -g<群组>  修改用户所属的群组。 
# -G<群组>  修改用户所属的附加群组。 
# -l<帐号名称>  修改用户帐号名称。 
# -L  锁定用户密码,使密码无效。 
# -s<shell>  修改用户登入后所使用的shell。 
# -u<uid>  修改用户ID。 


# -U  解除密码锁定。

usermod -G staff user2  # 将 newuser2 添加到组 staff 中 
usermod -l newuser1 newuser  # 修改 newuser 的用户名为 newuser1 
usermod -L newuser1  # 锁定账号 newuser1
usermod -U newuser1  # 解除对 newuser1 的锁定

groupadd : 添加组

groupadd group1 
groupadd -g  1000 group1  # 指定gid

groupdel : 删除组

groupdel group1 # 删除组

su与 sudo

su : 切换用户,没有参数时,默认切换为root用户;

su   # 切换为root

## 推荐
su -   # 切换为root 并加载user1的环境配置
su -  user1 # 切换为user1 并加载user1的环境配置

sudo : 让当前用户暂时以管理员的身份root来执行命令。

Ubuntu 默认没有启用root用户, 普通用户执行一些特殊的操作时,使用sudo就可以让普通用户以root用户的身份执行命令

sudo有一个配置文件: /etc/sudoers ; 通过修改配置文件可以让指定用户使用sudo命令

man sudoers # 查看man手册
看下面几行: 
# Host alias specification # 配置Host_Alias:就是主机的列表 
Host_Alias      HOST_FLAG = hostname1, hostname2, hostname3
# User alias specification # 配置User_Alias:就是具有sudo权限的用户的列表 
User_Alias USER_FLAG = user1, user2, user3 

# Cmnd alias specification # 配置Cmnd_Alias:就是允许执行的命令的列表,命令前加上!表示不能执行此命令.命令一定要使用绝对路径,避免其他目录的同名命令被执行,造成安全隐患 ,因此使用的时候也是使用绝对路径! 
Cmnd_Alias      COMMAND_FLAG = command1, command2, command3 ,!command4

# 配置Runas_Alias:就是用户以什么身份执行(例如root,或者oracle)的列表 
Runas_Alias RUNAS_FLAG = operator1, operator2, operator3 


# User privilege specification  
# 配置权限的格式如下: 
#  USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG 

root    ALL=(ALL:ALL) ALL
如果不需要密码验证的话,则按照这样的格式来配置 
USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG 


格式为:用户名(用户别名) 主机名(主机别名)=[(运行用户或是Runas_Alias)可选] [tag可选]  可以执行的命令(或Cmmd_Alias)  这样描述语法很生硬,不易理解,举例子
user1  host1 = /bin/kill # user1 可以在host1上使用命令/bin/kill
user1  host1 = NOPASSWD: /bin/kill # user1 可以在host1上使用命令/bin/kill 同时可以不必输入密码(这里就是使用了NOPASSWD # 这个tag,默认是PASSWD)
user1  host1 = NOPASSWD: /bin/kill , PASSWORD: /bin/ls # user1 可以在host1上使用命令/bin/kill无需输入密码,但是使用/bin/ls则需要输入密码
user1  host1 = (opterator) /bin/kill # user1 可以在host1上使用命令/bin/kill但是必须是以operator用户运行这个命令,等价于# su -u opertor /bin/kill
user1  host1 = (:group_name) /bin/kill # user1 可以在host1上使用命令/bin/kill,且必须以group_name这个用户群组里面的用户来运行。
%group_name host1 = /bin/kill # 所有group_name里面的用户都可以在host1上执行/bin/kill(Linux中一般代表整个用户群组用# %group_name)
再举个实际例子,我之前对sudo su这个命令不理解,为什么我可以直接就su到root用户了呢,连密码都不需要?查看了一下sudoers文件才知道原来里面有这么一行:
xxx     ALL=NOPASSWD: /bin/su

alias : 给命令起别名

alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

如果需要别名永久生效,需要保存到 .bashrc 文件用户HOME目录下

image.png
上一篇下一篇

猜你喜欢

热点阅读