ファイル所有者が複数のグループに属している場合に表示する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には書き込み権限を追加で付与できますが、他の人(グループ)には読み取り権限のみを付与できます。