用户权限、特殊权限和ACL.md
2017-05-30 本文已影响0人
属于你的世界
1.基本概念
linux 安全上下文
- 运行中的程序:进程 (process)
以进程发起者的身份运行:
root: /bin/cat
mage: /bin/cat
进程所能够访问资源的权限取决于进程的运行者的身份
组的类别和基本配置文件
-
组的类别
-
用户的主要组(primary group):
- 用户必须属于一个且只有一个主组
- 组名同用户名,且仅包含一个用户:私有组
- 用户的附加组(supplementary group)
- 一个用户可以属于零个或多个辅助组
-
主要配置文件
- /etc/passwd :用户及其属性信息( 名称、UID 、主组ID 等)
-
文件格式:
Paste_Image.png
-
- /etc/group :组及其属性信息
-
文件格式:
Paste_Image.png
-
- /etc/shadow :用户密码及其相关属性
- 文件格式: login name:encrypted password:date of last password change:minimnu passwd age : maxmnu paasword age: password warning period:password inactivity period:account expiration date reserved field
- /etc/gshadow:组密码及其相关属性
- 文件格式: group name: encrypted password:administrators:members
- /etc/passwd :用户及其属性信息( 名称、UID 、主组ID 等)
2. 文件权限
-
文件属性
- 文件属性进行操作的命令
- chown
- 作用:进行文件属组和属主的更改
-
语法:
Paste_Image.png
-
实例:更改文件test.txt的属组和属主为test用户
Paste_Image.png - chgrp
- 作用: 改变文件的属组
-
语法:
Paste_Image.png -
实例: 将test.txt文件的属组改成root
Paste_Image.png
-
文件权限
- 文件的权限主要针对三类对象进行定义:
- owner: 属主, u
- group: 属组, g
- other: 其他, o - 每个文件针对每类访问者都定义了三种权限:
- r: Readable
- w: Writable
- x: eXcutable
注:当然这只是最基本的权限
-
文件权限操作命令
- chmod
- 作用:修改文件的基本权限,当然这里的
-
文件系统特殊权限
-
特殊权限的前提: 进程有属主和属组;文件有属主和属组
(1) 任何一个可执行程序文件能不能启动为进程, 取决发起者
对程序文件是否拥有执行权限
(2) 启动为进程之后,其进程的属主为发起者, 进程的属组为
发起者所属的组
(3) 进程访问文件时的权限,取决于进程的发起者
(a) 进程的发起者,同文件的属主:则应用文件属主权限
(b) 进程的发起者,属于文件属组;则应用文件属组权限
(c) 应用文件“其它”权限 -
SUID
- 任何一个可执行程序文件能不能启动为进程:取决发起者对
程序文件是否拥有执行权限 - 启动为进程之后,其进程的属主为原程序文件的属主
SUID 只对二进制可执行程序有效
SUID 设置在目录上无意义
- 任何一个可执行程序文件能不能启动为进程:取决发起者对
-
权限设定:
chmod u+s FILE...
chmod u-s FILE -
权限位映射:
user, 占据属主的执行权限位
s: 属主拥有x 权限
S :属主没有x 权限 -
SGID 对于可执行文件
- 任何一个可执行程序文件能不能启动为进程:取决发起者对
程序文件是否拥有执行权限 - 启动为进程之后,其进程的属主为原程序文件的属组
- 权限设定:
chmod g+s FILE...
chmod g-s FILE...
- 任何一个可执行程序文件能不能启动为进程:取决发起者对
-
SGID 对于目录
- 默认情况下,用户创建文件时,其属组为此用户所属的 主 组
- 一旦某目录被设定了SGID ,则对此目录有写权限的用户在此
目录中创建的文件所属的组为此目录的属组 通常用于创建一个协作目录 - 权限设定:
chmod g+s DIR...
chmod g-s DIR... - 权限位映射:
group, 占据属组的执行权限位
s: group 拥有x 权限
S :group 没有x
-
Sticky
- 具有写权限的目录通常用户可以删除该目录中的任何
文件,无论该文件的权限或拥有权 - 在目录设置Sticky 位,只有文件的所有者或root可
以删除该文件 - sticky 设置在文件上无意义
- 权限设定:
chmod o+t DIR...
chmod o-t DIR... - 权限位映射:
t: other 拥有x 权限
T :other 没有x 权
- 具有写权限的目录通常用户可以删除该目录中的任何
ACL
- ACL :Access Control List ,实现灵活的权限管理,除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
- CentOS7 默认创建的xfs 和ext4 文件系统具有ACL 功能, CentOS7 之前版本,默认手工创建的ext4 文件系统无ACL功能, 需手动增加:
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test - ACL 生效 顺序:所有者,自定义用户,自定义组,其 他 人
- 实例: 为多用户或者组的文件和目录赋予访问权限rwx
• mount -o acl /directory
• getfacl file |directory
• setfacl -m u:wang:rwx file|directory
• setfacl -Rm g:sales:rwX directory
• setfacl -M file.acl file|directory
• setfacl -m g:salesgroup:rw file| directory
• setfacl -m d:u:wang:rx directory
• setfacl -x u:wang file |directory
• setfacl -X file.acl directory - ACL 文件上的group 权限是mask 值(自定义用户,自定义组
,拥有组的最大权限), 而非 传统的组权限 - getfacl 可看到特殊权限:flags
- 通过ACL 赋予目录默认x 权限 , 目录内文件也不会继承x 权限
- base ACL 不能删除
- setfacl -k dir 删除默认ACL 权限
- setfacl –b file1 清除所有ACL 权限
- getfacl file1 | setfacl --set-file=- file2 复制file1的 的acl 权限给file2
- mask 只影响除所有者和other 的之外的人和组的最大权限
Mask 需要与用户的权限进行逻辑与运算后,才能变成有限的
权限(Effective Permission) - 用户或组的设置必须存在于mask 权限设定 范围内才会 生效
setfacl -m mask::rx file - --set 选项会把原有的ACL 项都删除,用新的替代,需要注
意的是一定要包含UGO 的设置,不能象-m 一样只是添加
ACL 就可 以 - 示例:
setfacl --set u::rw,u:wang:rw,g::r,o::- file1 - 备份和恢复ACL
- 主要的文件操作命令cp 和mv 都支持ACL ,只是cp 命令需要
加上-p 参数。但是tar 等常见的备份工具是不会保留目录
和文件的ACL 信息 - 实例:
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R --set-file=acl.txt /tmp/dir1
setfacl --restore acl.txt
getfacl -R /tmp/dir1