使用 setuid、setgid 和 Sticky 位的特殊文件权限
2016-07-27 22:47
477 查看
使用 setuid、setgid 和 Sticky 位的特殊文件权限
可执行文件和公共目录可以使用三种特殊类型的权限:setuid、setgid 和sticky 位。设置这些权限之后,运行可执行文件的任何用户都应采用该可执行文件所有者(或组)的 ID。
设置特殊权限时必须非常小心,因为特殊权限会带来安全风险。例如,通过执行将用户 ID (user ID, UID) 设置为 0(这是 root 的
UID)的程序,用户可以获得 root 的功能。此外,所有用户可以为其拥有的文件设置特殊权限,这会带来其他安全问题。
应对系统中任何未经授权使用 setuid 权限和 setgid 权限获取 root 功能的情况进行监视。可疑权限为用户而不是 root 或 bin 授予管理程序的所有权。要搜索并列出所有使用此特殊权限的文件,请参见如何查找具有特殊文件权限的文件。
setuid 权限
对可执行文件设置 setuid 权限时,将对运行该文件的进程授予基于文件所有者的访问权限。该访问权限不是基于正在运行可执行文件的用户。使用此特殊权限,用户可以访问通常只有属主才可访问的文件和目录。例如,passwd 命令的 setuid 权限使用户可以更改口令。具有 setuid 权限的 passwd 命令类似如下:
-r-sr-sr-x 1 root sys 56808 Jun 17 12:02 /usr/bin/passwd
此特殊权限存在安全风险。一些确定的用户甚至可以在 setuid 进程执行完毕后,找到保持由该进程授予他们的权限的方法。
注 - 在程序中使用具有保留 UID (0-100) 的 setuid 权限可能无法正确设置有效的 UID。请使用 shell 脚本或避免将保留的 UID 用于setuid 权限。
setgid 权限
setgid 权限与 setuid 权限类似。可将进程的有效组 ID(group ID, GID) 更改为拥有该文件的组,并基于授予该组的权限对用户授予访问权限。/usr/bin/mail 命令具有 setgid 权限:
-r-x--s--x 1 root mail 71212 Jun 17 12:01 /usr/bin/mail
将 setgid 权限应用于目录时,该目录中已创建的文件将属于该目录所属于的组。这些文件不属于创建进程所属于的组。在目录中拥有写和执行权限的任何用户都可以在其中创建文件。但是,文件将属于拥有该目录的组,而不是用户所属于的组。
应对系统中任何未经授权使用 setgid 权限获取 root 功能的情况进行监视。可疑权限为非常规组而不是 root 或 bin 授予对此类程序的组访问权限。要搜索并列出所有使用此权限的文件,请参见如何查找具有特殊文件权限的文件。
Sticky 位
sticky 位是保护目录中文件的权限位。如果对目录设置了 sticky 位,则只有文件所有者、目录所有者或特权用户才可以删除文件。root用户是特权用户的一个示例。sticky 位禁止用户从公共目录(如 /tmp)中删除其他用户的文件:drwxrwxrwt 7 root sys 400 Sep 3 13:37 tmp
在
TMPFS 文件系统中设置公共目录时,务必手动设置 sticky 位。有关说明,请参见Example 1–5。
相关文章推荐
- [置顶]Request 和 Response 原理
- 关于监听(安卓)
- 关于新导入java项目后提示:Configure build path
- android UI基本控件
- HDU4027:Can you answer these queries?(线段树 单点更新 区间求和)
- unique函数的使用
- poj 2299 Ultra-QuickSort
- 【POJ2299】Ultra-Quicksort-逆序对
- Codeforces670E. Correct Bracket Sequence Editor
- DualPivotQuicksort两枢轴快速排序
- Android Bluetooth(蓝牙)实例
- mysql生成不重复随机数(unique number generation)
- Vue 经验总结
- UITableView全面解析文章
- poj 2299 Ultra-QuickSort (归并求逆序数)
- Bluetooth-->蓝牙开发扫描设备,及蓝牙设备类型
- EasyUI 网页边框布局
- EasyUI 菜单与按钮
- EasyUI 拖放
- Android UI组件--ListView(1)