• ベストアンサー

パーミッションの変更

RedhatES3.0サーバです。 複数のディレクトリ及びファイルのグループの変更「chgrp -R」を行おうしたら、 誤って「chmod -R」をやってしまった様で権限が変わってしまいました。 それを元に戻したいのですが、「chmod -R」で変えるとファイルもディレクトリも同じ設定になりますが、 ファイルは「644」、ディレクトリは「755」に設定したいです。 この設定をまとめて実行する方法は無いのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答No.2

一度には無理だから、「chmod -R」を実行したディレクトリで以下のコマンドを実行ではどうですか? ○ファイル # find . -type f -exec chmod 644 {} \; ○ディレクトリ # find . -type d -exec chmod 755 {} \;  

benny12
質問者

補足

早速のご回答ありがとうございます。 他のマシンと勘違いしOSのバージョンを間違えました。 正しくはRedhatLinux7.3です。 このやりたかったで良いのです。 今は問題のマシンが手元に無いため、同じOSの別のマシンでやってみましたが、 find : missing argument to `-exec' といったエラーが返されてしまいます。 どうしてでしょうか。

その他の回答 (2)

  • Lean
  • ベストアンサー率72% (435/603)
回答No.3

>find . -type f -exec chmod 644 {} \; >find . -type d -exec chmod 755 {} \; 上記をそのままコピー&ペーストして実行して >find : missing argument to `-exec' というエラーになったという事ですか? おかしいな、OSは違うけど動作する事は確認してるんだけどなぁ。。 では、下記を実行してそれぞれエラーとならずディレクトリ、ファイルの表示がされますか? # find . -type d -print # find . -type f -print 上記が問題ないなら # find . -type d -print | xargs chmod 755 # find . -type f -print | xargs chmod 644 ではどうですか? それでもだめなら、以下のようなシェルスクリプトを作成して実行してみてください。 ○ファイル -------8<-------8<-------8<-------8<------- #!/bin/sh for f in `find . -type f -print` do chmod 644 $f done -------8<-------8<-------8<-------8<------- ○ディレクトリ -------8<-------8<-------8<-------8<------- #!/bin/sh for d in `find . -type d -print` do chmod 755 $d done -------8<-------8<-------8<-------8<-------

benny12
質問者

お礼

再度のご回答ありがとうございます。 補足でうまく実行できなかったと書いたのは、#1の方に教えて頂いたコマンドを実行したものでした。 今日、#2でお教え頂いたコマンドを実際のマシンで実行したところ、正常に実行できました。 ありがとうございました。

  • Teariss
  • ベストアンサー率30% (3/10)
回答No.1

両方まとめてではありませんが 「ディレクトリをまとめて」、「ファイルをまとめて」ならできます。 chmod -Rを実行してしまったディレクトリで 以下の二つを 実行すればいけます。 # find . -type d -exec chmod 755 # find . -type f -exec chmod 644

benny12
質問者

補足

早速のご回答ありがとうございます。 他のマシンと勘違いしOSのバージョンが間違えました。 正しくはRedhatLinux7.3です。 >「ディレクトリをまとめて」、「ファイルをまとめて」ならできます。 これをやりたかったんです。 今は問題のマシンが手元に無いため、同じOSの別のマシンでやってみましたが、 find : missing argument to `-exec' といったエラーが返されてしまいます。 どうしてでしょうか。

関連するQ&A