Linux——特殊权限管理
Linux中的特殊权限(setuid、setgid、sticky bit)扩展了基本的文件权限机制,提供了更精细的控制。以下是详细说明:
1. SetUID(SUID)
-
作用:允许用户以文件所有者的权限执行文件。
-
例如:
/usr/bin/passwd
设置了SUID,普通用户执行时临时拥有root权限以修改/etc/shadow
。
-
-
设置方法:
chmod u+s file # 符号模式 chmod 4755 file # 数字模式(4表示SUID)
-
权限显示:
-
若用户有执行权限:
-rwsr-xr-x
-
若无执行权限:
-rwSr--r--
(大写S
表示异常)
-
2. SetGID(SGID)
-
作用:
-
文件:以文件所属组的权限执行。
-
目录:新创建的文件/目录继承父目录的组。
-
例如:共享目录设置SGID后,所有新建文件自动归属同一组。
-
-
-
设置方法:
chmod g+s dir # 符号模式 chmod 2775 dir # 数字模式(2表示SGID)
-
权限显示:
-
组执行位显示为
s
(如drwxrwsr-x
)。
-
3. Sticky Bit(粘滞位)
-
作用:用于目录,用户仅能删除自己的文件(即使有写权限)。
-
典型应用:
/tmp
目录(权限drwxrwxrwt
)。
-
-
设置方法:
chmod o+t dir # 符号模式 chmod 1777 dir # 数字模式(1表示粘滞位)
-
权限显示:
-
其他用户执行位显示为
t
(如drwxrwxrwt
)。
-
查看与查找特殊权限
-
查看权限:
ls -l file # 观察权限位的s/S或t/T
-
查找特殊权限文件:
find / -perm -4000 # 查找SUID文件 find / -perm -2000 # 查找SGID文件 find / -perm -1000 # 查找粘滞位目录
安全注意事项
-
SUID/SGID风险:避免随意设置,尤其是对root所属文件。定期检查:
find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;
-
脚本与SUID:脚本的SUID可能被忽略,建议通过sudo替代。
示例场景
-
SUID:赋予脚本临时root权限(需谨慎):
sudo chmod u+s /usr/local/bin/custom_script
-
SGID目录:团队协作目录:
mkdir /shared chmod g+s /shared # 新建文件自动继承组
-
粘滞位:公共临时目录:
chmod +t /tmp # 用户只能删除自己的文件
通过合理使用特殊权限,可以增强系统功能与安全性,但需严格遵循最小权限原则。