web-dev-qa-db-ja.com

Linuxパーミッションの強制スティッキービットまたはACL

Linux(つまりCentOS 6)で継承されたアクセス許可を強制することに関して質問/混乱があります

セットアップ:

1 xCentOSファイルサーバー

2 x CentOSNFSクライアント

多くのxWindowsSambaクライアント

ファイル共有は/ srv/shareであり、SambaとNFSの両方のローカル権限で共有されます。h

drwxrwx---. 2 root sharegroup 4.0K Oct 22 14:41 share

ActiveDirectoryを介して統合されたすべてのUID/GID、すべてのユーザーのプライマリグループは「sharegroup」です。

次のようにfstabにマウントされたNFSクライアント:

tst-lnx03:/srv/share    /mnt/share            nfs     defaults                0 0

UNCパスを介したWindowsボックス:

\\tst-lnx03\share

私が欲しいもの:

NFSまたはSambaのどちらを経由したかに関係なく、/ srv/shareフォルダーに書き込まれた/作成されたものはすべて770ルート共有グループです。

私が試したこと:

ACLを使用してみました:

setfacl -m d:u:root:rwx,d:g:"sharegroup":rwx,d:other:--- share

結果:

ls -lah
-rwxrwx---+ 1 testuser11 sharegroup    0 Oct 22 14:25 tu12-smb-win
-rw-rw----+ 1 testuser2  sharegroup    0 Oct 22 14:23 tu2-local-local
-rw-r-----+ 1 testuser4  sharegroup    0 Oct 22 14:24 tu4-NFS-lnx04

スティッキービットを使ってみました:

chmod 2770 share

結果:

ls -lah
-rwxr--r--  1 testuser11 k8 sharegroup   0 Oct 22 14:38 tu12-smb-win
-rw-r--r--  1 testuser2  k8 sharegroup   0 Oct 22 14:38 tu2-local-local
-rw-r--r--  1 testuser4  k8 sharegroup   0 Oct 22 14:38 tu4-NFS-lnx04

混乱

Setfaclが勝者のように見えますが、出力に少し混乱しています。スティッキービットバージョンがランダムな他の読み取りを追加し、書き込みオフグループを削除するのはなぜですか?

デフォルトのumaskが0022であるため、NFSで作成されたファイルが異なると考えることができますが、他の変更はできないと思います。作成されたウィンドウとローカルに作成されたファイルも許可に一致することを期待していました。

誰かがそれぞれの場合に何が起こっているのか説明できますか?私は少し当惑しています。あなたが私からもっと何かを必要とするならば、ただ叫んでください、そして、私はそれを上げます。

2
malco

だからあなたはしました

setfacl -m d:u:root:rwx,d:g:"sharegroup":rwx,d:other:--- share

setfacl d:(「デフォルトACL」と呼ばれます)を使用して行うことは、所有権には影響せず、アクセシビリティのみに影響します。したがって、「誰がアクセスできるか」は決定できますが、「誰が所有するか」は決定できません。テストファイルに、所有しているユーザーとrootのrwxアクセスを許可しました。所有グループおよび「共有グループ」のrwxアクセス。ただし、所有ユーザーと所有グループは、setfaclを使用しない場合とまったく同じ方法で決定されました。

Setfacl'dファイルでは、umaskが考慮されなくなったため、ファイルのパーミッションは予期しないものです。各ファイルには、単にマスクと呼ばれる「独自のumask」があります( getfacl を参照)。

そして、あなたはしました

chmod 2770 share

また違う。 2770はスティッキーではなく、これはsetgidビットです。 Stickyは1770年でした。setgidは新しいファイルの所有グループを変更し、それらのアクセス許可にはまったく影響しませんでした。パーミッションは、通常どおり、umask( umask を参照)と、ファイルを作成するアプリケーションによって提案されたモードを考慮に入れます。

私はあなたが必要とするものがあなたが持っているツールでどのように適切に実行されることができるかを知りません。 Linuxには「ディレクトリのsetuid」は実装されていません。

2
kubanczyk