特殊权限

本文详细介绍了Linux下的特殊权限suid、sgid和sticky bit的概念及其应用,并深入讲解了如何通过访问控制列表(ACL)来实现更精细的权限管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天看到朋友们讨论LINUX下文件权限的知识,很是激烈,所以就特意整理了一下关于特殊权限的知识,望能对大家有所帮助。另外linux下的访问控制列表(ACL)主要用来控制用户的权限,可以做到不同用户对同一文件有不同的权限,那么具体要如何操作呢?下面就教你如何在Linux下设置访问控制列表(ACL)来控制用户的权限。

suid:当对于一个可执行的二进制文件作用了suid之后,任何人在执行该文件时,临时拥有其所有人的权限
           chmod              u+s 

sgid:
        1.当对于一个可执行的二进制文件作用了sgid之后,任何人在执行该文件时,临时拥有其所有组的权限
            chmod            g+s
        2.当对于一个目录作用了sgid权限之后,任何人在该目录下所创建的文件的所属组,均与该目录的所属组相同

sticky: 对于一个目录作用了sticky权限,该目录下的文件仅其所属人和目录的所属人及root可以删除。

            suid:                 4
            sgid:                 2
            sticky:              1

s和t两个特殊权限说明:

LINUX中除了r w x 三个权限外(分别代表r 读,w 写,x 执行),其实还有两个特殊的权限s 跟t

当s权限在文件所有者 x 权限上时,例如:-rwsr-xr-x,此时称为Set UID,简称为SUID的特殊权限,

即当执行该文件时将具有该文件所有者的权限。

例如:有一个普通用户hff,当hff修改密码时,执行passwd这个命令,passwd该文件权限为:-rwsr-xr-x

1. hff对于 /usr/bin/passwd 这个程序具有 x 权限,表示hff 能执行 passwd
2. passwd 文件的所有者是 root
3. hff 执行 passwd 的过程中,会暂时获得 root 的权限
4. /etc/shadow 就可以被 hff 所执行的 passwd 所修改。

当s权限在文件组 x 权限上时,例如:-rwx--s--x,此时称为Set GID,简称为SGID的特殊权限,

我理解的是:执行者在执行该文件时将具有该文件所属组的权限。

还有一个t权限,Sticky Bit,简称为SBIT权限,只针对目录有效。

-当用户对此目录具有 w, x 权限,亦具有写入的权限时
-当用户在该目录下创建文件或目录时,仅有自己与 root用户才有权限删除该文件或目录

例如:

/tmp 本身权限是drwxrwxrwt,表示任何人都可以在/tmp目录内新增、修改文件,但是只有该文件或目录的建立都与root用户能够删除自己的文件或目录
ACL
      使用拥有权限控制的Liunx,工作是一件轻松的任务。它可以定义任何user,group和other的权限。无论是在桌面电脑或者不会有很多用户的虚拟Linux实例,或者当用户不愿意分享他们之间的文件时,这样的工作是很棒的。然而,如果你是在一个大型组织,你运行了NFS或者Samba服务给不同的用户,然后你将会需要灵活的挑选并设置很多复杂的配置和权限去满足你的组织不同的需求。
Linux(和其他Unix等POSIX兼容的操作系统)有一种被称为访问控制列表(ACL)的权限控制方法,它是一种权限分配之外的普遍范式。例如,默认情况下你需要确认3个权限组:owner、group和other。而使用ACL,你可以增加权限给其他用户或组别,而不单只是简单的“other”或者是拥有者不存在的组别。
     1.开启acl的方式
        centos7 默认支持acl
        centos6及之前,操作系统安装时所创建的文件系统默认支持acl,而操作安装之后使用mkfs格式化的文件系统默认未开启acl,需要手工开启,方法如下:
        (1).tune2fs -o acl /dev/sda5
         (2).mount -o acl /dev/sda5 /app

        不用系统组,不要使某用户的多个组都设置不同的acl group 权限

   2.ACl权限判断顺序
         owner > acl user > group > other

    3.设置ACL
         setfacl -m u:liubei:rwx testdir

    4.使用文件设置acl
             (1).cat acl.txt
                   u:liubei:rwx
                   g:shuguo:---
                   g:weiguo:r-x
             (2).setfacl -M acl.txt testdir/  
       设置默认权限
         setfacl -Rm u:liubei:rwx testdir/    设置当前的权限
         setfacl -Rm d:u:liubei:rwx testdir/  设置未来文件的权限
      删除权限
         [root@centos6  app]# setfacl -x u:liubei testdir/
         [root@centos6 app]# setfacl -x u:guanyu testdir/
         [root@centos6 app]# setfacl -x g:weiguo testdir/

       删除所有权限,清空acl属性
         setfacl -b testdir

       批量删除acl权限
          1.cat aclrm.txt
                u:liubei
                g:shuguo
                g:weiguo
         2.setfacl -X acl.txt testdir/
      删除默认权限
          setf  acl -k testdir

     删除所有权限,清空acl结构
          setfacl -b testdir

     mask 权限的阀值 即权限上限
          setfacm -m m:rwx testdir
          或
          chmod g=rwx testdir
      acl 扩展属性  打包工具不支持存储


      实验:备份带有acl的文件至tar

     1.备份acl
       getfacl * > /root/acl.bak

     2.利用tar备份文件
       tar cvf file.tar *

     3.删除原文件,模拟文件损坏
       rm a b c d -f

     4.恢复文件
       tar xvf file.tar

     5.恢复acl
        setfacl --restore /root/acl.bak

转载于:https://www.cnblogs.com/f-h-j-11-7/p/9348145.html

<think>好的,我现在要处理用户关于Linux特殊权限修改的问题。首先,我需要确认用户所说的“特殊权限”具体指的是什么。在Linux系统中,除了常见的读(r)、写(w)、执行(x)权限,还有三个特殊权限:setuid、setgid和sticky bit。用户可能想了解如何修改这些权限,或者了解它们的作用。 接下来,我得回忆一下这三个权限的具体功能和用法。setuid(SUID)允许用户以文件所有者的权限执行文件,比如passwd命令。setgid(SGID)对于目录来说,新创建的文件会继承目录的组;对于可执行文件,则以文件所属组的权限运行。Sticky bit(粘滞位)通常用于目录,如/tmp,确保只有文件所有者才能删除其中的文件。 然后,用户提到“修改”这些权限,所以我需要解释如何通过chmod命令来设置或取消这些权限。通常,特殊权限可以通过数字模式或符号模式来修改。比如,数字模式中,setuid是4,setgid是2,sticky bit是1,这些数字放在普通权限的前面,例如4755。符号模式则是使用u+s、g+s、o+t这样的形式。 可能需要举例说明,例如如何给文件添加setuid权限,使用chmod u+s filename,或者用数字模式chmod 4755 filename。同时,要提醒用户谨慎设置这些权限,特别是setuid和setgid,因为不当使用可能导致安全风险。 还需要注意,用户可能混淆了特殊权限和ACL(访问控制列表),但这里应该明确区分,特殊权限是基本的权限扩展。另外,检查是否有必要提到查看现有权限的方法,比如ls -l,显示时特殊权限会出现在执行位的位置,如rwsrw-r--表示setuid被设置。 最后,总结一下修改步骤,强调安全注意事项,并确保用户理解每个权限的作用,避免误操作。可能还需要提醒用户,某些系统或文件系统可能对特殊权限有限制,比如挂载时使用nosuid选项会忽略setuid和setgid。</think>在Linux系统中,除了基本的读(r)、写(w)、执行(x)权限外,还存在三种特殊权限:`setuid`、`setgid`和`sticky bit`。它们用于更精细地控制文件或目录的访问行为。以下是逐步说明: --- ### 一、特殊权限的作用 1. **setuid(SUID)** - **功能**:当用户执行具有SUID权限的文件时,会以文件所有者的身份运行。 - **典型应用**:例如`/usr/bin/passwd`,普通用户修改密码时需要临时获得root权限。 - **符号表示**:`s`(替换所有者执行位`x`) 2. **setgid(SGID)** - **对文件**:执行时以文件所属组的身份运行。 - **对目录**:在该目录下新建的文件会自动继承目录的所属组。 - **符号表示**:`s`(替换所属组执行位`x`) 3. **sticky bit(粘滞位)** - **功能**:仅允许文件所有者或root用户删除/重命名目录中的文件。 - **典型应用**:例如`/tmp`目录,所有用户可创建文件,但只能删除自己的文件。 - **符号表示**:`t`(替换其他用户执行位`x`) --- ### 二、修改特殊权限 #### 方法1:数字模式 通过4位数字组合设置权限: - 第1位:特殊权限(`4=SUID`, `2=SGID`, `1=sticky`) - 后3位:基本权限(如`755`) | 命令示例 | 说明 | |---------|------| | `chmod 4755 file` | 设置SUID,基本权限为755 | | `chmod 2770 dir` | 设置SGID,基本权限为770 | | `chmod 1777 dir` | 设置sticky bit,基本权限为777 | #### 方法2:符号模式 使用`+`或`-`操作符: - `u+s`:设置SUID - `g+s`:设置SGID - `o+t`:设置sticky bit | 命令示例 | 说明 | |---------|------| | `chmod u+s file` | 添加SUID | | `chmod g-s dir` | 移除SGID | | `chmod o+t dir` | 添加sticky bit | --- ### 三、查看特殊权限 使用`ls -l`查看权限列: - **SUID**:所有者执行位显示为`s`(如`-rwsr-xr-x`) - **SGID**:所属组执行位显示为`s`(如`drwxrwsr-x`) - **sticky bit**:其他用户执行位显示为`t`(如`drwxrwxrwt`) --- ### 四、注意事项 1. **SUID/SGID风险**:滥用可能导致提权漏洞,需严格限制可执行文件。 2. **目录权限**:SGID和sticky bit通常用于目录而非普通文件。 3. **文件系统限制**:某些挂载选项(如`nosuid`)会禁用SUID/SGID。 --- ### 示例操作 1. 为`/usr/local/bin/script.sh`添加SUID: ```bash chmod u+s /usr/local/bin/script.sh ``` 2. 为共享目录`/shared`设置SGID和sticky bit: ```bash chmod 3770 /shared # 等效于 chmod g+s,o+t /shared ``` 通过合理使用特殊权限,可以在保证安全性的前提下实现灵活的权限管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值