以下是CentOS 7系统中特殊权限(SUID/SGID/Sticky Bit)及权限掩码(umask)的详细用法和示例,结合功能说明与操作实践整理:
一、特殊权限
1. SUID (Set User ID)
- 功能:文件执行时临时拥有文件所有者的权限(仅对二进制程序有效)。
- 设置方法:
chmod u+s 文件名 # 符号模式
chmod 4755 文件名 # 数字模式(4表示SUID)- 示例:
chmod u+s secret.key # 普通用户执行secret.key时可修改/etc/shadow(原权限:-rwsr-xr-x)2. SGID (Set Group ID)
- 功能:
对文件:执行时继承文件所属组的权限。
对目录:新创建的子文件/目录自动继承目录的所属组。
- 设置方法:
chmod g+s 目录名 # 符号模式
chmod 2770 目录名 # 数字模式(2表示SGID)- 示例:
mkdir shared_dir
chgrp dev_team shared_dir
chmod g+s shared_dir # 新文件自动归属dev_team组3. Sticky Bit (粘滞位)
- 功能:目录内文件仅所有者、root可删除(常用于公共目录如/tmp)。
- 设置方法:
chmod o+t 目录名 # 符号模式
chmod 1777 目录名 # 数字模式(1表示Sticky Bit)- 示例:
chmod o+t /public_upload # 用户只能删除自己上传的文件特殊权限数字表示对比表
权限类型 | 符号模式 | 数字前缀 | 完整示例(目录) |
SUID | u+s | 4 | 4755 |
SGID | g+s | 2 | 2770 |
Sticky | o+t | 1 | 1777 |
二、权限掩码(umask)
1. 作用与原理
- 功能:控制新创建文件/目录的默认权限,通过“屏蔽”特定权限位实现。
- 权限计算:
文件:666 - umask(自动去掉执行权限)
目录:777 - umask
- 常见值:
umask 022 → 文件权限 644(rw-r--r--),目录权限 755(rwxr-xr-x)。
umask 077 → 文件权限 600(rw-------),目录权限 700(rwx------)。
2. 设置方法
- 临时生效:
umask 002 # 新文件权限664,目录权限775- 永久生效:
echo "umask 027" >> /etc/profile # 系统全局设置
echo "umask 002" >> ~/.bashrc # 用户级设置3. 验证示例
umask 077
touch file1
mkdir dir1
ls -l
# 输出:
# -rw-------. 1 user user 0 file1 # 文件权限600
# drwx------. 2 user user 6 dir1 # 目录权限700三、扩展:ACL(访问控制列表)
功能:突破UGO权限限制,为特定用户/组单独授权。
- 设置示例:
setfacl -m u:job:rwx /project # 用户john拥有/project的rwx权限
setfacl -m g:dev:r-x /project # 组dev拥有r-x权限
getfacl /project # 查看ACL规则四、安全实践建议
- SUID/SGID慎用:避免普通程序设置SUID,减少提权风险。
- umask安全配置:
- 共享环境:umask 002(组协作)。
- 敏感数据:umask 077(禁止其他用户访问)。
- 目录权限:
- 执行权限(x)对目录必不可少,否则无法浏览内容。
- ACL替代方案:复杂权限需求优先使用ACL而非777开放权限。
总结:特殊权限(SUID/SGID/Sticky)解决特定场景的权限继承与限制问题,umask则通过掩码机制预设安全基线。ACL进一步扩展了精细化控制能力。生产环境中需结合最小权限原则,避免过度开放(如chmod 777)。
