问题描述
Ubuntu 中的主要组和次要组有什么区别?
最佳答案
主要组是在您使用常用方法(TTY、GUI、SSH 等)登录时应用于您的组。
由于进程通常继承父组,并且您的初始进程或 shell 会将您的主组作为组,因此您所做的任何事情通常都会对其产生主组的影响(例如,创建文件)。
辅助组是您可以在不使用组密码的情况下启动进程的组,通过 sg
或通过 newgrp
命令登录。
因此,如果您有一个主要组 x
和一个辅助组 y
,
touch foo
通常会创建一个以 x
作为组所有者的文件(除非父目录是另一个组的 SETGID)。但是,您可以这样做:
sg y 'touch bar'
# or
newgrp y
touch baz
然后将以 y
作为组创建 bar
和 baz
。
但是,如果您的次要组中没有组(比如 z
),如果您将 sg
和 newgroup
命令与 z
一起使用,它们将询问组密码。
次佳答案
如果您谈论的是文件系统组,那么这里 cyberciti article 对它们进行了很好的解释。创建新文件时默认使用主要组。你可以测试这个
touch foo
ls -la foo
该文件将归您所有,并在您的主要组中。同样在您的主要组中的用户将对这些文件具有组级权限。
您可以检查您的辅助组
groups $(whoami)
通过在目录上设置组 ID,也可以与不在您的主要组中的人共享文件。这在这里解释:shared folder with SetGID。