次のディレクトリ構造があります。
+ public/
|-+ pics/
| |-- a
| `-- b
`-+ thumbs/
|-- a
`-- b
gallery:http
私はツリー内のすべてのファイルがスキーマセットによって所有されることを望みますug=rwX,o=
。
スクリプトはその中にディレクトリを作成し、pics
userthumbs
として実行されますgallery
。public
、 、pics
に SUID/SGID ビットがセットされていますthumbs
。
これで問題は、a
ディレクトリが所有者と共に作成されますが、グループの権限gallery:http
なしで作成されることです。x
に電話するとchmod
SGIDビットがクリアされます。 (奇妙な動作ですが、http
ユーザーがファイルの所有者ではないため、これが発生します。)
chown
root以外のユーザーとして呼び出してモードを最初に設定し、所有者を設定することはできません。
唯一の解決策は、に設定し、umask
すべてug=rwx,o=
のディレクトリを作成し、通常のファイルが生成される前に変更するか、通常のumask
ファイルを作成してからモードをに変更することですug=rw,o=
。
私が見ることができないより良いと醜い解決策はありますか?
ベストアンサー1
スクリプトを変更できる場合は、呼び出しmkdir
をmkdir --mode=770
。
スクリプトを変更できない場合は、ACLが役立ちます。
setfacl -m d:u::rwx,d:g::rwx,o::- pics thumbs
umask
ファイルに実行権限を設定しないでください。どの権限も設定しません。ファイルの作成時に権限が設定されないようにするだけです。