
誰もが階層とその中にあるすべてのファイルを見ることができるが、読み取りと書き込みはできないようにするには、フォルダーにどのような権限を適用する必要がありますか。フォルダーには、内部にファイルがある他のフォルダーが複数ある場合があります。
答え1
ディレクトリの一覧表示には実行可能ビットを使用しますが、読み取りは実際にはディレクトリにまったく影響しないと思います。読み取りまたは書き込みを防止するには、各ファイルに個別の権限を設定する必要があります。次のコマンドは、これをすべて実行します。開始するフォルダーから実行します。
find . -type d | xargs chmod o=rx
find . -type f | xargs chmod o=
find
は、ファイル ( -type f
) とディレクトリ ( -type d
) を再帰的に検索し、それらの名前を出力します (別の指定されたアクションはありません)。そして、これが にパイプされxargs
、パイプから読み取ったファイルを使用して引数を実行します。 は chmod
、他のユーザー (つまり、ファイルを所有するグループ内の自分と他のユーザー以外) の権限を、フォルダに対してo
は正確に ( =
) 読み取り/一覧表示 ( rx
) に変更し、プレーン ファイルに対しては何も変更しません。
grumbel がコメントで指摘したように、これは行儀の良い名前にのみ機能します。すべてを取得するには、彼のソリューションを使用します:
find . -type d -print0 | xargs -0 chmod o=rx
find . -type f -print0 | xargs -0 chmod o=
または find の組み込み-exec
:
find . -type d -exec chmod o=rx '{}' ';'
find . -type f -exec chmod o= \{\} \;
最初の行のように中括弧とセミコロンを引用符で囲むことも、2 行目のようにエスケープすることもできますが、これらは別の引数で指定する必要があります。また、は-exec
各ファイルに対して chmod を 1 回実行しますが、xargs は可能な限り少ないコマンドで実行します (最大コマンド ライン長に基づきます)。これが、私が通常 xargs を好む理由です。
答え2
sudo chown -R username:root "/directory you want"
-R
すべてのサブディレクトリとファイルの再帰を表します。
ユーザー名 - 現在のユーザー
読み取り/書き込み/実行権限に役立ちます