ACL 主要提供UGO的rwx权限之外的具体权限
ACL权限
使用getfacl命令查看ACL权限,此时显示的内容与先前使用ll命令查看到的内容相差无几
[root@localhost home]# touch test.txt
[root@localhost home]# ll test.txt //查看文件权限
-rw-r--r--. 1 root root 0 4月 7 23:03 test.txt
[root@localhost home]# getfacl test.txt
file: test.txt
owner: root
group: root
user::rw-
group::r--
other::r--
为文件设置ACL权限 -m 设置文件或目录权限
使用setfacl命令可以设置ACL权限,对一个文件或者目录进行更精确的权限设置
[root@localhost home]# setfacl -m u:u04:rw test.txt
[root@localhost home]# getfacl test.txt
file: test.txt
owner: root
group: root
user::rw-
user:u04:rw-
group::r--
mask::rw-
other::r--
+表示该文件有ACL权限
[root@localhost home]# ll test.txt
-rw-rw-r--+ 1 root root 6 4月 7 23:09 test.txt
-rw-rw-r--+ 1 root root 6 4月 7 23:09 test.txt
-代表普通文件
d代表普通目录
后九位代表rwx权限
第一个root代表属主
第二个root代表属组
字节为6个
添加-x 删除用户对文件的权限
[root@localhost home]# setfacl -x u:alice test.txt
[root@localhost home]# getfacl test.txt
file: test.txt
owner: root
group: root
user::rw-
user:u04:rw-
user:tom:rwx
group::r--
mask::rwx
other::r--
添加-b 删除所有的ACL扩展的权限
[root@localhost home]# setfacl -b test.txt
[root@localhost home]# getfacl test.txt
file: test.txt
owner: root
group: root
user::rw-
group::r--
other::r--
最大有效权限 mask
系统赋予的ACL权限需要与mask的权限相与,相与之后的权限才是用户的真正权限
[root@localhost home]# setfacl -m mask::rx file1
[root@localhost home]# getfacl file1
file: file1
owner: root
group: root
user::rw-
user:tom:rw- #effective:r-- //effective有效的
user:alice:r--
group::r--
group:edu01:rwx #effective:r-x
mask::r-x
other::r--
由上述实例可知,mask影响设置的acl权限,并不影响所有用户
default:继承
使用default命令会可以继承上一个目录的权限
[alice@localhost home]$ setfacl -m d:u:alice:rwx dir01
SUID权限:任何用户在执行该文件时,其身份是该文件的属主
第一行的第4个字符是“s", 表示特殊权限SUID
[root@localhost ~]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 27856 4月 1 2020 /usr/bin/passwd
SGID权限:在一个程序上添加SGID,用户执行过程中会获得该程序用户组的权限
在一个目录上添加SGID,该目录创建的新文件会继承属组
Sticky权限:添加Sticky后,当用户具有w,x权限,再该目录下建立的文件或目录,仅有自己和root才有权删除
设置sticky权限:
[root@localhost ~]# chmod o+t /home/diree
[root@localhost ~]# ll -d /home/diree
drwxrwxrwt. 2 root root 6 4月 9 17:30 /home/diree
查看临时文件目录权限
[root@localhost ~]# ll -d /tmp
drwxrwxrwt. 86 root root 8192 4月 9 18:04 /tmp
为了区分目录/文件是否含有x权限,系统会以特殊的权限大小写方式给予提示
当符号为大写T时,表示不含有x权限
当符号为小写t时,表示含有x权限
文件属性chattr
Linux会使用chattr命令改变文件的隐藏属性,但其仅对 EXT2/EXT3/EXT4文件系统完整有效,其他文件系统可能仅支持部分隐藏属性或者根本不支持隐藏属性
创建三个文件 file01 file02 file03
[root@localhost ~]# touch file01 file02 file03
[root@localhost ~]# ls
anaconda-ks.cfg file01 file02 file03 file.txt initial-setup-ks.cfg
查看文件的隐藏属性
[root@localhost ~]# lsattr file01 file02 file03
---------------- file01
---------------- file02
---------------- file03
使用man工具查看chattr命令的使用方式
[root@localhost ~]# man chattr
为文件file01加入a属性
[root@localhost ~]# chattr +a file01
[root@localhost ~]# lsattr file01 file02
-----a---------- file01
---------------- file02
加入a属性后,不能使用vim编辑器编辑文件,只能使用echo/cat的多行编辑对文件进行追加,不能覆盖,一般用户日志文件
删除隐藏属性a
[root@localhost ~]# chattr -a file01
[root@localhost ~]# lsattr file01
---------------- file01
为文件加入隐藏属性i
[root@localhost ~]# chattr +i file02
[root@localhost ~]# vim file02
[root@localhost ~]# rm -r file02
rm:是否删除普通空文件 "file02"?y
rm: 无法删除"file02": 不允许的操作
[root@localhost ~]# echo 'sa' >> file02
bash: file02: 权限不够
i属性,使文件不接受任何形式的修改,只能读取
进程掩码umask
当用户创建新的目录/文件时,系统会赋予目录/文件一个默认的权限
umask的作用就是制定权限的默认值
新建的目录如果全局可读写执行,基本权限应该是777,但是实际只有755
新建的文件基本权限为644
因为umask要强制去掉group和other写的权限,同时系统默认不赋予执行权限
umask值表示要减掉的权限
[root@localhost ~]# umask 0777
[root@localhost ~]# mkdir dir002
[root@localhost ~]# touch file002
[root@localhost ~]# ll -d dir002
d---------. 2 root root 6 4月 9 19:01 dir002
[root@localhost ~]# ll file002
----------. 1 root root 0 4月 9 19:01 file002
[root@localhost ~]#