在Ubuntu中,主要组和次要组之间有什么区别?

在Ubuntu中,主要组和次要组之间有什么区别?

请给你的问题添加更多背景信息。你在问哪些群体? - aquaherd
2个回答

主要组是在您使用常规方法(TTY、GUI、SSH等)登录时应用于您的组。
由于进程通常继承父进程的组,而您的初始进程或shell将具有您的主要组作为组,因此您所做的任何操作通常都会受到主要组的影响(例如创建文件)。
次要组是您可以启动进程而无需使用组密码的组,可以通过sg或通过newgrp命令登录。
因此,如果您有一个主要组x和一个次要组y
touch foo

通常情况下,会创建一个以 x 作为组所有者的文件(除非父目录被设置为其他组的SETGID)。但是,你可以执行以下操作:
sg y 'touch bar'
# or
newgrp y
touch baz

然后将使用“y”作为组创建barbaz
但是,如果您在辅助组中没有一个组(比如说z),当您使用sgnewgroup命令与z一起使用时,它们将要求输入组密码。

如果你在谈论文件系统组,这里有一个很好的解释cyberciti article。当创建新文件时,默认使用主要组。你可以进行测试。
touch foo
ls -la foo

文件将归您所有,并且属于您的主要组。与您的主要组相同的用户将对这些文件具有组级权限。
您可以使用以下命令检查您的次要组:
groups $(whoami)

通过在目录上设置“Set Group ID”,您还可以与不属于您的主要组的人共享文件。这在共享带有SetGID的文件夹中有详细说明。