chmod
私の場合、coreutils
8.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
コマンドを実行することです。find
exec
chmod
chmod
exec
次のコマンド+
バリアントを使用して呼び出すと、より効率的になります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/**/*(/)