一 Linux的UID 和GID
UID的编号为0-65535
0为管理员Root的UID
1-60000为普通用户的UID
其中1-499(CenOS6) 1-999(enOS7)为系统用户使用(作为服务权限账号)
500-60000(CenOS6) 1000-60000(enOS7)为普通登陆用户使用
60000以后的基本不会使用
GID的编号为0-65535
0为管理员Root组的GID
1-60000为普通组的UID
其中1-499(CenOS6) 1-999(enOS7)为系统组使用(作为服务账号组)
500-60000(CenOS6) 1000-60000(enOS7)为普通登陆用户组使用
60000以后的基本不会使用
当创建一个账号的时候不指定用户基本组,会自动创建和账号UID相同GID的基本组
二 Linux用户相关的4个配置文件
/etc/passwd 存放用户名 UID 基本组 家目录
/etc/group 存放组名 GID 组内包含的用户
/etc/shadow 存放用户密码及相关属性
/etc/gshadow 存放组密码相关属性
/etc/passwd
格式 account:password:UID:GID:GECOS:directory:shell
解释 登录名:X:UID:GID:注释信息:家目录:用户默认shell
例如 root:x:0:0:root:/root:/bin/bash
password字段只有占位符X,出于安全问题,password另外存放在/etc/shadow
查看详细文档命令
whatis passwd man 5 passwd
/etc/shadow
格式 login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field
解释 登录名:加密密码:上次修改密码的时间:修改密码最小时间间隔:修改密码最大时间间隔:密码过期前警告时间:密码过期后还能使用的时间:账号失效时间:保留字段
举例
root:$6$H98QFBU6mj9/JK.4$6W..X0l3L0qLl/isPumCmx6Vr/qSjanYClVoDAaBMO64lV85ZWQba1VfAE4lMmRlYVNh5Zjk3mqw9y0hfZLfQ/:16671:0:99999:7:::
其中密码字段有三段,以$分隔
$6$H98QFBU6mj9/JK.4$6W..X0l3L0qLl/isPumCmx6Vr/qSjanYClVoDAaBMO64lV85ZWQba1VfAE4lMmRlYVNh5Zjk3mqw9y0hfZLfQ/
第一段 $6$ 加密方式
查看详细文档命令
whatis crypt man crypt
ID | Method
---------------------------------------------------------
1 | MD5
2a | Blowfish (not in mainline glibc; added in some Linux distributions)
5 | SHA-256 (since glibc 2.7)
6 | SHA-512 (since glibc 2.7)
第二段 $H98QFBU6mj9/JK.4$ 随机生成的盐
第三段 加密后的密码
其中的 date of last password change和account expiration date 时间为距离1970年1月1 的时间
查看详细文档命令
whatis shadow man 5 shadow
/etc/group
格式 group_name:passwd:GID:user_list
查看详细文档命令
whatis group man 5 group
/etc/gshadow
很少用,在组切换的时候用
查看详细文档命令
whatis gshadow man 5 gshadow
三 Linux操作用户的常用命令
在使用命令操作用户时,如果不加参数,则参照默认的用户配置文件
/etc/login.defs 用户创建规则
/etc/default/useradd 默认使用的配置文件
useradd 创建用户
useradd [options] LOGIN
useradd -D [options] 设置创建用户的默认选项
-b, --base-dir BASE_DIR
-c, --comment COMMENT
-d, --home HOME_DIR 复制/etc/skel到家目录作文配置文件
-g, --gid GROUP 不指定会创建和用户同名的基本组
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
-M Do not create the user‘s home directory ,如查为系统用户默认不创建家目录
-N, --no-user-group 不创建和UID相同的GID 必须用-g 指定基本组
-o, --non-unique 允许创建相同UID的账号
-r, --system Create a system account.
-s, --shell SHELL
-u, --uid UID
例:创建用户oracle 附加组database sql ID 3000 家目录为/home/database
useradd -u 3000 -G database,sql -d /home/database oracle
usermod
用户属性修改
usermod [options] LOGIN
参数和useradd一至
-a, --append Add the user to the supplementary group(s). Use only with the -G option.
-c, --comment COMMENT
-d, --home HOME_DIR 修改家目录,旧的文件不会移动到新的家目录 。
-m, --move-home 与-d联合使用,迁移旧文件到新家目录
-e, --expiredate EXPIRE_DATE
-g, --gid GROUP
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
-l, --login NEW_LOGIN 修改登陆名,用户的家目录只能手动修改,其它自动修改。
-L, --lock
-o, --non-unique 允许用户的ID 为同一个
-p, --password PASSWORD
-s, --shell SHELL
-u, --uid UID
-U, --unlock
passwd 给用户添加密码
passwd [options] [username]
--stdin 从标准输出接收用户密码
userdel
userdel [options] LOGIN
-f, --force 强制删除用户,即使用户还在登录状态
-r, --remove 删除用户同时删除家目录
groupadd
groupadd [options] group
-f, --force 待测试
-g, --gid GID
-o, --non-unique 允行添加相同GID的组
-r, --system Create a system group.
groupmod 组属性修改
groupmod [options] GROUP
-g, --gid GID 修改GID
-n, --new-name NEW_GROUP 修改组名
gpasswd
gpasswd [option] group
-a, --add user
-d, --delete user
-r, --remove-password
groupdel
有用户在基本组 ,基本组无法被删除
newgrp 临时切换基本组为指定的组
有附加组不用输密码, 如果没有附加组要输入组密码
chage
修改用户账号及密码的属性
chage [options] [LOGIN]
-d, --lastday LAST_DAY
-E, --expiredate EXPIRE_DATE
-l, --list
chsh 修改用户的shell,基本用不到
chfn 修改用户的指纹,用户的个人信息
-f, --full-name full-name
-o, --office office
-p, --office-phone office-phone
-h, --home-phone home-phone
finger
id 显示用户的各种有效信息和组ID
id [OPTION]... [USERNAME]
-g, --group
-G, --groups
-n, --name
-u, --user
w 显示现在谁在用系统和在做什么
who 显示现在谁在用系统
-a, --all
-b, --boot 显示系统上次启动的时间
-d, --dead 显示死掉的进程
-q, --count 显示全部的登陆用户和登陆的个数
-r, --runlevel
whoami 查询当前的用户是哪个
pwck verify integrity of password files
检查/etc/passwd 和 /etc/shadow 中的内容是不是符合格式
su switch user 切换用户
su user 半切换
su - user su -l user 完会切换
以指定用户的身份执行命令
su - user -c "command"
四 LINUX 文件权限管理
用户对文件的访问权限有三种:
r, w, x
文件:
r: 可使用文件查看工具查看其内容;
w: 可使用文件编辑工具编辑其内容;
x: 可向内核请求将此文件运行为进程;
目录:
r: 可使用ls命令列出目录中的文件或子目录列表;
w: 可在此目录中创建或删除文件;
x:可使用‘ls -l’列出目录文件及子目录的详细属性信息;可使用cd命令切换工作目录为指定目录;
文件的权限主要针对三类对象进行定义:
ownuer: u, 属主;
group: g, 属组;
other: o, 其它;
某类用户对某文件的访问权限:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
664:rw-rw-r--
rwxr-x---: 750
控制权限的常用命令
chmod 修改文件权限:
chmod [OPTION]... MODE[,MODE]... FILE... 直接设置权限
chmod [OPTION]... OCTAL-MODE FILE... 八进制文件权限
chmod [OPTION]... --reference=RFILE FILE.. 复制目标文件权限
三类用户:
u: owner
g: group
o: other
a: all 一般可以省略,默认代表all
两种用法:
=mode =rx =r =rwx =
=后面为空为取消权限
例:ug=rx, go= chmod g=rw yum.log
[+|-]mode
u+r +w +x
例:chmod a+w yum.log
chmod 640 yum.log
chmod 作用于目录 ,不会作用于子文件
-R, --recursive 递归修改权限,会作用于子文件
例: 复制yum.log 的权限给test.log, 两个文件的权限相同,和yum.log一至
chmod --reference=yum.log test.log
chown 修改文件属主
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
-R: recursive
chgrp 修改文件属组
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
-R: recursive
umask:遮罩码
目录:777-umask
文件:666-umask
如果某一类用户的权限减得的结果有执行权限,此时会自动让其权限位加1;
umask UMASK
设定:仅对当前shell进程有效;
五 grep: Global search REgular expression and Print out the line.
作用:文本搜索工具,根据用户指定的“模式(pattern)”逐行去搜索目标文本,打印匹配到的行;
模式:由正则表达式的元字符及文本字符所编写的过滤条件;
元字符:字符不表示其字面意义,而用于表示通配或控制功能;
分两类:
基本正则表达式:BRE
扩展正则表达式:ERE
grep [OPTIONS] PATTERN [FILE...]:
选项:
--color=auto:对匹配到的串做高亮显示;
-v:显示模式匹配不到行;
-i: 忽略字符大小写;
-o: 仅显示能够被模式匹配到的串本行;
-q: 静默模式;
-E:使用扩展的正则表达式;
基本正则表达式的元字符:
字符匹配:
. 匹配任意单个字符;
[] 匹配指定范围内的任意单个字符;
[^ ] 匹配指定范围内的任意单个字符;
[:lower:], [:upper:], ...
次数匹配:用于要指定其次数的字符的后面;
* 任意次;
\? 0或1次;
\+ 1或多次;
\{m\} 精确限制为m次;
\{m,n\} 至少m次,至多n次,[m,n]
\{0,n\} 至多n次;
\{m,\} 至少m次;
.* 匹配任意长度的任意字符;
位置锚定:
^: 行首锚定;用于模式的最左侧;
$ 行尾锚定;用于模式的最右侧;
\<, \b 词首锚定;用于表示单词的模式的左侧;
\>, \b 词尾锚定;用于表示单词的模式的右侧;
^$ 空白行;
分组:\(\)
分组的小括号中的模式匹配到的内容,会在执行过程中被正则表达式引擎记录下来,并保存内置的变量中;这些变量分别是\1, \2, ...
\1: 从左侧起,第一个左括号,以及与之配对的右括号中间的模式所匹配到的内容;
\2:
...
后向引用:使用变量引用前面的分组括号中的模式所匹配到的字符;
扩展的正则表达式:
grep家庭有三个命令:
grep 基本正则表达式
-E 扩展正则表达式
-F 不支持正则表达式
egrep 扩展正则表达式
fgrep 不支持正则表达式
扩展正则表达式的元字符:
字符匹配:
. 任意单个字符
[] 匹配指定范围内的任意单个字符;
[^] 匹配指定范围内的任意单个字符;
次数匹配:
* 任意次
? 0次或1次;
+ 1次以上;
{m} 精确匹配m次;
{m,n} 至少m次,至多n次;
锚定:
^ 锚定行首
$ 锚定行尾
\<, \b 词首锚定;用于表示单词的模式的左侧;
\>, \b 词尾锚定;用于表示单词的模式的右侧;
分组:()
后向引用:\1, \2, ...
或者:
a|b
C|cat: 不表示Cat或cat,而表示C或cat;
要写成(C|c)at
POSIX | Non-standard | Perl/Tcl | Vim | ASCII | Description |
---|---|---|---|---|---|
[:alnum:] | [A-Za-z0-9] | Alphanumeric characters | |||
[:word:] | \w | \w | [A-Za-z0-9_] | Alphanumeric characters plus "_" | |
\W | \W | [^A-Za-z0-9_] | Non-word characters | ||
[:alpha:] | \a | [A-Za-z] | Alphabetic characters | ||
[:blank:] | \s | [ \t] | Space and tab | ||
\b | \< \> | (?<=\W)(?=\w)|(?<=\w)(?=\W) | Word boundaries | ||
[:cntrl:] | [\x00-\x1F\x7F] | Control characters | |||
[:digit:] | \d | \d | [0-9] | Digits | |
\D | \D | [^0-9] | Non-digits | ||
[:graph:] | [\x21-\x7E] | Visible characters | |||
[:lower:] | \l | [a-z] | Lowercase letters | ||
[:print:] | \p | [\x20-\x7E] | Visible characters and the space character | ||
[:punct:] | [][!"#$%&‘()*+,./:;<=>?@\^_`{|}~-] | Punctuation characters | |||
[:space:] | \s | \_s | [ \t\r\n\v\f] | Whitespace characters | |
\S | \S | [^ \t\r\n\v\f] | Non-whitespace characters | ||
[:upper:] | \u | [A-Z] | Uppercase letters | ||
[:xdigit:] | \x | [A-Fa-f0-9] | Hexadecimal digits |
练习:
1、显示/etc/passwd文件中以bash结尾的行;
grep --color bash$ /etc/passwd
2、显示/etc/passwd文件中的两位数或三位数;
grep --color "\<[[:digit:]]\{2,3\}\>" /etc/passwd
3、显示‘netstat -tan‘命令结果中以‘LISTEN’后跟0个、1个或多个空白字符结尾的行;
netstat -tan | grep --color "LISTEN[[:space:]]*$"
4、添加用户bash,testbash, basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名同shell名的行;
useradd testbash useradd basher useradd nologin -s /sbin/nologin grep --color -E "^([[:alnum:]]*):.*\1$" /etc/passwd
5、显示当前系统上root、centos或user1用户的默认的shell和UID;
grep --color -E "^root|centos|user1\>" /etc/passwd | cut -d: -f 1,3,7
6、找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行;
grep --color -E "\<[[:alnum:]_]*\(\)" /etc/rc.d/init.d/functions
7、使用echo输出一个路径,而后egrep找出其路径基名;
echo /etc/rc.d/init.d/functions | grep --color -E -o "([^/])*$"
进一步地:使用egrep取出其目录名;
echo /etc/rc.d/init.d/functions | grep --color -E -o "^.*/"
8、找出ifconfig命令执行结果中1-255之间的数字;
ifconfig | grep --color -E "\<[[:digit:]]{1,2}\>|\<1[[:digit:]]{2}\>|\<2[0-4][0-9]\>|\<25[0-5]\>"
本文出自 “每天进步一点” 博客,请务必保留此出处http://1step.blog.51cto.com/1160799/1690091
原文地址:http://1step.blog.51cto.com/1160799/1690091