最佳实践 UID == GID?

最佳实践 UID == GID?

我正在设置一个 RH Linux 系统用于教学。过去我有两个组,facultystudents。每个学生帐户都被分配到主要组students,即讲师faculty

我在读Nemeth 等人,Unix 和 Linux 系统管理(第 4 版)并且建议每个账户的主要组应该与用户ID相同。

哪一个更好?

  • 设置学生账户,其主要组与其用户 ID 相同(ig,uid == gid),然后将他们添加到组中students

  • students 或者我应该像过去一样将所有学生最初添加到小组中?

这些在语义上是否相同?

特别是在安全方面。我计划让一些示例代码/文件组对所有学生都可读,但显然要避免学生轻易偷看彼此的目录。

答案1

如果您想让学生无法访问彼此的文件,您有两个选择:

  1. 使用每个用户的 GID(UID == GID)并将默认 umask 设置为 0750。
  2. 将默认 umask 设置为 0700。

第一种选择实施起来更快,而且破坏的可能性更小。但请记住,如果不使用 SELinux 之类的东西,就没有切实可行的方法来阻止人们故意允许他人访问他们的文件。

答案2

许多发行版都会自动为新用户帐户创建一个主组。默认情况下,它会使用下一个可用的 ID,这通常意味着新用户的 UID 将等于其 GID,除非您之前创建了一个自动分配了 GID 的组,或者一个没有自己的主组的 UID。

因此,说 UID==GID 是一个错误的说法,因为在许多多用户机器上,UID 可能与用户的 GID 不匹配。

通常,所有用户帐户也是某个公共组的成员,users(100)因此在每个帐户都有自己主要组的系统上,您可以动态地从一个范例切换到另一个范例,例如通过chown -R :users .文件夹中的文件。

答案3

这主要是个人喜好的问题。

几年前我也曾有过同样的疑问,并对此事进行了一些研究。
据我所知,这两种方法都没有真正的重大优势。如今,​​大多数主流 Linux 发行版似乎都默认使用 UID=GID 方法。其他一些 Unix 系统仍然更喜欢另一种方法。只要您正确使用 UMASK,这似乎并不重要。(750 是 GID=UID 的标准,如果多个用户共享 GID,则 700 是首选。)

可能有些软件会假设其中一种,但对于每种偏好 GID=UID 的软件,您都可以找到另一种偏好相反的软件。而且,您总是可以通过创造性地使用 chown 和 chgrp 来让事情正常运转。

在某些组织中,由于共享网络资源的设置方式,可能偏好共享 GID。(NFS 权限或它们在 SMB ACL 上映射 Unix 权限的方式。)

因此,我会顺应潮流:使用您的组织中规定的任何内容(如果有这样的规则)或您选择的发行版上的默认内容(以尽量减少基于所使用的发行版假定某个系统的应用程序的问题)。

相关内容