chmodを呼び出してSGIDビットを保存するにはどうすればよいですか?

chmodを呼び出してSGIDビットを保存するにはどうすればよいですか?

次のディレクトリ構造があります。

+ public/
|-+ pics/
| |-- a
| `-- b
`-+ thumbs/
  |-- a
  `-- b

gallery:http私はツリー内のすべてのファイルがスキーマセットによって所有されることを望みますug=rwX,o=

スクリプトはその中にディレクトリを作成し、picsuserthumbsとして実行されますgallerypublic、 、picsに SUID/SGID ビットがセットされていますthumbs

これで問題は、aディレクトリが所有者と共に作成されますが、グループの権限gallery:httpなしで作成されることです。xに電話するとchmodSGIDビットがクリアされます。 (奇妙な動作ですが、httpユーザーがファイルの所有者ではないため、これが発生します。)

chownroot以外のユーザーとして呼び出してモードを最初に設定し、所有者を設定することはできません。

唯一の解決策は、に設定し、umaskすべてug=rwx,o=のディレクトリを作成し、通常のファイルが生成される前に変更するか、通常のumaskファイルを作成してからモードをに変更することですug=rw,o=

私が見ることができないより良いと醜い解決策はありますか?

ベストアンサー1

スクリプトを変更できる場合は、呼び出しmkdirmkdir --mode=770

スクリプトを変更できない場合は、ACLが役立ちます。

setfacl -m d:u::rwx,d:g::rwx,o::- pics thumbs

umaskファイルに実行権限を設定しないでください。どの権限も設定しません。ファイルの作成時に権限が設定されないようにするだけです。

おすすめ記事