ACL(Posix ACL、MacOSのACLと異なる場合があります)がある場合

ACL(Posix ACL、MacOSのACLと異なる場合があります)がある場合

ファイル所有者が複数のグループに属している場合に表示するls -lグループをどのように決定しますか?たとえば、MacOSでは次のようになります。

drwx------+  48 flow2k  staff             1536 Feb  5 10:11 Documents
drwxr-xr-x+ 958 flow2k  _lpoperator      30656 Feb 22 16:07 Downloads

ここで、2つのディレクトリは異なるグループ(staffおよび_lpoperator)を示しています。これは何に基づいていますか?私は2つのグループのメンバーです。

答え1

私はこの問題がグループがどのように機能するかについての誤解に起因するものだと思います。リストされたグループではls -lありません。ユーザー所属することもできますが、グループ文書属します。各ファイルはユーザーとグループの所有です。通常、ユーザーはこのグループに属しますが、必須ではありません。たとえば、私のユーザーは次のグループに属します。

$ groups
audio uucp sparhawk plugdev

しかし、グループではそうではありませんcups。それではファイルを作成しましょう。

$ touch foo
$ ls -l foo
-rw-r--r-- 1 sparhawk sparhawk 0 Feb 23 21:01 foo

これはユーザーが所有してsparhawkいるとも呼ばれる私の基本グループですsparhawk。それでは、ファイルのグループ所有者を変更してみましょう。

$ sudo chown sparhawk:cups foo
changed ownership of 'foo' from sparhawk:sparhawk to sparhawk:cups
$ ls -l foo
-rw-r--r-- 1 sparhawk cups 0 Feb 23 21:01 foo

現在ファイルを所有しているグループは、私が属しているグループではないことを確認できます。

この概念を使用すると、ファイル権限を正確に操作できます。たとえば、X、Y、Zメンバーでグループを作成し、3つのメンバー間でファイルを共有できます。 Xには書き込み権限を追加で付与できますが、他の人(グループ)には読み取り権限のみを付与できます。

答え2

既存の権限では、ユーザーが属するグループの数に関係なく、ファイルは1つのグループに属します。

ファイルが作成されると、グループはユーザーのデフォルトグループに設定されます。その後、ユーザーはそれを自分のグループに移動できます。

ACL(Posix ACL、MacOSのACLと異なる場合があります)がある場合

これにより、複数のグループがある可能性があります。ただし、lsは最初のグループのみを表示し、modeはグループマスクを表示します。 (混乱している可能性があります。ACLにグループ名が表示されている場合はより良いでしょう。)

ユーザーは、最初のグループを自分が属していないグループに変更することはできません。ただし、セカンダリグループとユーザー権限(すべてのグループまたはユーザーに対して)を追加できます。

これを行うには、root(sudo)権限は必要ありません。

関連情報