setgid目录的用途是什么?


12

我知道setgid的工作原理,但是我不知道为什么要设计它,是否有任何示例说明解决的问题?

Answers:


19

尽管setgid文件/二进制文件可能没有明显用处,但我肯定会发现setgid位适用于目录。假设您是不同工作组的一部分,每个工作组都有自己的unix(权限)组。当然,您确实希望将setgid放在项目文件夹中,确保在创建新文件时应用了正确的组所有权,从而允许该项目组中的同事访问这些文件吗?


2
如果您使用的是CVS,则可能由于这个原因而非常熟悉(如果存储库中的目录不是setgid,则由于不同的用户尝试检出并提交文件,您会遇到很多权限错误)
Suppressingfire

是的,您是对的,其他用户可以共享(读取)您在setgid目录中创建的文件,但是setgid目录中没有继承组可写(g + w)权限,因此其他用户无法追加到子目录中您在setgid目录中创建的目录,这限制了它的使用。因此,我有一个问题,它可以解决CVS共享读取问题,但不能共享写入新创建的目录。??
谢雷(Jièléi),2009年

1
这就是为什么您还想使用合适的umask设置的原因。例如,umask 007将为用户和组保留全部权限,而对其他用户则没有权限。
andol

13

主要用途是保留文件树的组所有者:

[lockie@bubbles tmp]$ mkdir dir1 && touch dir1/file && mkdir dir1/dir
[lockie@bubbles tmp]$ mkdir dir2 && chgrp staff dir2 && chmod 2755 dir2 && touch dir2/file && mkdir dir2/dir
[lockie@bubbles tmp]$ ls -al dir1
total 32
drwxrwxr-x   3 lockie  lockie   4096 Dec 13 19:32 .
drwxrwxrwt 125 root root 20480 Dec 13 19:32 ..
drwxrwxr-x   2 lockie  lockie   4096 Dec 13 19:32 dir
-rw-rw-r--   1 lockie  lockie      0 Dec 13 19:32 file
[lockie@bubbles tmp]$ ls -al dir2
total 32
drwxr-sr-x   3 lockie  staff  4096 Dec 13 19:32 .
drwxrwxrwt 125 root root  20480 Dec 13 19:32 ..
drwxrwsr-x   2 lockie  staff  4096 Dec 13 19:32 dir  < note new dir is g+s, owned by "staff" group, so the setgid behaviour acts recursively
-rw-rw-r--   1 lockie  staff     0 Dec 13 19:32 file < note new file is owned by "staff" group
[lockie@bubbles tmp]$

在不同用户将在目录下创建/编辑文件/目录的环境中,这往往很有用:当所有文件/目录共享同一组时,所有用户都可以编辑/更改文件/目录(允许权限):这可以避免这种情况例如“ xyz拥有文件abc,因此我无法对其进行编辑”。

以这种方式使用setgid的替代方法是grpid文件系统挂载选项。

从坐骑:

grpid或bsdgroups / nogrpid或sysvgroups

这些选项定义新创建的文件获取的组ID。设置grpid时,它将使用创建目录的组ID;否则(默认)它将占用当前进程的fsgid,除非目录设置了setgid位,在这种情况下,它将从父目录获取gid,并且如果它本身是目录,还将获取setgid位。

启用后,在安装了grpid的文件系统上创建的文件/目录也会继承父目录的组:

[lockie@bubbles ~]$ mount | grep /home
/dev/mapper/VolGroup00-home on /home type ext3 (rw,grpid)
[lockie@bubbles ~]$ mkdir dir3 && touch dir3/file && mkdir dir3/dir
[lockie@bubbles ~]$ ls -al dir3
total 12
drwxrwxr-x  3 lockie users 4096 Dec 13 19:37 .
drwxrwxr-x 12 lockie users 4096 Dec 13 19:37 ..
drwxrwxr-x  2 lockie users 4096 Dec 13 19:37 dir < inherited "users" group from parent dir
-rw-rw-r--  1 lockie users    0 Dec 13 19:37 file  < inherited "users" group from parent dir
[lockie@bubbles ~]$

我发现使用grpid选项可以适当减少人为错误的可能性(因为文件系统可以正常工作,而无需目录权限)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.