GID是什么意思?


14

GID实际上是什么意思?

我已经用Google搜索了,这就是linux.about.com所说的:

进程的组标识号。有效的组号在/etc/group/etc/passwd文件的GID字段中给出。启动进程时,其GID设置为其父进程的GID。

  • 但是,这是什么意思?

我对文件夹的权限当前位于 0755

我了解如果我为所有者设置了UID,它将是 4755

如果我设置组的GID,它将是 2755

如果我为其他人设置粘滞位 1755

  • 设置这些权限甚至重要吗?

Answers:


27

在每一个处理的类UNIX系统,就像每个文件,有一个所有者(用户,无论是真实的或系统“伪用户”,如daemonbinman等等)以及一组所有者。用户文件的组所有者通常是该用户的主要组,并且以类似的方式,您启动的任何进程通常都由您的用户ID和主要组ID拥有。

但是,有时有时需要具有提升的特权才能运行某些命令,但并不希望授予完全的管理权限。例如,该passwd命令需要访问系统的影子密码文件,以便它可以更新您的密码。显然,您不想授予每个用户root特权,只是为了让他们可以重置密码-无疑会导致混乱!相反,需要有另一种方法来临时向用户授予提升的特权以执行某些任务。这就是SETUID和SETGID位的作用。这是一种告诉内核在标记的命令执行期间暂时提高用户特权的方法。SETUID二进制文件将以可执行文件所有者的权限执行(通常是root),然后将以可执行文件的组所有者的组特权执行SETGID二进制文件。对于passwd属于rootSETUID且为SETUID 的命令,它允许普通用户通过以root特权执行,从而以可控和可预测的方式直接影响密码文件的内容。还有许多其他SETUID的命令类UNIX系统(chshscreenpingsu,等等),所有这些都需要提升权限的正确操作。还有一些SETGID程序,其中的内核会临时更改进程的GID,以允许访问日志文件,等等sendmail

sticky bit供应略有不同的目的。它最常见的用途是确保只有创建文件的用户帐户才能删除它。考虑一下/tmp目录。它具有非常宽松的权限,该权限允许任何人在此处创建文件。这是好事,并允许用户进程创建的临时文件(screenssh,等,保持状态信息/tmp)。为了保护用户的临时文件,请/tmp设置粘性位,以便只有我才能删除我的文件,只有你才能删除自己的文件。当然,root可以执行任何操作,但是我们必须希望sysadmin不会混乱!

对于普通文件(即,对于非可执行文件),设置SETUID / SETGID位毫无意义。在某些系统上,目录上的SETGID控制在该目录中创建的新文件的默认组所有者。


2
太棒了,谢谢。因此,“粘性位”就像个人(用户)许可一样?这个答案措辞良好,可以理解。
Kevdog777

1
谢谢!粘性位为具有自由权限的目录中的文件提供了一点保护。它并不是真正针对特定用户的,因为无论所有者是谁,所有文件都获得相同级别的保护。这是一种允许任何人创建文件并确保只有所有者才能销毁它们的方法。
D_Bye

+ 1,D_bye,能否请您分享一下目录中setgid位设置的示例。谢谢
Ankit

1
@Ankit在Solaris(以及几乎可以肯定是其他人,但我仅使用* BSD和Solaris)下,如果在目录上设置了setgid位,则在该目录下创建的任何新文件都将具有与目录本身相同的组所有者,并且将不会继承创建过程的主要组(正在运行的用户)。
D_Bye

3

我认为您的意思是文件的“ SGID”位,与它的GID不同。

这是我计算机上的典型文件(ls -l的输出):

-rw-r----- 1 bristol    users 16 2012-07-23 11:36 file.txt
abbbcccddd <-- See explanation below.

如果您看一下前10个符号,

(a)-:这只是一个普通的旧文件(与目录,符号链接,管道等相对...)

(b)rw-:所有者可以读取和写入此文件,但不能执行它。所有者是“手枪”,正如您稍后将在行中看到的那样。

(c)r--:该文件所属的组的成员(在示例中为“用户”),所有者以外的其他成员可以读取,但不能写入或执行此文件。

(d)---:其他任何人都根本无法访问此文件(当然,除了root)。

GID字段是一个告诉您该文件属于哪个组的字段-在这种情况下为“用户”。

根据您的描述,您可能要表示的字段是SGID位,这是比我能想到的更好的解释:

http://www.codecoffee.com/tipsforlinux/articles/028.html

简短的版本是:如果可执行文件的SGID位置1,则不在组中但可以执行此文件的任何人都可以在程序执行时临时获得该组的权限。

例如,如果您有一个可以在print spooler目录中读写文件的“假脱机”组,则您不希望任何人弄乱该目录,但您希望他们能够打印文件,则可以某些打印程序或脚本具有“假脱机”组并设置了SGID位,并且当任何人启动该程序时,该程序现在都可以写入假脱机程序目录,而运行该程序的人员没有完全访问权限。


很好,谢谢。我确实了解许可权的部分,(abbbcccddd部分)-但是那位您:)
Kevdog777

我刚刚看到我对tmp文件夹的权限为drwxrwxrwt .... 2 sys .... sys .... 1024 Jul 24 15:17 tmp什么是abbbcccddt(字母“T”)是什么意思?-我了解“ d =目录”,“ rwx =读取,写入,执行”;但我之前从未看过结尾处的“ t”。这是tmp文件夹的特殊权限吗?
Kevdog777

小t是“可执行(x)和粘性位设置”。有关为什么在/ tmp上经常出现这种情况的说明,请参见上文。
布里斯托尔2012年

3

如您所见,GID是组的ID号。这是OS表达与某事物(进程,文件等)关联的(用户)组的一种简便方法。代替可能长的字符串标识符,它可以表示为固定大小的数字。

在四个八位数字的文件许可权值(例如0755)中,第三位数字指定组对文件的许可权。如果省略了第一位数字,则第二位数字指定了组的权限。请注意,在这方面,文件和目录的处理方式相同,但是对于目录,每个权限位的确切含义都不太直观。

这两个概念是相关的,但用途截然不同。

至于您的问题“设置这些权限是否甚至重要?”;它们始终设置为某物,但是由于在大多数情况下,初始数字为0(“没什么特别的”),因此为了简洁起见,往往将其省略。是否需要指定其他值完全取决于相关文件或目录的使用模式。

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.