当s权限位于所属组的x权限位时,就被称为SetGID,既可以给二进制可执行程序设置,也可以给目录设置。
在设置了SGID权限的目录下建立文件时,新建文件的所属组会继承上一级目录的权限。
chmod g+s directo-ry
只作用于目录。
目录下创建的文件只有root、文件创建者、目录所有者才能删除。
chmod o+t directory
Linux是通过umask默认权限来给所有新建的文件和目录赋予初始权限的。
[root@localhost tby]# umask
0022
root用户默认是0022(----w--w-),普通用户默认是0002(-------w-)(第一个数字代表特殊权限,SUID、SGID、SBIT,后三位才是一般权限) 。
文件或目录初始权限=文件或目录的最大默认权限-umask权限
文件最大默认权限是666,也就是rw-rw-rw-,使用文件的任何用户都没有执行权限(x);
(-rw-rw-rw-)-(-----w--w-)=(-rw-r--r--),即新建文件初始权限
[root@localhost mytest]# ll
总用量 0
-rw-r--r--. 1 root root 0 4月 12 18:53 ff
目录最大默认权限是777,rwxrwxrwx
(-rwxrwxrwx)-(-----w--w-)=(-rwxr-xr-x)
[root@localhost mytest]# mkdir Today
[root@localhost mytest]# ll
drwxr-xr-x. 2 root root 6 4月 12 19:00 Today
当然,umask权限也不是固定的,可以自己根据需要进行修改
umask +权限数值
不过,修改的umask知识临时有效,一旦重启或登录系统,就会失效。
chattr,用来修改文件或者目录的隐藏属性,只有root用户可以使用。
chattr [+-=] [属性] 文件或目录名,+表示添加属性,-表示移除属性,=表示设定属性
i:不允许对文件删除、改名、添加和修改数据,对目录只能修改文件中数据,不允许建立和删除文件;
a:只能在文件中增加数据,不能删除和修改数据,对目录只允许在目录中建立和修改文件,不允许删除文件;
u:删除目录或文件,其内容会被保存,后期能修复,防止意外删除文件;
s:删除文件或目录时,会被彻底删除,不可恢复
[root@localhost mytest]# chattr +i ff
[root@localhost mytest]# rm -f ff
rm: 无法删除"ff": 不允许的操作
[root@localhost mytest]# echo 5201314>>ff
bash: ff: 权限不够
设置i属性,即便是root用户也不能删除文件和修改数据
[root@localhost mytest]# chattr +i Today/
[root@localhost mytest]# cd Today/
[root@localhost Today]# touch too2
touch: 无法创建"too2": 权限不够
[root@localhost Today]# vim too
[root@localhost Today]# cat too
dsawdsacas
[root@localhost Today]# rm -rf too
rm: 无法删除"too": 权限不够
[root@localhost Today]# cd ..
[root@localhost mytest]# chattr -i Today/
设置了i属性,root用户也不能在目录内部新建或删除文件,可以修改文件内容。
使用chattr设置文件或目录隐藏属性后,使用lsattr查看
lsattr [选项] 文件或目录名
-a:后面不带文件或目录名,表示显示所有目录和文件;
-d:若目标是目录,指挥列出目录本身隐藏属性,不会列出子目录和文件隐藏属性;
-R:作用于目录,显示目录及其子目录和文件隐藏属性
[root@localhost mytest]# chattr +ai Today/
[root@localhost mytest]# lsattr -a Today/
----ia---------- Today/.
---------------- Today/..
---------------- Today/too
[root@localhost mytest]# lsattr -d Today/
----ia---------- Today/
[root@localhost mytest]# lsattr -R Today/
----ia---------- Today/too