除rwx(读写执行)三种文件权限外,还有哪些权限呢?
一.SUID
1.是什么?
“以文件所有者的身份运行程序”。主要作用于可执行文件。
当一个可执行文件设置了 SUID 位时,任何用户在执行该文件时,其有效用户 ID (Effective UID) 会临时变成该文件所有者的用户 ID,而不是执行者自己的用户 ID。
2.作用:
允许普通用户以更高的权限(通常是 root 或其他特定用户)执行某些特定任务,而无需知道该用户的密码或拥有其完整权限。
位置:属主权限的第三位
示例:
为什么普通用户可以修改自己的密码?
原因就在于/usr/bin/passwd
[root@node ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 4月 1 2020 /usr/bin/passwd
---------------------------------------------------------------
[root@node ~]# ll /usr/bin/cd
-rwxr-xr-x. 1 root root 26 11月 25 2021 /usr/bin/cd
拥有s权限的普通用户就可以喜提root身份体验了(忍法:灵魂转移术)
特别注意:
1.如果设置的二进制文件没有执行权限,则显示为S(大写);
2.suid仅对二进制可执行程序有效,其他文件或目录无效;
3.suid是危险分子,不建议对vim,rm
等设置
二:SGID
取决于作用于文件还是目录
位置:(属组权限位第三位)有执行权限显示 s
,无执行权限显示 S
。
1.作用于可执行文件
允许用户以特定组的身份运行程序,访问该组有权访问的资源。
作用:
任何用户在执行该文件时,其有效组 ID (Effective GID) 会临时变成该文件所属组的组 ID。
2.作用于目录(常用)
当一个目录设置了 SGID 位时,在该目录下新创建的文件或子目录,其所属组会自动继承该父目录的所属组
作用:(协作项目)
确保项目目录下的所有成员(属于同一个组)创建的文件都能被该组的其他成员访问,解决了默认情况下文件属于创建者个人组的问题。
示例:
两个用户都拥有同一附加组oi,并且共同拥有demo目录的开发权,现在需要:
互相之间能修改彼此的文件,且其他人不能查阅该目录
如何实现?
1.chgrp oi ./demo
---->更改属组
2.chmod 700 ./demo
---->先保证属组有可执行权限
3.chmod 2700 ./demo
三.SBIT
1.是什么?
只有文件的所有者、目录的所有者或 root 用户才能删除或重命名该目录下的文件。即使其他用户对该目录有 w
(写) 和 x
(执行) 权限,也不能删除不属于自己的文件。(主要作用于目录)
位置:属其他人权限第三位,有执行权限显示 t
,无执行权限显示 T
。
2.有什么用?
防止用户在公共可写目录中删除或重命名其他用户的文件。例:/tmp
备注:粘滞位目录的属主以及root权限可以删除目录中的内容,其他用户无权删除
四.文件特殊属性
1.有什么用?
---->如果您有以下需求,那这玩意大大的有用了
1)文件不允许被修改,删除,移动(包括root);
2)文件仅允许追加数据,不允许被修改,删除,移动
2.怎么配置?
命令格式:chattr [+-] [选项参数] [目录](+:启动选项 -:取消选项)
选项参数:
a:允许追加;
i:不允许操作(上锁)
示例:
chattr +i /etc/passwd
:不允许操作(移动/删除/修改)
---->若想取消,+变-就可
chattr +a /var/log
:仅允许追加,不允许操作(移动/删除/修改)