x / Xに対応するフラグがありますが、Linuxではchmodを持つsに対応していますか?

x / Xに対応するフラグがありますが、Linuxではchmodを持つsに対応していますか?

chmod私の場合、coreutils8.12の一部を使用し、ビットを再帰的に設定するときにディレクトリにのみビットを設定するx便利さ(大文字x)があります。したがって、すべてのファイルから削除してフォルダにのみアーカイブするXには、次のように単一の呼び出しで圧縮できます。x

chmod -R a-x,a+X /path/to/folder

これは、1980年代にUnixシステムの概念を作成した同僚がいて8進数だけを知っている場合に755特に便利です。

sしかし、ファイルとフォルダのビットの意味に似た二重性があるにもかかわらず、私はこのようなものを見つけることができませんでした。私の言葉はchmod(1)、特にsetgid行動。その場合は、次のようにしてください。

chmod -R g+ws /path/to/folder

いよいよファイルを受け取りましたそしてフォルダにもビットが似ていますが、私が望むのは、フォルダに作成されたファイルが常にそのグループが自動的に所有するように設定することです。

便利な方法はありますか?欠落しています。

find /path/to/folder -type d -exec chmod g+s {} \;

???

答え1

-Rスイッチを使用すると、chmod関連する権限の変更がファイルやフォルダに繰り返し適用されることを意味します。

これらの設定の1つだけを適用するように指示する方法はありません。唯一の方法は、ディレクトリリストの作成などのツールでヘルプを入手してから、このリストに対してオプションでchmodコマンドを実行することです。findexecchmod

chmodexec次のコマンド+バリアントを使用して呼び出すと、より効率的になりますexec

$ find /path/to/folder -type d -exec chmod g+s {} +

答え2

一人でこれを行う方法はありませんchmod。 zshでは、再帰的なglobbingとglob修飾子を利用できます。

chmod g+ws /path/to/folder/**/*(/)

kshではこれを行うことができますが、ディレクトリへのシンボリックリンクでも機能します。

set -o globstar
chmod g+ws /path/to/folder/**/*/

Bashではこれを行うことができますが、再帰降下中にディレクトリへのシンボリックリンクも巡回します。

shopt -s globstar
chmod g+ws /path/to/folder/**/*/

ディレクトリで setgid ビットを使用する代わりに、ディレクトリのデフォルトの ACL を使用してグループからファイルを書き込むことができます。

setfacl -d -m g:somegroup:rwx /path/to/folder/**/*(/)
setfacl -m g:somegroup:rwx /path/to/folder/**/*(/)

関連情報