Linux中s是什么权限

来源:3D模型作者:宋琮安头衔:草根站长
导读:本期聚焦于小伙伴创作的《Linux中s是什么权限》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Linux中s是什么权限》有用,将其分享出去将是对创作者最好的鼓励。

在Linux系统的文件权限体系中,s权限是区别于常规rwx权限的特殊权限,它主要包含setuid、setgid和粘滞位(sticky bit)三种类型,不同类型的s权限作用场景和生效逻辑存在明显差异。

Linux中s是什么权限

s权限的三种类型及作用

1. setuid权限

setuid权限出现在文件所有者的执行权限位上,当普通用户执行带有setuid权限的可执行文件时,进程会以该文件所有者的身份运行,而不是执行用户的身份。最常见的例子是/usr/bin/passwd文件,普通用户可以通过这个命令修改自己的密码,而修改密码需要写入/etc/shadow文件,该文件只有root用户有写入权限,因此passwd命令设置了setuid权限,让普通用户执行时临时获得root权限完成密码修改。

查看setuid权限的文件时,所有者执行位会显示为s,例如:

ls -l /usr/bin/passwd
# 输出类似:-rwsr-xr-x 1 root root 68208 某月 某日 /usr/bin/passwd
# 其中所有者的x位显示为s,说明设置了setuid权限

2. setgid权限

setgid权限可以出现在文件或目录的所属组执行权限位上。当设置在可执行文件上时,执行该文件的进程会以文件所属组的身份运行;当设置在目录上时,在该目录下新建的文件或子目录会自动继承该目录的所属组,而不是创建用户的默认所属组,这个特性常用于多用户协作的共享目录场景。

查看setgid权限的目录时,所属组执行位会显示为s,例如:

ls -ld /tmp/shared_dir
# 输出类似:drwxrwsr-x 2 root dev 4096 某月 某日 /tmp/shared_dir
# 其中所属组的x位显示为s,说明目录设置了setgid权限

3. 粘滞位(sticky bit)

粘滞位出现在目录的其他用户执行权限位上,设置了粘滞位的目录中,只有文件的所有者、目录的所有者或者root用户才能删除或重命名该目录下的文件,其他用户即使对目录有写权限也无法删除他人的文件。最常见的例子是/tmp目录,所有用户都可以在该目录下创建文件,但只能删除自己的文件。

查看设置了粘滞位的目录时,其他用户执行位会显示为t,例如:

ls -ld /tmp
# 输出类似:drwxrwxrwt 10 root root 4096 某月 某日 /tmp
# 其中其他用户的x位显示为t,说明目录设置了粘滞位

s权限的设置与查看

我们可以使用chmod命令来设置s权限,对应的数字权限值分别是:setuid为4,setgid为2,粘滞位为1,设置时将这些数值加到常规权限数值前面即可。

以下是一些常见的设置示例:

# 给文件设置setuid权限,假设原权限为755,设置后权限为4755
chmod 4755 test_exec

# 给目录设置setgid权限,假设原权限为755,设置后权限为2755
chmod 2755 shared_dir

# 给目录设置粘滞位,假设原权限为777,设置后权限为1777
chmod 1777 /tmp/new_tmp

# 也可以使用符号法设置,给文件添加setuid权限
chmod u+s test_exec

# 给目录添加setgid权限
chmod g+s shared_dir

# 给目录添加粘滞位
chmod o+t new_tmp

查看权限时,使用ls -l命令即可,s权限会显示在对应的执行权限位上:如果是小写s,说明对应的执行权限位原本就有x权限;如果是大写S,说明对应的执行权限位原本没有x权限,此时s权限不会生效。

s权限使用的安全注意事项

  • setuid权限风险较高,不要随意给普通可执行文件设置setuid权限,尤其是shell脚本,很容易造成权限提升漏洞。
  • 定期检查系统中设置了setuid和setgid权限的文件,排查是否存在不必要的特殊权限文件,可以使用以下命令查找:
# 查找系统中所有设置了setuid权限的文件
find / -perm -4000 -type f 2>/dev/null

# 查找系统中所有设置了setgid权限的文件
find / -perm -2000 -type f 2>/dev/null
  • 粘滞位仅对目录有效,不要尝试在文件上设置粘滞位,不会起到预期作用。
  • 如果不需要特殊权限,及时使用chmod u-s 文件名chmod g-s 目录名chmod o-t 目录名命令移除对应的s权限。

Linuxs权限setuidsetgidsticky_bit修改时间:2026-06-26 03:48:29

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。