アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (3件)

両方まとめてではありませんが


「ディレクトリをまとめて」、「ファイルをまとめて」ならできます。

chmod -Rを実行してしまったディレクトリで
以下の二つを 実行すればいけます。

# find . -type d -exec chmod 755
# find . -type f -exec chmod 644

この回答への補足

早速のご回答ありがとうございます。
他のマシンと勘違いしOSのバージョンが間違えました。
正しくはRedhatLinux7.3です。

>「ディレクトリをまとめて」、「ファイルをまとめて」ならできます。

これをやりたかったんです。
今は問題のマシンが手元に無いため、同じOSの別のマシンでやってみましたが、
find : missing argument to `-exec'
といったエラーが返されてしまいます。
どうしてでしょうか。

補足日時:2005/05/06 22:58
    • good
    • 0

一度には無理だから、「chmod -R」を実行したディレクトリで以下のコマンドを実行ではどうですか?



○ファイル

# find . -type f -exec chmod 644 {} \;

○ディレクトリ

# find . -type d -exec chmod 755 {} \;
 

この回答への補足

早速のご回答ありがとうございます。
他のマシンと勘違いしOSのバージョンを間違えました。
正しくはRedhatLinux7.3です。

このやりたかったで良いのです。
今は問題のマシンが手元に無いため、同じOSの別のマシンでやってみましたが、
find : missing argument to `-exec'
といったエラーが返されてしまいます。
どうしてでしょうか。

補足日時:2005/05/06 23:03
    • good
    • 0

>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<-------
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/05/10 00:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!