如何使用特殊权限:setuid、setgid 和 sticky 位 | Linux 中国
2018-02-17 00:00
1151 查看
在某些情况下,使用特殊权限会非常有用。但如果使用不当,可能会引入严重的漏洞,因此使用之前请三思。-- Egidio Docile
本文导航◈ 目标01%◈ 要求03%◈ 难度05%◈ 约定06%◈ 介绍09%◈ setuid 位16%◈ setgid 位39%◈ sticky 位55%◈ 如何设置特殊权限位68%编译自 | https://linuxconfig.org/how-to-use-special-permissions-the-setuid-setgid-and-sticky-bits
作者 | Egidio Docile
译者 | jessie-pang目标了解特殊权限的工作原理,以及如何识别和设置它们。要求◈ 了解标准的 Unix / Linux 权限系统[1]难度简单约定◈
#- 要求直接以 root 用户或使用
sudo命令执行指定的命令◈
$- 用普通的非特权用户来执行指定的命令介绍通常,在类 Unix 操作系统上,文件和目录的所有权是基于文件创建者的默认
uid(user-id)和
gid(group-id)的。启动一个进程时也是同样的情况:它以启动它的用户的
uid和
gid运行,并具有相应的权限。这种行为可以通过使用特殊的权限进行改变。setuid 位当使用 setuid (设置用户 ID)位时,之前描述的行为会有所变化,所以当一个可执行文件启动时,它不会以启动它的用户的权限运行,而是以该文件所有者的权限运行。所以,如果在一个可执行文件上设置了 setuid 位,并且该文件由 root 拥有,当一个普通用户启动它时,它将以 root 权限运行。显然,如果 setuid 位使用不当的话,会带来潜在的安全风险。使用 setuid 权限的可执行文件的例子是
passwd,我们可以使用该程序更改登录密码。我们可以通过使用
ls命令来验证:
ls -l /bin/passwd
-rwsr-xr-x. 1 root root 27768 Feb 11 2017 /bin/passwd
如何识别
setuid位呢?相信您在上面命令的输出已经注意到,
setuid位是用
s来表示的,代替了可执行位的
x。小写的
s意味着可执行位已经被设置,否则你会看到一个大写的
S。大写的
S发生于当设置了
setuid或
setgid位、但没有设置可执行位
x时。它用于提醒用户这个矛盾的设置:如果可执行位未设置,则
setuid和
setgid位均不起作用。setuid 位对目录没有影响。setgid 位与
setuid位不同,
setgid(设置组 ID)位对文件和目录都有影响。在第一个例子中,具有
setgid位设置的文件在执行时,不是以启动它的用户所属组的权限运行,而是以拥有该文件的组运行。换句话说,进程的
gid与文件的
gid相同。当在一个目录上使用时,
setgid位与一般的行为不同,它使得在所述目录内创建的文件,不属于创建者所属的组,而是属于父目录所属的组。这个功能通常用于文件共享(目录所属组中的所有用户都可以修改文件)。就像 setuid 一样,setgid 位很容易识别(我们用 test 目录举例):
ls -ld test
drwxrwsr-x. 2 egdoc egdoc 4096 Nov 1 17:25 test
这次
s出现在组权限的可执行位上。sticky 位sticky (粘连)位的工作方式有所不同:它对文件没有影响,但当它在目录上使用时,所述目录中的所有文件只能由其所有者删除或移动。一个典型的例子是
/tmp目录,通常系统中的所有用户都对这个目录有写权限。所以,设置 sticky 位使用户不能删除其他用户的文件:
$ ls -ld /tmp
drwxrwxrwt. 14 root root 300 Nov 1 16:48 /tmp
在上面的例子中,目录所有者、组和其他用户对该目录具有完全的权限(读、写和执行)。sticky 位在可执行位上用
t来标识。同样,小写的
t表示可执行权限
x也被设置了,否则你会看到一个大写字母
T。如何设置特殊权限位就像普通的权限一样,特殊权限位可以用
chmod命令设置,使用数字或者
ugo/rwx格式。在前一种情况下,
setuid、
setgid和
sticky位分别由数值 4、2 和 1 表示。例如,如果我们要在目录上设置
setgid位,我们可以运行:
$ chmod 2775 test
通过这个命令,我们在目录上设置了
setgid位(由四个数字中的第一个数字标识),并给它的所有者和该目录所属组的所有用户赋予全部权限,对其他用户赋予读和执行的权限(目录上的执行位意味着用户可以
cd进入该目录或使用
ls列出其内容)。另一种设置特殊权限位的方法是使用
ugo/rwx语法:
$ chmod g+s test
要将
setuid位应用于一个文件,我们可以运行:
$ chmod u+s file
要设置 sticky 位,可运行:
$ chmod o+t test
在某些情况下,使用特殊权限会非常有用。但如果使用不当,可能会引入严重的漏洞,因此使用之前请三思。via: https://linuxconfig.org/how-to-use-special-permissions-the-setuid-setgid-and-sticky-bits作者:Egidio Docile[3] 译者:jessie-pang 校对:wxy本文由 LCTT 原创编译,Linux中国 荣誉推出LCTT 译者
jessie-pang ? ?共计翻译:6 篇贡献时间:18 天
推荐文章< 左右滑动查看相关文章 >
点击图片、输入文章 ID 或识别二维码直达
原文链接请访问“原文链接”获得可点击的文内链接、全尺寸原图和相关文章。
相关文章推荐
- Linux文件特殊权限——SetUID、SetGID、Sticky BIT
- linux三个特殊权限setuid.setgid和stick bit使用详解
- linux/unix特殊权限setuid,setgid,sticky
- linux特殊权限位之setuid、setgid和sticky
- linux三个特殊权限setuid、setgid和stick bit使用详解
- linux特殊权限位之setuid、setgid和sticky
- linux特殊权限:setUid, setGid, 粘着位(sticky)
- linux特殊权限:setUid, setGid, 粘着位(sticky)
- Linux 之权限管理-文件特殊权限SetUID、SetGID和Sticky BIT
- linux三个特殊权限setuid、setgid和stick bit使用详解
- linux下特殊的访问控制权限sticky bit,setuid,setgid
- 使用 setuid、setgid 和 Sticky 位的特殊文件权限
- Linux三个特殊权限 setuid setgid stick bit
- Linux文件的setuid,setgid,sticky权限设定
- Linux setuid setgid stickybit 权限
- Linux三个特殊权限setuid,setgid,stick bit
- 特殊文件权限(setuid、setgid 和 Sticky 位)
- Linux特殊权限:setuid、setgid、粘贴位
- linux三个特殊权限setuid、setgid和stick bit详解
- ACL权限和特殊权限setuid、setgid管理使用