特殊文件权限(setuid、setgid 和 Sticky 位)
可执行文件和公共目录可以使用三种特殊类型的权限:setuid、setgid 和 sticky 位。设置这些权限之后,运行可执行文件的任何用户都应采用该可执行文件属主(或组)的 ID。
setuid 权限
对可执行文件设置 setuid 权限时,将对运行该文件的进程授予基于文件属主的访问权限。该访问权限不是基于正在运行可执行文件的用户。使用此特殊权限,用户可以访问通常只有属主才可访问的文件和目录。
例如,passwd 命令的 setuid 权限使用户可以更改口令。拥有 setuid 权限的 passwd 命令与以下类似:
-r-sr-sr-x 3 root sys 28144 Jun 17 12:02 /usr/bin/passwd |
此特殊权限会带来安全风险。一些确定的用户甚至可以在 setuid 进程执行完毕后,找到保持由该进程授予他们的权限的方法。
分析一下,/etc/passwd的权限为 -rw-r--r-- 也就是说:该文件的所有者拥有读写的权限,而用户组成员和其它成员只有查看的权限。我们知道,在系统中我们要修改一个用户的密码,root用户和普通用户均可以用/usr/bin/passwd someuser这个命令来修改这个/etc/passwd这个文件,root用户本身拥有对/etc/passwd的写权限,无可厚非;那普通用户呢,这里就用到了setuid,setuid的作用是“让执行该命令的用户以该命令拥有者的权限去执行”,就是普通用户执行passwd时会拥有root的权限,这样就可以修改/etc/passwd这个文件了。它的标志为:s,会出现在x的地方,例:-rwsr-xr-x 。
setgid 权限
setgid 权限与 setuid 权限类似。可将进程的有效组 ID (group ID, GID) 更改为拥有该文件的组,并基于授予该组的权限对用户授权访问权限。/usr/bin/mail 命令拥有 setgid 权限:
-r-x--s--x 1 root mail 67504 Jun 17 12:01 /usr/bin/mail |
将 setgid 权限应用于目录时,该目录中已创建的文件将属于该目录所属于的组。这些文件不属于创建进程所属于的组。在目录中拥有写和执行权限的任何用户都可以在其中创建文件。但是,文件将属于拥有该目录的组,而不是用户所属于的组。
Sticky 位
sticky 位是保护目录中文件的权限位。如果对目录设置了 sticky 位,则只有文件属主、目录属主或特权用户才可以删除文件。root 用户和主管理员角色即是特权用户。sticky 位禁止用户从公共目录(如 /tmp)中删除其他用户的文件:
drwxrwxrwt 7 root sys 400 Sep 3 13:37 tmp |
在 TMPFS 文件系统中设置公共目录时,务必手动设置 sticky 位。
我们知道/tmp是系统的临时文件目录,所有的用户在该目录下拥有所有的权限,也就是说在该目录下可以任意创建、修改、删除文件,那如果用户A在该目录下创建了一个文件,用户B将该文件删除了,这种情况我们是不能允许的。为了达到该目的,就出现了stick bit(粘滞位)的概念。它是针对目录来说的,如果该目录设置了stick bit(粘滞位),则该目录下的文件除了该文件的文件属主、目录属主或特权用户可以删除和修改/tmp目录下的stuff,别的用户均不能动别人的,这就是粘滞位的作用。
如何设置上述特殊权限
chmod u+s xxx # 设置setuid权限 chmod g+s xxx # 设置setgid权限 chmod o+t xxx # 设置stick bit权限,针对目录 chmod 4775 xxx # 设置setuid权限 chmod 2775 xxx # 设置setgid权限 chmod 1775 xxx # 设置stick bit权限,针对目录
注意:有时你设置了s或t 权限,你会发现它变成了S或T,这是因为在那个位置上你没有给它x(可执行)的权限,这样的话这样的设置是不会有效的,你可以先给它赋上x的权限,然后再给s或t 的权限。
相关文章
- 文件上传漏洞实战靶场笔记
- 怎么禁止共享盘删文件(单独的禁止删除权限):实现Win10中文件夹只允许写入不允许删除的功能
- LInux 分割合并文件
- 将tgz文件解压到指定目录
- IDEA 不自动复制资源文件到编译目录 classes 的问题
- 无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]解决方法
- 将Model对象转换成json文本或者json二进制文件
- Android获取可存储文件所有路径
- linux怎么模糊查找一个文件
- Linux系统下如何查看及修改文件读写权限
- 如何取得Win7文件的管理员权限?
- linux下的文件和目录权限!
- FileProvider N 7.0 升级 安装APK 选择文件 拍照 临时权限 MD
- Android开发学习---android下的数据持久化,保存数据到rom文件,android_data目录下文件访问的权限控制
- linux shell 脚本攻略学习12--文件权限详解,chmod命令详解,chown命令详解,chattr命令详解
- MATLAB学习笔记 将 Excel 文件导入到 MATLAB 中
- linux dpkg: 错误: 无法打开软件包的 info 文件 /var/lib/dpkg/available 以便读取: 没有那个文件或目录
- Linux---文件特殊权限
- Spring MVC 上传文件(upload files)
- Serverless Streaming:毫秒级流式大文件处理探秘
- CreateFile() 打开与创建文件
- Http服务器实现文件上传与下载(四)
- 【Android 逆向】使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )
- 【Android 性能优化】应用启动优化 ( 方法追踪代码模板 | 示例项目 | SD 卡访问权限 | 示例代码 | 获取 Trace 文件 | Android Studio 查看文件)
- centos文件权限详解
- Linux改动文件权限记录
- skia 将网页录制成 skp 文件 通过skia的dm或者其他方式重放
- Windows下文件的所有和权限
- 14.第四章 Linux用户、组和权限管理 -- 文件权限管理、Linux文件系统上的特殊权限(二)
- ubuntu 赋予文件下所有文件的读写权限
- 单片机开发,malloc申请内存成功后,使用部分后,剩余部分于read读文件,读取的内容存在问题
- Mybatis 简单的CRUD 基于XML文件配置
- VC++判断当前程序对文件或文件夹是否有写权限(附源码)
- 【软件测试基础知识】Linux 基础知识-Shell、文件与目录管理、用户、权限操作等
- Linux 的文件权限和目录配置
- metasploit之Windows Services漏洞提权实战——利用Windows服务是以SYSTEM权限运行的,如果配置错误让我们修改该服务的二进制文件路径属性,则可以实现提权
- shell动态生成.sql文件的方法
- win7及以上系统检测目标进程对文件和文件夹的访问权限