(一)基本权限
- 读取:允许查看内容
read------------------------>r
- 写入:允许修改内容
write----------------------->w
- 可执行:允许运行和切换
excute------------------>x
(二)权限适用对象(归属)
-
所有者:拥有此文件/目录的用户
user------------------>u
-
所属组:拥有此文件/目录的组
group------------------->g
-
其他用户:除所有者、所属组以外的用户
other---------->o
查看文件/目录属性
ls -l /opt/
:查看opt
目录内容属性ls -ld /opt/
:查看opt
目录的属性类型:以
-
开头是文件,以d
开头是目录,以l
开头是链接文件
权限:rwx r-x r-x
,3位一组,所有者具备的权限,所属组成员具备的权限,其他人具备的权限
-
修改文档所属关系
chown [-R] 属主 文档
chown [-R] :属组 文档
chown [-R] 属主:属组 文档
(三)附加权限(特殊权限)
用户组附加权限
Set GID
- 可以使用
chmod g+s 目录
来增加附加权限 - 附加在所属组的
x
位上 - 所属组的权限标识会变为
s
,如果原文档没有x
权限,则是S
- 适用于目录,
Set GID
可以使目录下新增的文档自动设置与父目录相同的所属组 - 继承功能:Linux默认没有继承,附加权限可以使得当前目录下
新增
的子文档继承父目录的所属组身份,所属组内的成员即可查看目录下新增的文件,不需要每次新增文件后都修改文件的所属组
用户附加权限
Set UID
- 可以使用
chmod u+s 文件
来增加附加权限 - 附加在属主的
x
位上 - 适用于可执行文件,
Set UID
可以让使用者具有文件属主的身份及部分权限1.使用root用户将
/bin/mkdir
拷贝一份重命名为rmkdir
(名称自定义)
2.切换到任意普通用户
3.使用rmkdir
在根目录下创建一个文件夹看看,是可以创建成功的,再用系统自带的mkdir
创建试试,应该是权限不够
Sticky Bit
- 附加在其他人的
x
位上 - 其他人的权限标识会变为
t
- 适用于开放
w
权限的目录,可以阻止用户滥用w
写入权限(禁止操做别人的文档)1.以root用户在
/home
下创建一个公用的目录,让所有成员都可以访问
mkdir /home/public
chmod ugo=rwx /home/public
2.此时切换用户A,进入到/home/public
目录下,新建a.txt
文件
3.再次登录用户B,进入到/home/public
目录下,新建b.txt
文件
4.用户B,不仅可以在此目录下创建文件,还可以删除其他用户创建的文件
5.为了避免这种情况,用户不允许删除或者操做其他人的文件,此时就需要用到t
权限,chmod o=t /home/public
6.接下来每个用户只能操做自己在/home/public
目录下新建的文件了
(四)ACL权限控制
(1)文档归属的局限性
- 任何人只属于三种角色:属主、属组、其他人
- 无法实现更精细的控制
(2)acl访问策略
- 能够对个别用户、个别组设置独立的权限
- 大多数挂载的
EXT3/4、XFS
文件系统默认已支持 - 设置
acl
权限:setfacl [-R] -m [u|g]:[用户名|组名]:rx /home/public
,参数-R:递归,-m:modify
,一但设置了acl
权限,建议使用getfacl
查看权限 - 查看是否设置成功:
getfacl /home/public
- 删除指定
acl
策略:setfacl [-R] -x u:用户名 文档路径
- 删除所有
acl
策略:setfacl [-R] -b 文档路径