回答:
プライマリグループは、通常の方法(TTY、GUI、SSHなど)を使用してログインするときに適用されるグループです。
通常、プロセスは親のグループを継承し、最初のプロセスまたはシェルはプライマリグループをグループとして持つため、通常、行うことはすべて、プライマリグループの影響(ファイルの作成など)を持ちます。
セカンダリグループはsg
、newgrp
コマンドを介して、またはコマンドを介してログインするために、グループパスワードを使用せずにプロセスを開始できるグループです。
したがって、プライマリグループx
とセカンダリグループがあるy
場合、
touch foo
通常x
、グループの所有者としてファイルを作成します(親ディレクトリが別のグループのSETGIDでない場合)。ただし、次のことができます。
sg y 'touch bar'
# or
newgrp y
touch baz
その後bar
とbaz
で作成されますy
グループとして。
ただし、セカンダリグループにグループがない場合(たとえばz
)、sg
とnewgroup
使用する場合は、コマンドとグループコマンドがグループパスワードを要求しますz
。
ファイルシステムグループについて話している場合は、cybercitiの記事をご覧ください。プライマリグループは、新しいファイルを作成するときにデフォルトで使用されます。これをテストできます
touch foo
ls -la foo
ファイルはあなたが所有し、あなたのプライマリグループになります。プライマリグループにも属しているユーザーには、これらのファイルに対するグループレベルのアクセス許可が付与されます。
セカンダリグループは次の方法で確認できます
groups $(whoami)
ディレクトリにグループIDを設定することにより、プライマリグループに属していない人とファイルを共有することもできます。これはここで説明されています:SetGIDを持つ共有フォルダー。