1.一般权限
首先了解三种权限:对于文件r表示能够读取文件,w表示能够写入删除编辑文件,x表示文件能够执行脚本
对于目录来说所代表权限有所差距,r表示可以于阅读目录的文件,w表示可以在目录里创建文件删除文件编辑文件,x则表示可以打开目录,如果没有x位就无法打开目录
字母表示法 | r | w | x |
---|---|---|---|
数字表示法 | 4 | 2 | 1 |
对于目录的对应权限 | 阅读目录内内容 | 在目录内创建编辑删除重命名文件 | 可以打开改目录(没该x位无法打开目录) |
对于文件的对应权限 | 查看文件内容 | 编辑删除重名文件 | 可以执行脚本 |
ls -l 1.txt 查看文件详细
示例:-rw-r--r-- 1 root root 0 10月 25 23:00 1.txt
第一位符号-表示这是一个文件如果是d表示这是目录
二到四符号rw-表示这是属主(U)的权限
五到七符号r--表示这是属组(G)的权限
八到十符号r--表示这是其他(O)的权限
添加修改权限
数字法(常用):
chmod 777 1.txt 给文件的属主权限为读写执行权限 属组权限为读写执行权限 其他用户权限为读写执行权限
chmod 655 1.txt 给文件的属主权限为读,写,权限 属组权限为读,执行权限 其他用户权限为读,执行权限
chmod 750 1.txt U:读写执行 G:读执行 O:无
字母法:
chmod u+rwx 1.txt 给文件的属主权限为读写执行
chmod g+rwx 1.txt 给文件的属组权限为读写执行
chmod o+rwx 1.txt 给文件的其他权限为读写执行
chmod u+rwx:o+rwx:g+rwx 1.txt 给文件的属主权限为读写执行权限 属组权限为读写执行权限 其他用户权限为读写执行权限
2.特殊权限
字母表示 | s | s | t |
---|---|---|---|
数字表示 | 4 | 2 | 1 |
(1).SUID
SUID设置在文件的所有者上(所属主),设置了该标志位其他用户就临时拥有该文件所有者的权限(改权限只对可执行的二进制程序设置有效,所以一般设置在命令上)
(2).SGID
SGID设置在文件的所属组上,文件(只对二进制程序有效)设置了该标志位其他用户就临时拥有该文件所属组的权限。如果在目录上设置了该标志位,那么任何用户在该目录下创建的文件的所属组自动归属到目录的所属组
(3).SBIT
SBIT可以称作"保护位",如果在目录上设置改标志位,那么每个用户不能删除其他人的文件,只能删除自己的,一般在共享文件中可以设置该权限,有效防止其他用户删除别人的文件,如linux中 /tmp 目录是文件共享目录,已经提前设置了该标志位
对于特殊权限一般用字母方法设置
对文件1.txt设置SUID权限
chmod u+s 1.txt
取消SUID权限
chmod u-s 1.txt
对文件1.txt设置SGID权限
chmod g+s 1.txt
取消SGID权限
chmod g-s 1.txt
对文件1.txt设置SBIT权限
chmod o+t 1.txt
取消SBIT权限
chmod o-t 1.txt
对文件1.txt设置SUID,SGID,SBIT权限
chmod u+s,g+s,o+t 1.txt
3.扩展(隐藏)权限
除了一般权限特殊权限外还有一中隐藏权限。
常用的隐藏属性:
隐藏属性 | 含义 |
---|---|
i | 无法对文件进行修改,对目录设置了话,目录内无法新建删除文件,只能对子文件操作 |
a | 只能追加内容,无法删除覆盖原来内容,常用于日志文件防止黑客删除日志 |
lsattr [filename] 查看文件的隐藏属性
chattr +a 设置文件 a 属性
chattr -a 去掉文件 a 属性
chattr +i 设置文件 i 属性
chattr -i 去掉文件 i 属性
4.文件访问控制列表ACL
不管是前面文件的普通权限和特殊权限都是正对群里设计的,只要修改权限其他用户都可以享受,那么如果要对单个用户设置权限怎么办呢?那就需要使用文件访问控制列表acl
如果给文件设置了ACL那么子文件将会继承目录的权限,如果给文件设置了ACL那么将不再继承目录的权限了
getfacl [filename] 查看文件的ACL权限
setfacl -m u:admin:rwx [filename] 给文件添加admin用户的rwx权限
setfacl -m g:tgroup:rw- [filename] 给文件添加用户组tgroup的rw权限
setfacl -x u:admin: [filename] 去除单个用户或者用户组的权限
setfacl -b [filename] 删除文件所有的ACL权限
getfacl 1.txt > 1.txt_acl.txt ; setfacl -b 1.txt ; setfacl -M 1.txt_acl.txt -m 1.txt
先将1.txt的acl保存到文件中,然后将1.txt文件的acl权限全部清除,然后通过参数M恢复原来的权限