Linux 文件特殊权限位(SUID、SGID、Sticky Bit)是对基础 rwx 权限的扩展,用于解决特定场景的权限控制需求。以下是详细解析及典型应用场景举例:


⚙️ 一、特殊权限详解

1. ​​SUID(Set User ID)​

  • ​作用对象​​:可执行文件(二进制程序或脚本)。

  • ​关键行为​​:用户执行文件时,​​临时获得文件所有者的权限​​(而非执行者自身权限)。

  • ​设置方法​​:

    • 符号模式:chmod u+s file
    • 数字模式:chmod 4xxx file(如 4755)。
  • ​显示规则​​:

    • 所有者的执行位显示为 s(若原无 x 权限则显示大写 S)。

2. ​​SGID(Set Group ID)​

  • ​作用对象​​:

    • ​文件​​:执行时临时获得文件所属组权限。
    • ​目录​​:新创建的文件/目录​​自动继承目录的所属组​​。
  • ​设置方法​​:

    • 符号模式:chmod g+s dir
    • 数字模式:chmod 2xxx dir(如 2770)。
  • ​显示规则​​:

    • 所属组的执行位显示为 s(若原无 x 权限则显示大写 S)。

3. ​​Sticky Bit(粘滞位)​

  • ​作用对象​​:​​目录​​。

  • ​关键行为​​:目录内的文件​​仅所有者、root 或目录所有者可删除/重命名​​(即使其他用户有写权限)。

  • ​设置方法​​:

    • 符号模式:chmod +t dir
    • 数字模式:chmod 1xxx dir(如 1777)。
  • ​显示规则​​:

    • 其他人的执行位显示为 t(若原无 x 权限则显示大写 T)。

️ 二、应用场景举例

1. ​​SUID 场景:提权执行特权操作​

  • ​典型案例​​:/usr/bin/passwd

    • 普通用户需修改 /etc/shadow(仅 root 可写),通过 SUID 让 passwd 命令以 root 权限运行:
      chmod u+s /usr/bin/passwd  # 权限显示为 -rwsr-xr-x 。
    • ​安全风险​​:避免对 Shell 脚本或高危命令(如 chmodbash)设置 SUID。

2. ​​SGID 场景:协作目录的组权限继承​

  • ​典型案例​​:团队共享目录 /project

    • 设置 SGID 确保新文件自动归属项目组,方便成员协作:
      mkdir /project
      chgrp developers /project # 目录属组设为开发组
      chmod g+s /project # 权限显示为 drwxrwsr-x 。
    • ​效果​​:用户 Alice/project 创建文件时,文件属组自动为 developers,而非 Alice 的主组。

3. ​​Sticky Bit 场景:安全公共目录​

  • ​典型案例​​:系统临时目录 /tmp

    • 所有用户可创建文件,但仅能删除自己的文件:
      chmod +t /tmp  # 权限显示为 drwxrwxrwt 。
    • ​适用场景​​:
      • 上传目录(如 /var/www/uploads),防止用户误删他人文件。
      • 共享日志目录,确保进程仅管理自身日志。

三、安全实践与注意事项

  1. ​最小权限原则​​:

    • 避免滥用 SUID/SGID,仅限必要程序(如 passwdsudo)。
    • 禁用危险命令的 SUID(如 chmod u-s /bin/bash)。
  2. ​定期审计​​:

    # 查找 SUID/SGID 文件
    find / -perm -4000 -type f 2>/dev/null # SUID
    find / -perm -2000 -type f 2>/dev/null # SGID
    # 查找 Sticky Bit 目录
    find / -perm -1000 -type d 2>/dev/null 。
  3. ​结合 ACL 增强控制​​:

    • 若需为多用户/组精细授权,使用 ACL 替代 SGID:
      setfacl -d -m g:developers:rwx /project  # 目录中新文件继承组权限。

四、总结对比表

​权限​ ​作用对象​ ​数字值​ ​符号表示​ ​关键行为​ ​典型应用​
​SUID​ 可执行文件 4xxx u+s 以文件所有者权限运行 passwd 命令
​SGID​ 文件/目录 2xxx g+s 文件:以所属组运行
目录:新文件继承组
共享开发目录
​Sticky Bit​ 目录 1xxx +t 仅所有者/root 可删除文件 /tmp 目录

注:xxx 为基础权限的八进制值(如 755)。

合理运用特殊权限能在保障安全的前提下提升系统灵活性,但需严格遵循最小权限原则并定期审计 。

Linux 文件特殊权限位(SUID、SGID、Sticky Bit)的应用的更多相关文章

  1. linux文件权限位SUID,SGID,sticky的设置理解

    SUID含义:文件的该位被设置为1,在该文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来           执行这个文件,他都有文件所有者的特权,如果所有者是root的话,那么执行人就有超 ...

  2. linux系统特殊权限位 suid、sgid、sticky

    linux系统特殊权限位 suid.sgid.stickysuid 使任意用户获得用文件属主相同的权限,sgid使用户获得与文件属组相同的权限(通过sgid获得的权限等同于同一用户组的权限) 表示方法 ...

  3. 再次学习linux文件特殊权限:SUID、SGID、Sticy Bit

    以前对于文件管理的认识只限于UGO的管理,对于特殊权限的学习还是一知半解.重新学习了一遍,我自己理解的东东记录一下. 首先,列一下SUID.SGID.Sticy Bit所代表的权限数值.就好像rwx分 ...

  4. Linux之特殊权限(SUID/SGID/SBIT)

    特殊权限的介绍 Set UID 当s这个标志出现在文件所有者的x权限上时,如/usr/bin/passwd这个文件的权限状态:“-rwsr-xr-x.”,此时就被称为Set UID,简称为SUID.那 ...

  5. Linux特殊权限位suid、sgid深度详细及实践

    特殊权限位基本说明: Linux系统基本权限位为9位权限,但还有额外3位权限位,共12位权限: suid    s(有x)     S    4   用户对应的权限位(用户对应的3位上) sgid  ...

  6. Linux 文件特殊权限详解[suid/sgid/t]

    setuid(suid): 针对命令和二进制程序的,当普通用户执行某个(passwd)命令的时候,可以拥有这个命令对应用户的权限, 即让普通用户可以以root用户的角色执行程序或命令. setgid( ...

  7. linux特殊权限位suid

    特殊权限位基本说明(了解): linux系统基本权限位为9位权限,但还有额外3位权限位,共12位权限: suid       s(x)     S     4     用户对应的权限位(用户对应的3位 ...

  8. 文件的特殊权限(SUID,SGID,SBIT)

    文件的一般权限:r w x  对应 421  文件的特殊权限:SUID SGID SBIT对应 421  文件的隐藏权限:chattr设置隐藏权限,lsattr查看文件的隐藏权限. 文件访问控制列表: ...

  9. linux基础2-cd、mkdir、touch、umask、chattr、lsattr、SUID/SGID/Sticky Bit

    一 cd : . 代表当前目录 .. 代表上一层目录 - 代表前一个工作目录 ~ 代表[目前用户身份]所在的自家目录 与cd效果相同 ~account 代表 account 这个用户的自家家目录 二m ...

  10. SUID,SGID,Sticky Bit详解(转)

    SUID属性 passwd命令可以用于更改用户的密码,一般用户可以使用这个命令修改自己的密码.但是保存用户密码的/etc/shadow文件的权限是400,也就是说只有文件的所有者root用户可以写入, ...

随机推荐

  1. WPF placeHolder效果的样式设定

    <UserControl x:Class="wpfTestStudio.textPlaceHolderDemo" xmlns="http://schemas.mic ...

  2. Plotting and visualization through matplotlib and pandas

    Plotting and visualization through matplotlib and pandas %matplotlib notebook import matplotlib.pypl ...

  3. codeup之字符串比较

    Description 比较两个字符串s1和s2的大小,如果s1>s2,则输出一个正数:若s1=s2,则输出0:若s1<s2,则输出一个负数. 要求:不用strcpy函数:两个字符串用ge ...

  4. IDEA主题下载仓库地址

    拿去,不多BB https://plugins.jetbrains.com/search?tags=Theme

  5. 企业AI应用模式解析:从本地部署到混合架构

    在人工智能快速发展的今天,企业如何选择合适的大模型应用方式成为了一个关键问题.本文将详细介绍六种主流的企业AI应用模式,帮助您根据自身需求做出最优选择. 1. 本地部署(On-Premise Depl ...

  6. 实战干货|Spark 在袋鼠云数栈的深度探索与实践

    Spark 是一个快速.通用.可扩展的大数据计算引擎,具有高性能.易用.容错.可以与 Hadoop 生态无缝集成.社区活跃度高等优点.在实际使用中,具有广泛的应用场景: · 数据清洗和预处理:在大数据 ...

  7. 基于 C# 编写的轻量级工控网关和 SCADA 组态软件

    前言 今天大姚给大家分享一个基于 C# 编写.开源(LGPL-3.0 license)的轻量级工控网关和 SCADA 组态软件:SharpSCADA. 项目介绍 SharpSCADA是一个基于 C# ...

  8. CentOS云服务器WordPress搭建(BT.CN)

    该随笔为大学时期的建站记录,图片等等,由于域名到期,七牛云回收资源,图床失效等等,已无法考究,语雀也没法恢复文档,仅作为参考用. 此教程适用于国内的建站,英文外贸建站请移步购买位于国外的服务器[外贸建 ...

  9. C#  关于MD5CryptoServiceProvider 过期问题解决

    MD5 x = new System.Security.Cryptography.MD5CryptoServiceProvider();使用 MD5 md5 = MD5.Create()  

  10. MySQL 09 普通索引和唯一索引,应该怎么选择?

    唯一索引:字段值不能重复. 普通索引:字段值可以重复. 假设数据如下图,且字段k上的值都不重复: 接下来,从两种索引对查询语句和更新语句的性能影响来分析. 查询过程 假设查询语句为select id ...