Linux文件权限:Sticky bit, SUID, SGID

作者: lesca 分类: Tutorials,Ubuntu 发布时间: 2012-03-20 09:18

我们将讨论Linux文件系统中三个特殊权限:Sticky bit, SUID, SGID

drwxrwxrwt - Sticky Bits - chmod 1777
drwsrwxrwx - SUID set - chmod 4777
drwxrwsrwx - SGID set - chmod 2777

Sticky bit

Sticky bit主要用在目录上,此时只有目录的所有者以及目录中文件的所有者能够删除、重命名该目录中的文件。
假设你有一个名叫test的目录,对test执行以下命令:

chmod 0777 test #此时test绿底色
chmod +t test   #保持绿底色

{i}提示:在bash中,其他用户权限为7时为绿底色。

SUID – [ Set User ID ]

SUID主要对可执行的文件进行设置,任何用户都可以以该文件的拥有者(owner)权限执行该文件。
要设置此位,执行以下代码:

chmod u+s file

{!}提示:在bash中,设置SUID的文件具有红底色;如果file没有置x位(执行位),则有大写S;否则是小写s,并且文件名边上有星号(*)

$ ll
-rwsr--r-- 1 lesca lesca    0 Mar 19 10:39 executable*
-rwSr--r-- 1 lesca lesca    0 Mar 19 10:39 non-executable

/!\注意:
root用户需要非常谨慎地设置SUID,必须设置时请清除其他用户的write权限,如passwd的权限:

lesca@vps:/usr/bin$ ll passwd
-rwsr-xr-x 1 root root 37132 Feb 21  2011 passwd*

SGID – [ Set Group ID ]

具有SGID权限的可执行文件将以该文件的拥有组(gropu owner)的权限执行,这和SUID类似,但是SGID也可以设置在目录上,并且通常与Sticky bit一起使用,让我们来看一个例子:

mkdir test
chmod 0777 test #开启所有权限
chmod g+s test  #设置SGID
chmod +t test   #设置sticky bit
ll test
drwxrwsrwt 2 lesca lesca 4096 2012-03-17 13:40 test/

现在任何用户都可以在该目录下创建文件:

lesca@userver:~/test/test$ ll
total 8
drwxrwsrwt 2 lesca lesca 4096 2012-03-17 13:42 ./
drwxrwxr-x 3 lesca lesca 4096 2012-03-17 13:40 ../
-rw-rw-r-- 1 a1    lesca    0 2012-03-17 13:41 a
-rw-rw-r-- 1 b2    lesca    0 2012-03-17 13:42 b

这样一来,所有lesca组内的用户都可以读写文件,而a1、b2用户只能编辑自己拥有的文件。
由于test目录设置了sticky bit,只有lesca组内的用户以及文件所有者可以删除、重命名文件。例如,a1用户删除b2用户的文件b将失败!

a1@userver:/home/lesca/test/test$ rm b
rm: remove write-protected regular empty file `b'? y
rm: cannot remove `b': Operation not permitted

另外,a1对b的重命名也将失败!

a1@userver:/home/lesca/test/test$ mv b bb
mv: cannot move `b' to `bb': Operation not permitted

版权声明

本文出自 Lesca 技术宅,转载时请注明出处及相应链接。

本文永久链接: https://www.lesca.cn/archives/linux-file-permission-sticky-bit-suid-sgid.html

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!