Linux文件的特殊权限SUID、SGID、Sticky

news/2025/1/24 5:47:15/

文章目录

  • 前言
      • 1. SUID(Set User ID)
        • **1. 描述与定义**
        • **2. 格式**
        • **3. 设置与取消**
        • **4. 案例**
        • **5. 说明**
        • **6. 注意事项**
      • 2. SGID(Set Group ID)
        • **1. 描述与定义**
        • **2. 格式**
        • **3. 设置与取消**
        • **4. 案例**
          • **对文件的作用**
          • **对目录的作用**
        • **5. 说明**
        • **6. 注意事项**
      • 3. Sticky Bit(粘滞位)
        • **1. 描述与定义**
        • **2. 格式**
        • **3. 设置与取消**
        • **4. 案例**
        • **5. 说明**
        • **6. 注意事项**
  • 总结


前言

在Linux系统中,SUID、SGID和Sticky Bit是三种特殊的文件权限,它们用于实现特定的系统功能或增强安全性。这些权限与常规的文件权限(如读、写、执行)不同,它们在特定场景下提供额外的控制能力。以下是关于文件的特殊权限(SUID、SGID、Sticky)详细说明:

1. SUID(Set User ID)

1. 描述与定义

SUID(Set User ID)是一种特殊的文件权限,仅对可执行文件有效。当用户运行具有SUID权限的程序时,程序会以文件所有者的身份运行,而不是以普通用户的身份运行。这使得普通用户可以执行某些通常需要更高权限(如root权限)的操作。

2. 格式
  • 符号表示法:在文件所有者的执行权限位上显示为小写的s。例如,-rwsr-xr-x
  • 数字表示法:在文件权限的八进制表示中,SUID用数字4表示。例如,4755
3. 设置与取消
  • 设置
    • 使用符号表示法:chmod u+s 文件名
    • 使用数字表示法:将文件权限的八进制表示的首位设置为4。例如,chmod 4755 文件名
  • 取消
    • 使用符号表示法:chmod u-s 文件名
    • 使用数字表示法:将文件权限的八进制表示的首位设置为0。例如,chmod 0755 文件名
4. 案例

假设系统中有一个需要root权限才能运行的程序/usr/bin/chage,它允许用户修改自己的密码过期时间。为了使普通用户能够运行该程序,系统管理员可以为该程序设置SUID权限。

chmod u+s /usr/bin/chage

设置后,普通用户运行chage时,程序会以文件所有者(通常是root)的身份运行,从而能够修改密码过期时间。

5. 说明
  • 原理:当用户运行具有SUID权限的程序时,程序会暂时提升为文件所有者的权限级别,执行完毕后权限自动恢复。
  • 适用场景:通常用于需要临时提升权限的系统工具,如passwdchagesu等。
  • 显示方式
    • 如果文件所有者有执行权限且设置了SUID,显示为小写的s,例如-rwsr-xr-x
    • 如果文件所有者没有执行权限但设置了SUID,显示为大写的S,例如-rwSr-xr-x,此时SUID无效。
6. 注意事项
  1. 安全性
    • SUID权限允许普通用户以文件所有者的身份运行程序,可能会带来安全风险。例如,如果程序存在漏洞,攻击者可能利用该漏洞获取更高权限。
    • 只有在绝对必要时才为程序设置SUID权限。
  2. 适用范围
    • SUID仅对可执行文件有效,对目录无效。
    • 对于Shell脚本,SUID通常无效,因为Shell脚本在运行时会重新调用解释器,导致SUID权限丢失。
  3. 权限检查
    • 用户必须对文件有执行权限,否则SUID不会生效。
    • 系统管理员可以通过find命令查找系统中所有设置了SUID权限的文件:
      find / -perm -4000 -type f 2>/dev/null
      
  4. 审计与监控
    • 对于设置了SUID权限的程序,建议进行审计和监控,以防止潜在的安全问题。

SUID是一种强大的特殊权限,允许普通用户临时提升权限运行某些程序。它在系统管理中非常有用,但也需要谨慎使用,以避免引入安全风险。

2. SGID(Set Group ID)

1. 描述与定义

SGID(Set Group ID)是一种特殊的文件权限,允许用户在执行文件或操作目录时,临时继承文件所属组的权限。SGID权限既可以应用于可执行文件,也可以应用于目录。

2. 格式
  • 符号表示法:在文件所属组的执行权限位上显示为小写的s。例如,-rwxr-sr-x
  • 数字表示法:SGID用数字2表示。例如,2755
3. 设置与取消
  • 设置
    • 使用符号表示法:chmod g+s 文件名
    • 使用数字表示法:将文件权限的八进制表示的首位设置为2。例如,chmod 2755 文件名
  • 取消
    • 使用符号表示法:chmod g-s 文件名
    • 使用数字表示法:将文件权限的八进制表示的首位设置为0。例如,chmod 0755 文件名
4. 案例
对文件的作用

假设系统中有一个程序/usr/bin/locate,它需要访问一个只有特定组(如slocate)才能访问的数据库文件/var/lib/mlocate/mlocate.db。通过为locate程序设置SGID权限,普通用户在执行locate时,会临时获得slocate组的权限,从而能够访问该数据库。

对目录的作用

当目录设置了SGID权限后,用户在该目录中创建的文件或子目录会自动继承目录的所属组。例如:

mkdir dtest
chmod g+s dtest
chmod 777 dtest

普通用户在dtest目录中创建的文件或目录,其所属组会自动变为dtest目录的所属组。

5. 说明
  • 对文件的作用
    • SGID仅对可执行文件有效,普通文件设置SGID权限没有意义。
    • 用户必须对文件有执行权限,SGID才会生效。
    • SGID权限仅在程序运行期间有效。
  • 对目录的作用
    • 用户在目录中创建的文件或子目录会自动继承目录的所属组。
    • 用户必须对目录有rwx权限,SGID才能完全发挥作用。
6. 注意事项
  1. 安全性
    • SGID权限可能带来安全风险,因为用户可能通过某些程序获得额外的组权限。
    • 应仅在必要时为程序或目录设置SGID权限。
  2. 权限检查
    • 可以使用以下命令查找系统中设置了SGID权限的文件:
      find / -perm -2000 -type f 2>/dev/null
      ```。
      
  3. 审计与监控
    • 定期审计系统中具有SGID权限的文件和目录,确保其使用符合安全策略。
    • 监控具有SGID权限的程序的运行情况,防止潜在的安全问题。

SGID权限允许用户在执行程序或操作目录时,临时继承文件所属组的权限。它在系统管理中非常有用,但也需要谨慎使用,以避免引入安全风险。

3. Sticky Bit(粘滞位)

1. 描述与定义

Sticky Bit(粘滞位)是一种特殊的文件权限,仅对目录有效。它的作用是限制用户在目录中删除或重命名文件的行为,只有文件的所有者、目录的所有者或超级用户(root)才能删除或重命名目录中的文件。

2. 格式
  • 符号表示法:在目录的“其他人”(others)权限的执行位上显示为小写的t。如果“其他人”没有执行权限,则显示为大写的T
  • 数字表示法:Sticky Bit对应的八进制值是1,通常放在权限的最前面。例如,chmod 1777 目录名
3. 设置与取消
  • 设置
    • 使用符号模式:chmod +t 目录名
    • 使用八进制模式:chmod 1777 目录名
  • 取消
    • 使用符号模式:chmod -t 目录名
    • 使用八进制模式:chmod 0777 目录名
4. 案例

假设有一个共享目录/share_dir,多个用户可以在此目录中创建文件,但只有文件的创建者和root用户可以删除文件。可以通过以下步骤设置Sticky Bit权限:

  1. 创建共享目录并设置权限:
    mkdir /share_dir
    chmod 1777 /share_dir
    
  2. 用户userA/share_dir中创建文件file_a,用户userB尝试删除file_a时会失败:
    [userB@localhost share_dir]$ rm file_a
    rm: cannot remove 'file_a': Operation not permitted
    
    这是因为Sticky Bit限制了用户删除其他用户创建的文件。
5. 说明
  • 作用范围:Sticky Bit仅对目录有效,对文件无效。
  • 实际应用:最典型的例子是/tmp目录,它通常设置为Sticky Bit权限(drwxrwxrwt),允许用户创建文件,但只能删除自己创建的文件。
  • 权限显示
    • 小写t表示目录的“其他人”有执行权限,且Sticky Bit被设置。
    • 大写T表示目录的“其他人”没有执行权限,但Sticky Bit被设置。
6. 注意事项
  1. 安全性:虽然Sticky Bit可以防止文件被删除,但它不防止文件被读取或修改。如果需要进一步保护文件,还需要设置适当的文件权限。
  2. 兼容性:大多数现代Linux系统都支持Sticky Bit,但在某些特殊环境下可能需要额外配置。
  3. 误用风险:如果目录没有正确设置Sticky Bit,可能导致用户误删他人文件。因此,建议在共享目录中始终启用Sticky Bit。

Sticky Bit是一种用于目录的特殊权限,用于防止用户删除其他用户创建的文件,常用于共享目录(如/tmp)。它通过限制文件删除权限,增强了目录的安全性,但需要结合适当的文件权限来进一步保护文件内容。

总结

在使用这些特殊权限时,应遵循最小权限原则,避免滥用权限,以确保系统的安全性。


http://www.ppmy.cn/news/1565689.html

相关文章

Kafka-常见的问题解答

讲一讲分布式消息中间件 问题 什么是分布式消息中间件?消息中间件的作用是什么?消息中间件的使用场景是什么?消息中间件选型? 分布式消息是一种通信机制,和 RPC、HTTP、RMI 等不一样,消息中间件采用分布式…

窥探QCC518x-308x系列与手机之间的蓝牙HCI记录与分析 - 耳机篇

上一篇是介绍如何窥探手机端Bluetooth的HCI log, 本次介绍是如何窥探Bluetooth的HCI log-耳机篇. 这次跟QCC518x/QCC308x测试的手机是Samsung S23 Ultra. QCC518x/QCC308x透过HCI界面取得Log教学. 步骤1: 开启QMDE -> 选择ADK r1102 QCC3083 Headset workspace.步骤2: 点…

SD换脸插件Reactor的安装教程

SD中最好用的换脸插件非Reactor莫属。软件虽好用,但安装很麻烦。今天主要讲Reactor插件的安装。 使用教程看这里:(B站)https://www.bilibili.com/video/BV1pj421f7iz/?spm_id_from333.999.0.0&vd_source2ed99a70e006bb11db9…

UnicodeEncodeError 通常是因为在某些环境中,系统的 locale 设置不支持 Unicode 字符(如中文字符)

now.strftime("%Y年%m月%d日") ^^^^^^^^^^^^^^^^^^^^^^^^^ UnicodeEncodeError: locale codec cant encode character \u5e74 方法1 设置 Python 的 locale import locale from datetime import datetime# 设置 locale 为中文(简体…

分布式 IO 模块:开启药品罐装产线高效生产新纪元

在药品生产的精密领域,每一个环节都关乎着客户的健康与安全。药品罐装产线作为药品生产的关键环节,其高效运行与精准控制至关重要。明达技术MR30分布式 IO 模块,正以其卓越的性能,成为实现药品罐装产线高效控制,确保产…

图像处理基础(4):高斯滤波器详解

本文主要介绍了高斯滤波器的原理及其实现过程 高斯滤波器是一种线性滤波器,能够有效的抑制噪声,平滑图像。其作用原理和均值滤波器类似,都是取滤波器窗口内的像素的均值作为输出。其窗口模板的系数和均值滤波器不同,均值滤波器的…

HarmonyOS快速入门

HarmonyOS快速入门 1、基本概念 UI框架: HarmonyOS提供了一套UI开发框架,即方舟开发框架(ArkUI框架)。方舟开发框架可为开发者提供应用UI开发所必需的能力,比如多种组件、布局计算、动画能力、UI交互、绘制等。 方…

关于扫雷的自动补空实现C语言

关于扫雷的自动补空实现C语言 相信很多朋友在用C语言实现扫雷功能时,都想实现扫雷里面的的自动补足功能,但总是难以实现,在这里我将分享一种方法——递归思想 先看代码! 位置在game.c //判断附近雷区并过滤空白区(…