SSブログ

ファイルだけ・ディレクトリだけ、パーミッションを変更したい [小技(Linux)]

習うより慣れろfindコマンド応用術

 chown -R みたいに、chmodにも-Rオプションがあったりしますが、実はコイツがビミョーに使いづらかったりするんですよね。

 例えば、パーミッションが「drwxr-xr-x」というディレクトリが沢山あるとして、オーナーでもグループメンバーでもない人のそのディレクトリへの立ち入りを禁止したいという場合に、それを再帰的に実行したいなーとかいうケース。

 chmod o-x somewhere

 (「somewhere」はどこかのディレクトリ)と実行すれば、ひとまずそのディレクトリから「x」が取り除かれるのである。よって、再帰的に実行したいなら、「-R」をつければいいし、カレントディレクトリに複数あるなら「*」と指定したくなる。

 chmod -R o-x ./*

 とか、実行したくなる気持ちは理解できる。

 が、これでは痛い目にあう可能性があることに気が付くだろうか。

 もしそこに…

 実行可能なファイル(コマンドやスクリプト)が含まれていたら、なにか余計なことをしでかす予感がしないだろうか。(笑)

 こんなケースでもfindコマンドが役に立つ。

 「ディレクトリだけターゲットにしたい」なら…

 find /some-directory -type d -exec chmod o-x {} \;

 と、なる。これでディレクトリだけが処理の対象になるし、「ファイルだけターゲットにしたい」なら…

 find /some-directory -type f -exec chmod o-x {} \;

 と、いうことに。

 ちなみに、前アーティクルの「特定のオーナーの…」という条件を組み合わせることも可能で、

 find /some-directory -type f -user someOwner -exec chmod o-x {} \;

 と、これで「オーナーがsomeOwner」のファイルだけchmodする…ということが可能になる。
 もちろん、「-maxdepth」とかも組み合わせることができる。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。