サブディレクトリ(rx)のグローバルな参照権限を設定しますが、所有者とグループメンバー以外のすべてのユーザーがファイルにアクセスできないようにします。

サブディレクトリ(rx)のグローバルな参照権限を設定しますが、所有者とグループメンバー以外のすべてのユーザーがファイルにアクセスできないようにします。

通常、すべてのユーザーが参照できるようにしたいが、ファイルは読み取り不可および実行不可にしたいディレクトリがあります。

私が求めているものと完全に一致しない関連する質問がいくつかあります。

  • この質問を使用していますumask。これらのファイルはすでに作成されているため適用されません。

  • この質問ACL を使用しています。ただし、ここでは UNIX 権限を使用したいと思います。

私は通常findコマンドを使用しますが、いくつかの弱点があることは認識しています。より良い方法があると思われる理由とともに、潜在的な回答としてすぐに投稿します。

答え1

私は通常、以下を使用します。

find . -type f -print0 | xargs -0 sudo chmod 440
find . -type d -print0 | xargs -0 sudo chmod 555

ただし、実行可能ファイルは考慮されません。ファイルに対して次のようなことをすることを考えていました。

find . -type f -print0 | xargs -0 sudo chmod ug+r ug-w o-rwx

しかし、まだ 2 つのコマンドがあり、これが最善の方法かどうかはわかりません。おそらく、誰かがもっと良い提案をしているでしょう。

答え2

そうですね、ディレクトリとその中のファイルに同じ権限を設定しないでください。

$ chmod g+rx directory/
$ chmod g= directory/*

ここで、グループのメンバーはディレクトリにアクセスして参照できますが、ディレクトリ内のファイルを読み取ることはできません。

編集: 新しいタイトルに関しては、次のことをお勧めします:

$ chmod a+rx directory/
$ chmod u=rwX,g=rX,o= *

答え3

すでに作成されているディレクトリとファイルの場合:

/start_directory を見つけます -type d -exec chmod 755 {} \;

/start_directory を見つけます -type f -exec chmod 660 {} \;

ユーザーが新しいファイルやサブディレクトリを作成できるようにする必要がある場合は、解決策は正確な要件によって異なるため、詳細をお知らせください。

関連情報