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. 3D Gaussian Splatting 查看工具 splatviz

    3D Gaussian Splatting 仓库自带的 SIBR Viewer 运行对显卡有要求, 需要 CUDA_ARCHITECTURE >= 7.x, 在 RTX 4060Ti 上可以运行 ...

  2. RPC实战与核心原理之安全体系

    安全体系:如何建立可靠的安全体系? 回顾 异步化".调用方利用异步化机制实现并行调用多个服务,以缩短整个调用时间:而服务提供方则可以利用异步化把业务逻辑放到自定义线程池里面去执行,以提升单机 ...

  3. 启用 Java AOT 编译打包 Solon 项目(Solon AOT)

    1.Java 的 AOT(Ahead-Of-Time) AOT(Ahead-Of-Time)编译是与 JIT(Just-In-Time)相对的一种编译方式. 在 AOT 模式下,Java 字节码(By ...

  4. Git回滚命令reset|回退代码到某次commit

    摘要:使用Git回退命令reset回退代码到某次commit.   需求背景: 需要回滚提交的代码的场景常常是如下三个: 提交代码到错误Git分支: 提交的代码不需要上线了,而同一分支有需要上线的代码 ...

  5. 浅谈RMI、JRMP、JNDI

    目录 RMI 概念: 为什么要有RMI? RMI的构成: 如何使用RMI 注意!!! JRMP(是RMI的通信协议的名字) 概念 查看通信过程 工具使用 攻击Server 攻击Client JNDI ...

  6. 如何正确理解IGBT参数

    文档下载链接:https://cnblogs-img.oss-cn-hangzhou.aliyuncs.com/docs/正确理解IGBT模块规格书参数.pdf

  7. 2023人形全能赛竞速机器人mega代码

    mega // @Author : Hcm #include <LobotServoController.h> // 舵机板通信 #include <OneButton.h> ...

  8. 题解:CF1045I Palindrome Pairs

    题目链接:link. 首先上思路: 如果一个字符串是回文串,只有当其中最多的只有一个字符的出现次数是奇数. 注意我们可以将每个字符串的字符出现次数的奇偶性用一个 \(26\) 位的二进制表示. 接下来 ...

  9. (各种数组之间的互相转换)int 数组与List互相转换,object数组转换int数组

    Stream流之List.Integer[].int[]相互转化 一.int[ ] 1.1.int[ ] 转 Integer[ ] public static void main(String[] a ...

  10. [abc306h/ex] Balance Scale

    Ex - Balance Scale 考虑只有>和<的情况,相当于给每条边定向,当且仅当成环时不合法,那么方案数就是\(DAG\)的方案数 对于=,就是将两个点合并 然后对于一般的求\(n ...