linux权限管理之SetUID&SetGID

2023-05-16

关于facl权限,请看:

 linux权限管理之ACL权限管理_Rocket MAN的博客-CSDN博客

SetUID

SUID 特殊权限仅适用于可执行文件,所具有的功能是,只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,会以文件所有者的身份去执行此文件,一旦文件执行结束,身份的切换也随之消失

SetUID理解起来比较简单,这里不做赘述,详情请参考:Linux SetUID(SUID)文件特殊权限用法详解 (biancheng.net)

SetGID

与 SUID 不同的是,SGID 既可以对文件进行配置,也可以对目录进行配置。

对文件设置SetGID

请参考Linux SetGID(SGID)文件特殊权限用法详解 (biancheng.net)

对目录设置SetGID

当一个目录被赋予 SGID 权限后,进入此目录的普通用户,其有效群组会变为该目录的所属组,会就使得用户在创建文件(或目录)时,该文件(或目录)的所属组将不再是用户的所属组,而使用的是目录的所属组。

 关于SetGID的理解:

  • 首先需要明确的是,在Linux系统中,在用户a对目录A有rwx权限的情况下,那么他在目录A下创建的目录/文件属主和属组默认是当前用户和当前用户所属的组
  •  SetGID的作用,是在目录A下创建目录/文件时,自动将当前用户所属的组转换为目录A的所属组,那么这样目录A下所有创建的文件和目录,都将与目录A的属组保持一致
  • 因此,setGID仅仅起到的是临时替换创建用户所属组,并不影响目录A下目录/文件的rwx权限,因此setGID需要配合属组一起运行才能起作用。即所有在目录A下有创建问题权限的用户必须是目录A的属组下的成员

一个案例

创建/tmp/test,要求成员mbb-sw3下的成员必须对所有目录/文件有rxw权限

首先,root用户创建目录,此时test的权限是755,属主属组是root

root@ubuntu:/tmp# mkdir test
root@ubuntu:/tmp# ls -ld test/
drwxr-xr-x 2 root root 4096 Nov 26 12:13 test/

 然后,将test授予SetGID权限,设置test权限中新增sw

root@ubuntu:/tmp# chgrp mbb-sw3 test
root@ubuntu:/tmp# chmod g+ws test
root@ubuntu:/tmp# ls -ld test
drwxrwsr-x 2 root mbb-sw3 4096 Nov 26 12:13 test

第一个mbb-sw3用户在test下创建目录,可以看到新目录 d1 的组权限与 test 的组权限保持一致

lijie@ubuntu:/tmp/test$ mkdir d1
lijie@ubuntu:/tmp/test$ ls -ld d1
drwxrwsr-x 2 lijie mbb-sw3 4096 Nov 26 14:08 d1

第二个mbb-sw3用户在d1目录下新建文件

luoxi@ubuntu:/tmp/test/d1$ mkdir d1-1
luoxi@ubuntu:/tmp/test/d1$ ls -ld d1-1/
drwxrwsr-x 2 luoxi mbb-sw3 4096 Nov 26 14:10 d1-1/

如果没有添加SetGID的情况下,在其他人创建的目录下创建目录会提示无权限,因为其他人的目录默认属主属组都是他自己,在这样的目录下只有other权限,而other权限默认只有rx,不可写,因为这样的情况时无法成功的。

而上面的例子中目录创建成功了,说明SetGID生效了 。

参考资料: 

 Linux SetUID(SUID)文件特殊权限用法详解 (biancheng.net)

 Linux SetGID(SGID)文件特殊权限用法详解 (biancheng.net)

permissions - How can I give write-access of a folder to all users in linux? - Super User

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux权限管理之SetUID&SetGID 的相关文章

  • 正则表达式删除块注释也删除 * 选择器

    我正在尝试使用 bash 从 css 文件中删除所有块注释 我有以下 sed 命令的正则表达式 sed r s w s w d 这可以很好地去除块注释 例如 This is a comment this is another comment
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • Ubuntu Python shebang 线不工作

    无法让 shebang 线在 Ubuntu 中为 python 脚本工作 我每次只收到命令未找到错误 test py usr bin env python print Ran which python usr bin python 在 sh
  • Python 3.4.3 subprocess.Popen 在没有管道的情况下获取命令的输出?

    我试图将命令的输出分配给变量 而不让命令认为它正在通过管道传输 原因是 如果正在通过管道传输 则相关命令会给出未格式化的文本作为输出 但如果从终端运行 则会给出颜色格式化的文本 我需要获取这种颜色格式的文本 到目前为止我已经尝试了一些事情
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • Tomcat Intellij Idea:远程部署

    RackSpace 云服务器 Ubuntu 12 04 Intellij Idea 11 1 2 Windows 8 Tomcat 7 0 26 JDK 6 在 Intellij Idea 上 当我尝试在远程 Tomcat 7 服务器上运行
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • 在 C 中使用单个消息队列是否可以实现双向通信

    我希望服务器向客户端发送一些消息 并让客户端确认它 我被分配了这个任务 我可以在 C linux 中使用单个消息队列来完成它还是我需要创建两个 谢谢 是的 可以使用 sysV 消息队列来做到这一点 从您之前的问题来看 您正在使用该队列 您可
  • 在 Linux 上以编程方式设置 DNS 名称服务器

    我希望能够通过我的 C C 程序为 Linux 上的 DNS 名称服务器添加 IP 地址 我在一个带有只读 etc resolv conf 的嵌入式平台上 这意味着我不能简单地将 nameserver xxx xxx xxx xxx 行添加
  • Linux 上的静态 Qt5 构建:部署时如何处理字体?

    我使用这些配置选项创建了 Qt 5 2 0 库的静态版本 Ubuntu 12 04 开源 确认许可 force pkg config 发布 静止的 前缀 home juzzlin qt5 无icu opengl桌面 无油嘴滑舌 辅助功能 n
  • linux-x64 二进制文件无法在 linuxmusl-x64 平台上使用错误

    我正在安装Sharp用于使用 package json 的 Nodejs 项目的 docker 映像上的映像压缩包 当我创建容器时 我收到有关 Sharp 包的以下错误 app node modules sharp lib libvips
  • 如何在 Ubuntu 中创建公共 HTML 文件夹?

    简单的问题 但由于某种原因我无法在谷歌上找到确切的答案 我在 Slicehost 上安装了全新的 Ubuntu 并且想在我的主目录中为包含一堆静态 HTML 文件的简单网站创建一个公共目录 我该怎么做呢 只是打字的问题吗mkdir publ
  • 使用循环在 C 中管道传输两个或多个 shell 命令

    我正在尝试执行ls wc l通过 C 语言程序 而不是使用命令行 这是我当前的工作代码 int main int pfds 2 pipe pfds pid t pid fork if pid 0 The child process clos
  • 并行运行 shell 脚本

    我有一个 shell 脚本 打乱大型文本文件 600 万行和 6 列 根据第一列对文件进行排序 输出 1000 个文件 所以伪代码看起来像这样 file1 sh bin bash for i in seq 1 1000 do Generat
  • 使用 MAX_ORDER / 包含 mmzone.h

    根据https www kernel org doc Documentation networking packet mmap txt https www kernel org doc Documentation networking pa
  • .net-core:ILDASM / ILASM 的等效项

    net core 是否有相当于 ILDASM ILASM 的功能 具体来说 我正在寻找在 Linux 上运行的东西 因此为什么是 net core ildasm 和 ilasm 工具都是使用此存储库中的 CoreCLR 构建的 https
  • 从 Xlib 转换为 xcb

    我目前正在将我的一个应用程序从 Xlib 移植到 libxcb 但在查找有关我有时使用的 XInput2 扩展的信息时遇到了一些麻烦 libxcb 中有 XInput2 实现吗 如果是的话 在哪里可以找到文档 目前我在使用此功能时遇到问题
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t

随机推荐

  • MyBatis和MyBatisPlus关系

    MyBatis和MyBatis Plus都是用来操作数据库的框架 MyBatis是一个持久层框架 xff0c 它的核心功能是将Java程序中的对象映射到数据库表中 MyBatis Plus是在MyBatis的基础上进行了封装和增强 xff0
  • 最全GPU架构知识介绍

    1 GPU的起源 GPU缩写为Graphics Processing Unit的 xff0c 一般称为视觉处理单元 GPU被广泛用于嵌入式系统 移动电话 个人电脑 工作站和电子游戏解决方案当中 现代的GPU对图像和图形处理是十分高效率的 x
  • ClassNotFoundException: org.slf4j.Logger报错问题

    ClassNotFoundException org slf4j Logger报错解决 1 jar包没有导入2 检查idea编译器 1 jar包没有导入 检查一下jar包是否添加到依赖 xff08 这一部分是检查pom xml这个文件 xf
  • zabbix报警

    zabbix 告警有三种方式 xff1a 1 邮件 2 短信 3 微信 最常用的就是邮件报警 使用第三方SendEmail邮件报警 1 将sendEmail v1 56 tar gz报警小程序上传至服务端 root 64 localhost
  • kaili下载教程

    kaili下载 不经意在社区看了一下好像没有最新的kaili下载教程 xff0c 所以就想着做一个 kaili下载 xff1a https docs kali org 1 进入官网首页 xff0c 最下面的两个箭头可以直接跳过第2步 xff
  • 2018.9.14-Asp.net实现动态主题(皮肤)更改

    Asp net实现动态主题 xff08 皮肤 xff09 更改 使用 xff1a Microsoft Visual Studio 2010 系统 xff1a win10 项目结构图 xff1a 第三个按钮 xff1a 更改项目目录显示方式
  • LVM——linux缩小逻辑卷(xfs)

    在这里 xff0c 我们将向您展示如何在Linux中收缩LVM卷或分区 xff0c 方法是首先调整文件系统的大小 xff0c 然后调整逻辑卷的大小 如果您尝试执行相反操作请看 xff1a LVM linux增加LVM分区 注意 xff1a
  • Linux——重启服务器后磁盘名称错乱

    背景 某台服务器有如下文件系统 xff0c fwork1 挂载在 dev sda1 xff0c fwork2挂载在 dev sdb1 某次添加新硬盘重启后 xff0c 变成了fowrk1挂载在 dev sdb1 xff0c fwork2挂载
  • linux卡住freeze解决办法

    状况 踢出用户后启动服务器 xff0c 在机房点击键盘没有反应 xff0c 等待一个小时服务器一直卡在下面界面 一些底层软件的 bug 也可能导致一些奇怪的死机问题 Linux 运行过程中 xff08 为了提高性能 xff09 会把大量的数
  • 鸟哥私房菜-Linux文件格式化处理 grep|egrep|awk|sed|diff|cut|sort|uniq|wc|xargs

    grep grep基础用法 文件中搜索特定字符串 grep 39 query 39 file 或者 cat file grep 39 query 39 查询包含特定字符串的文件 sudo grep r 字符串 目录 同时 xff0c fin
  • Linux——磁盘分区与挂载

    Step 1查看当前磁盘的分割表类型 sudo parted dev sda print Error dev sda unrecognised disk label Model LENOVO ST2400MM0129 scsi nbsp n
  • 鸟哥私房菜—Vim编辑器的常用快捷键

    一 移动游标的方法 页面级别 Ctrl 43 b Ctrl 43 PgUp 向上移动一页 Ctrl 43 f Ctrl 43 PgDn 向下移动一页 Ctrl 43 u 向上移动半页 Ctrl 43 d 向下移动半页 行级别 G 移动到这个
  • Linux—yum/apt-get软件安装

    yum用法 yum的查询 yum option 查询工作目录 相关参数 option xff1a y 当yum要等待使用者输入时 xff0c y自动提供yes的回应 installroot 61 some path 将该软件安装在指定目录
  • SCM和NVM是什么鬼,与NVMe是什么关系?

    SSD存储介质和接口技术一直处于不断向前发展和演进的过程 SSD分为几个阶段 xff0c 第一个阶段是SATA SSD或者SATA SAS SSD为主导 xff0c 这个阶段介质以SLC和eMLC为主 第二个阶段是PCIe SSD xff0
  • Java笔记之Maven,import找不到jar包(Cannot resolve symbol ‘fastjson‘)

    Spring Boot默认是没有阿里巴巴的jar包的 xff08 如果这里有fastjsonjar包 xff0c 应该多一行Maven com alibaba fastjsonjar 1 2 38 xff09 此时在类文件中使用下面的语句该
  • 快速掌握一个语言最常用的50%

    现在的开发工作要求我们能够快速掌握一门语言 一般来说应对这种挑战有两种态度 xff1a 其一 xff0c 粗粗看看语法 xff0c 就撸起袖子开干 xff0c 边查Google边学习 xff1b 其二是花很多时间完整地把整个语言学习一遍 x
  • Linux卡死的解决方法 solution of server stuck or freezes

    如果整个系统都死机了 xff0c 可以尝试使用SysReq 解决 检查Sysrq是否开启 在大多数发行版中 xff0c 默认情况下已编译并启用 xff0c 要确认该选项是否开启 xff0c 请使用 sysctl kernel sysrq 如
  • Error while extracting response for type [class cn.hutool.json.JSONArray] and content type [applicat

    在使用restTemplate调用get方法时 xff0c 报错 xff1a Error while extracting response for type class cn hutool json JSONArray and conte
  • Linux如何设置SUDO_ASKPASS

    什么是SUDO ASKPASS 你是否遇到过这种场景 xff0c 需要通过某个程序调用linux命令 xff0c 如果命令中存在sudo xff0c 那么程序将无法执行 xff0c 因为sudo命令需要等待输入密码才能继续执行 SUDO A
  • linux权限管理之SetUID&SetGID

    关于facl权限 xff0c 请看 xff1a linux权限管理之ACL权限管理 Rocket MAN的博客 CSDN博客 SetUID SUID 特殊权限仅适用于可执行文件 xff0c 所具有的功能是 xff0c 只要用户对设有 SUI