1. 普通权限
查看文件权限使用ll filename
文件普通权限分为r、w、x, 即可读、可写、可执行。
特殊权限权限suid、sgid、Stickybit
用户分为: 属主(u), 同组人(g), 其他人(o)
文件拥有者对文件一定有写的权限,即使在文件权限中文件属主只具有读的权限。
root在普通用户A目录下新建文件,即使文件属主是root,即使用户A对此文件无写权限,但由于文件在用户A目录下,因此用户A可以向此文件内写入数据。
(1)chmod
+ 在原先权限基础上增加指定权限
- 在原先权限基础上去掉指定权限
= 权限直接设置为指定值,原先权限取消
chmod u+x file1
chmod g-rx file1
chmod o=x file1
使用数字表示权限:
r : 4
w : 2
x : 1
chmod 411 file1
(2)umask
文件默认权限补码
umask可查询文件默认权限的补码,umask 数值, 可以设置文件默认权限的补码。
计算文件默认权限:
使用666 - 022 和777 - 022的方式求文件和目录默认权限的方式并不严谨,有时出错。
正确计算方法:
文件: 666 & (umask的反码)。
目录 : 777 & (umask反码)
如: 按照第一种方式666 - 033 = 633。但是实验实际结果为644
具体如下:
文件权限 umask
6 6 6 0 3 3
110 110 110 000 011 011
111 100 100 umask反码
110 110 110
111 100 100 &运算
110 100 100
6 4 4
umask具体数值由/etc/bashrc中代码控制:
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002 #普通用户
else
umask=022 #系统用户
fi
2. 特殊权限
suid、sgid、Stickybit对应的数值为: u :4 , g :2, t : 1, 在权限中都占据x位。
(1)suid
只作用于二进制可执行文件,对目录无效。
当运行此文件时会具有与文件属主一样的权限。
chmod u+s a
(2)sgid
可作用于二进制可执行文件和目录。
当作用于目录时,目录内新建的文件的所属组与目录所属组一样。
当作用于文件时,执行此文件时将会具有与文件所属组一样的权限。
chmod g+s a
(3)Stickybit
又称为粘滞位。
只可作用于目录,目录内新建的文件只有root用户、文件属主、目录属主可以删除。
chmod o+t
3. 扩展ACL
以上权限的设置都是针对所有用户,ACL用于单独给某个用户设置权限。
setfacl -m u:user1:ew- a.txt #用户user1对文件a.txt权限。
setfacl -R -m u:user1:rw- dir1 #对目录设置扩展权限。
getfacl a.txt #查看a.txt扩展权限。
setfacl -x u:user1 a.txt #删除用户user1对文件a.txt的扩展权限
setfacl -b a.txt #删除所有用户对文件a.txt的扩展权限。
4. chattr & lsattr
参数 -a : 只可追加
-i : 不可有任何修改
chattr +a a.txt , 出现a位,即使root也无法删除
chattr +i a.txt 完全锁死
chatrr -a a.txt
chattr -i a.txt
lsattr a.txt #查看文件是否被用chattr设置过