- 基本权限
-
文件的基本权限linux文件的类型 - :普通文件 d : 目录文件 directory l : 链接文件 link b : 块设备文件 block c : 字符设备文件 character p : 管道文件 s : socket文件
读(r) 、写(w)、执行(x)
权限项 | 字符表示 | 数字表示 |
---|---|---|
读 | r | 4 |
写 | w | 2 |
执行 | x | 1 |
[root@mail ~]# ls -ld docker
drwxr-xr-x. 2 root root 37 Oct 10 11:49 docker
//表示docker是一个目录文件,文件的所有者和所属组均是root,文件由2个硬链接,
文件的大小是37字节,最近一次的修改时间是10月10日 11:49
-
附加权限
*程序、命令在运行期间是有身份的
SUID 以属主的身份运行文件附加在属主的x位上 属主的标识是s 适应于可执行文件 传递所有者的身份 原先没有x执行权限,设置SUID权限后,x为将变成大写的S # ls -l file -rw-r--r--. 1 root root 14 Oct 10 11:59 file # chmod u+s file # ls -l file -rw**S**r--r--. 1 root root 14 Oct 10 11:59 file 原先有x执行权限,设置SUID权限后,x为将变成小写的s # ls -l file -rwxr--r--. 1 root root 14 Oct 10 11:59 file # chmod u+s file # ls -l file -rw**s**r--r--. 1 root root 14 Oct 10 11:59 file
SGID 目录中的新文件继承目录的属组
附加在属组的x位上
属主的标识是s
使目录下新增的文档与父目录由相同的属组
传递属组的身份
# mkdir /root/test
# ls -ld /root/test
drwxr-xr-x. 2 root root 6 Oct 10 13:13 test
# chown :users /root/test
# chmod g+s /root/test
# mkdir /root/test/rsc
# ls -l /root/test/rsc
drwxr-sr-x. 2 root users 6 Oct 10 13:17 test/rsc
SBIT (sticky bit)确保用户只能删除自己的文件而不能删除其他用户的文件,当对某个目录设置了SBIT粘滞位权限后,只有该目录的所有者能对其进行删除操作了
附加在其他人的x位上
属主的标识是t
适合开放写权限的目录,可阻止用户滥用w写权限
# ls -ld /tmp/test
# drwxrwsrwt. 3 root users 17 Oct 10 13:17 test
# ls -l test/
total 8
drwxrwsr-x. 2 boss users 6 Oct 10 14:25 boss
-rw-rw-r--. 1 lisi users 14 Oct 10 14:24 lisi.txt
# su - lisi
# cd /tmp/test
# rm -rf boss
rm: cannot remove ‘boss/’: Operation not permitted
-
隐藏权限
如果碰到权限充足但无法删除某个文件的情况,或者仅能在日志文件中追加而不能修改或删除某个文件的情况,该文件可能有隐藏权限
设置隐藏权限
格式: chattr [参数] 文件
参数 | 作用 |
---|---|
i | 无法对文件进行修改,若目录设置了该参数,则仅能修改其中的子文件内容而不能新建和删除文件 |
a | 仅能补充(追加)内容,无法覆盖或删除内容 Append only |
S | 文件在变更后直接同步到硬盘 |
s | 彻底从硬盘中删除,不可恢复 |
A | 不再修改这个文件或目录的最后修改时间 |
显示文件的隐藏权限
格式: lschattr [参数] 文件
-文件访问控制列表(ACL)
前面的基本权限、附加权限、隐藏权限均有一个特性:权限是针对某一类用户设置的
文件的访问控制列表可以针对单一用户或用户组、单一文件或目录来进行文件的读写/执行权限的控制
设置文件的访问控制列表
格式: setfacl [参数] 文件
# setfacl [-R] -m u:用户名:权限项 文件名
# setfacl [-R] -m u:用户名:权限项 文件名
# setfacl [-R] -x u:用户名 文档 //清空指定的acl策略
# setfacl [-R] -b 文档 //清空所有的acl次策略
怎样查看文件上的acl策略呢?ls是看不到acl表的信息的,不过,可以看到文件权限的最后一个(.)变成了(+),这就意味着该文件已经设置了ACL策略
# ls -ld /root
dr-xrwx---**+** 8 root root 4096 Oct 10 14:22 /root
查看acl策略
格式:getfacl 文件
参考文献
《Linux就该这么学》