Linux文件权限:Sticky bit, SUID, SGID
我们将讨论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