Linux是一个多用户的操作系统,为了实现资源分派及出于安全的考虑,必须对用户进行不同权限的分配。用户组便于更高效地管理用户权限。
用户操作Linux需要经过三个步骤的权限认证:
- Authentication:认证
- Authorization:授权
- Accouting:审计
用户及用户组
用户UID
- 管理员:root, 0
- 普通用户:1-65535
- 系统用户:1-499, 1-999(centos7) 作用:对守护进程获取资源进行权限分配
- 登录用户:500+, 1000+
用户组GID
- 管理员组:root, 0
- 普通组:
- 系统组:1-499, 1-999(centos7)
- 普通组:500+, 1000+
Linux安全上下文:
- 运行中的程序:进程 (process)
- 以进程发起者的身份运行:
- 进程所能够访问的所有资源的权限取决于进程的发起者的身份;
Linux组的类别:
- 用户的基本组(主组):组名同用户名,且仅包含一个用户:私有组
- 用户的附加组(额外组):
Linux用户和组相关的配置文件:
- /etc/passwd:用户及其属性信息(名称、UID、基本组ID等等);
- /etc/group:组及其属性信息;
- /etc/shadow:用户密码及其相关属性;
root:$6$LQX0XQPn8GGtl.WF$oLtdUxErgZFU7sGPWx9t4xGj/fSvb2IOZV6lp4t 1XfoGL8V/iayOtfqBrpqaOmxncY6RKAPhUouRqYbzilaAH/:16538:0:99999:7: ::
用户名:加密了的密码:最近一次更改密码的日期:密码的最小使用期限(修改之后至少要用多久才能再次修改):最大密码使用期限(超过使用期限必须修改密码):密码警告时间段(提示修改密码):密码禁用期(登录后必须修改密码):账户过期日期(账号被锁定,须找管理员处理):保留字段
- /etc/gshadow:组密码及其相关属性;
加密机制
相同密码的不同用户其加密串也不同
[root@senlong tmp]# useradd tom
[root@senlong tmp]# useradd jerry
[root@senlong tmp]# echo 'redhat' | passwd --stdin tom
Changing password for user tom.
passwd: all authentication tokens updated successfully.
[root@senlong tmp]# echo 'redhat' | passwd --stdin jerry
Changing password for user jerry.
passwd: all authentication tokens updated successfully.
[root@senlong tmp]# tail -n 2 /etc/shadow
tom:$6$iZ29ET3u$eAxeb87ezlGjkcNPHkvHMievPk.57AinM0vpkI92yxcPY649kWg.2pgGTR01tBeAUDe7wLyWHx9DHVRHdxEeY.:17182:0:99999:7:::
jerry:$6$aSOCF9UE$WYjJi4V6f0hHfx2FkfDWEwFgeROYLrio4e2rhjYdKsI5dtUgCkXmgwCVJ8zvIQ4r/33addrH/5j/o4Mi1S5Yg0:17182:0:99999:7:::
用户和组相关命令
用户创建:useradd
useradd [options] LOGIN
- -u UID: [UID_MIN, UID_MAX], 定义在/etc/login.defs
- -g GID:指明用户所属基本组,可为组名,也可以GID;
- -c "COMMENT":用户的注释信息;
- -d /PATH/TO/HOME_DIR: 以指定的路径为家目录;
- -s SHELL: 指明用户的默认shell程序,可用列表在/etc/shells文件中;
- -G GROUP1[,GROUP2,...[,GROUPN]]]:为用户指明附加组;组必须事先存在;
- -r: 创建系统用户
默认值设定:/etc/default/useradd文件中
useradd -D
-s SHELL
[root@senlong tmp]# cat /etc/login.defs # 查看用户帐号限制的文件
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500
UID_MAX 60000
...
组创建:groupadd
groupadd [OPTION]... group_name
- g GID: 指明GID号;[GID_MIN, GID_MAX]
- r: 创建系统组
切换用户或以其他用户身份执行命令:su
su [options...] [-] [user [args...]]
切换用户的方式:
- su UserName:非登录式切换,即不会读取目标用户的配置文件;
- su - UserName:登录式切换,会读取目标用户的配置文件;完全切换;
Note:root su至其他用户无须密码;非root用户切换时需要密码;
换个身份执行命令:
su [-] UserName -c 'COMMAND'
用户属性修改:usermod
usermod [OPTION] login
- -u UID: 新UID
- -g GID: 新基本组
- -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append;
- -s SHELL:新的默认SHELL;
- -c 'COMMENT':新的注释信息;
- -d HOME: 新的家目录;原有家目录中的文件不会同时移动至新的家目录;若要移动,则同时使用-m选项;
- -l login_name: 新的名字;
- -L: lock指定用户
- -U: unlock指定用户
- -e YYYY-MM-DD: 指明用户账号过期日期;
- -f INACTIVE: 设定非活动期限;
给用户添加密码:passwd
passwd [OPTIONS] UserName: 修改指定用户的密码,仅root用户权限
passwd: 修改自己的密码;
- -l: 锁定指定用户
- -u: 解锁指定用户
- -n mindays: 指定最短使用期限
- -x maxdays:最大使用期限
- -w warndays:提前多少天开始警告
- -i inactivedays:非活动期限;
- --stdin:从标准输入接收用户密码;
echo "PASSWORD" | passwd --stdin USERNAME
删除用户:userdel
userdel [OPTION]... login
- -r: 删除用户家目录;
组属性修改:groupmod
groupmod [OPTION]... group
- -n group_name: 新名字
- -g GID: 新的GID;
组删除:groupdel
groupdel GROUP
组密码:gpasswd
gpasswd [OPTION] GROUP
- -a user: 将user添加至指定组中;
- -d user: 删除用户user的以当前组为组名的附加组
- -A user1,user2,...: 设置有管理权限的用户列表
修改用户属性:chage
chage [OPTION]... LOGIN
- -d LAST_DAY
- -E, --expiredate EXPIRE_DATE
- -I, --inactive INACTIVE
- -m, --mindays MIN_DAYS
- -M, --maxdays MAX_DAYS
- -W, --warndays WARN_DAYS
权限管理:
文件的权限主要针对三类对象进行定义:
- owner: 属主, u
- group: 属组, g
- other: 其他, o
每个文件针对每类访问者都定义了三种权限:
- r: Readable
- w: Writable
- x: eXcutable
文件:
- r: 可使用文件查看类工具获取其内容;
- w: 可修改其内容;
- x: 可以把此文件提请内核启动为一个进程;
目录:
- r: 可以使用ls查看此目录中文件列表;
- w: 可在此目录中创建文件,也可删除此目录中的文件;
- x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录;
权限用数字表示
权限 | 二进制 | 十进制 |
---|---|---|
--- | 000 | 0 |
--x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r-- | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
简化记忆:读(r) = 4 写(w) = 2 执行(x) = 1
如:
640: rw-r-----
rwxr-xr-x: 755
修改文件权限:chmod
chmod [OPTION]... OCTAL-MODE FILE...
- -R: 递归修改权限
chmod [OPTION]... MODE[,MODE]... FILE...
修改一类用户的所有权限:
- u=
- g=
- o=
- ug=
- a=
- u=,g=
修改一类用户某位或某些位权限
- u+
- u-
修改文件的属主:chown
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
- -R: 递归
修改文件的属组:chgrp
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
- -R
umask
文件或目录创建时的遮罩码(指定了创建文件/目录的默认权限):umask
- FILE: 666-umask 如果某类的用户的权限减得的结果中存在x权限,则将其权限+1(仅限文件)
- DIR: 777-umask
[root@senlong tmp]# umask # 查看掩码
0022
[root@senlong tmp]# umask 3 # 修改掩码
[root@senlong tmp]# umask
0003