• ベストアンサー

パーミッションの変更

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

  • chmodでパーミッションを変更する権限がないエラー・・・?

    レンタルサーバ「ロリポップ」を使用しています。 chmod命令で、ディレクトリやファイルのパーミッションを変更するプログラムを書きました。 chmodr($filename,0700); そうすると以下のようなエラーが表示されます。 Warning: chmod() [function.chmod]: Operation not permitted パーミッションを変更する権限がないために発生していると思うのですが、どうすればプログラムからパーミッションを変更することができるのでしょうか? ちなみにperlでは可能でした。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • SAMBA上に書き込んだファイルのパーミッションが変わってしまう

    始めまして、初心者です。LINUXのREDHAT7.3上にSAMBAでWINDOWSのファイルサーバもどきを構築しているのですが 同じグループなのに最初に書き込んだ人の権限になってしまい、いちいちCHMOD 770でパーミッションを変更しなく てはなりません 特にEXCELはCHMOD 770でパーミッションの変更をした後、誰かが上書きすると又権限がその人に変わってしまいます。 単に同じグループ専用の共有フォルダーを構築したいだけなのですが、LINUXではそう言うことはやらないのでしょうか・・・

  • PHPを使ってのサーバ上ファイルのパーミッションの変更方法

    PHPおよびPEARを使って、FTPサーバ上のファイルのパーミッションの変更をしたいと考えています。 具体的には、 PEARを利用し、$ftp->put()でアップしたファイル($filename)を、700に属性変更したいのです。 ソース上は、 chmod($filename, 0700); と書いています。 ところが、実行すると以下のようなワーニングが出ます。 「Warning: chmod() [function.chmod]: No such file or directory in ・・・」 今度は、 $ftp->chmod($remote_folder[$i]. $filename, 0700); と書いて実行してみるとエラーは出ません。 しかし、パーミッションは変わっていませんでした。 次に、 「PEARの命令を使って実行すればいいんだ!」と考えて、 $ftp->execute(chmod($filename, 0700)); と書いて実行してみました。 結果は、最初と同じ、 「Warning: chmod() [function.chmod]: No such file or directory in ・・・」 というワーニングでした。 いったい何がいけないいんでしょうか(--; phpのマニュアルを見ると、chmodに、「この関数では、 リモートファイルを使用することはできません。」とあります。 が、教えて!gooなどで検索してみると、chmodを使って普通にサーバ上のファイルのパーミッションを変更している書き込みが見られます。 正直、混乱しているというか、よく分からない状態です。 皆様、気がついた点などありましたら、是非、アドバイスお願い致します。

    • ベストアンサー
    • PHP
  • Permissionについて

    あるCGIを試用させていただいているのですが お客様から登録された情報が少したつと消えてしまうので困ってます・・。 パーミッションの記述で下記1(お借りしているCGIサイトの説明)と下記2(UPしたサーバーの説明)が違うのでどのように変更すればいいのか教えて下さい。よろしくお願いします。 あと、パーミッションの問題以外で考えられることはありますか?何卒宜しくお願いします。 --1--- ba**er_** (フォルダ)[755] -  set.cgi [755]         in.cgi [755]         send.cgi [755]         ip.dat [666]          ba**er.dat [666]          jcode.pl [644]         mimew.pl [644]   lock(フォルダ) [777] ----2---- CGIホームページご利用方法 WWWサーバについて CGIサーバ cgixx.******.or.jp には、Apache を使用しております。 Permissionについて CGIのPermission(アクセス権)については、FTPで転送された際に、604(-rw----r--)となります。FTPのchmodで、704(-rwx---r--)に変更して下さい。 また、ディレクトリに関しては、FTPで転送された際に、705(drwx---r-x)となります。ディレクトリ内にCGIを設置する場合、そのディレクトリのPermissionは、705(drwx---r-x)のままにして下さい。777(drwxrwxrwx)に変更すると、そのディレクトリ内のCGIが動作いたしませんので、ご注意下さい。 尚、本サーバにおいては、お客様のCGIは、お客様のアカウント権限で実行されます。

    • 締切済み
    • CGI
  • パーミッションの変更について

    rwxr-wr-w rwxr-wr-- rwxr-wr-t の内容のテキストファイルのパーミッションの変更コマンドをシェルスクリプトで書くにはどうしたらいいのかわかりません。 おしえていただくとありがたいです。 最初の一文字づつを読み込んでchmod ???と数字がでるようにしたいのですが 実行結果 ./a.txt r w x r - w r - w chmod 755と実行結果がでるようにしたいです。if文を沢山つかうのですか?

  • Web上からパーミッションの変更

    Web上から、majordomoの定義ファイルを変更しようと考えています。 管理は別のツールを使用するのですが、一部カスタマイズしたいところ があるので、独自に作ろうと思います。 対象のファイルは、下記のような設定になっています。 -rw-r--r-- 1 majordomo majordomo 108 8月 25 11:10 testml1 「chmod(646, "testml1")」という感じでパーミッションを変更したいの ですが、Webサーバ(apache)はnobodyで動作しているため、そのままでは 変更できません。 上記ファイルをあらかじめ変えておけば良いのではないかと思われるかも しれませんが、別の管理ツールを使用するとパーミッションが元に 戻ってしまうため、プログラム上で変更したいと考えています。

    • ベストアンサー
    • Perl
  • パーミッションが644でも実行できてしまう現象

    ファイルのパーミッションをchmodで644に変更したのですが、phpコマンドが実行できます。これはサーバに別の設定のようなものがあるのでしょうか?

  • telnetでのパーミッション変更

    ホームページでCGIを使おうと思い、ffftpでファイルをアップロードしました。その後ffftpでパーミッションの変更を行おうとしたところ、変更できませんでした。サーバ管理者に問い合わせたところ、「telnetで変更してください」とのことでした。 そのためtelnetを使って変更するため、ログイン、ディレクトリの変更まではできたのですが、chmodを使うと「command not understood」となり変更できません。どのようにしたら変更できるのでしょうか。 よろしくお願いします。

    • 締切済み
    • CGI
  • パーミッションの考え方。

    サーバー(リモート): XREAのレンタルサーバー(Linux系) テストサーバー(ローカル): Windows版XAMPP (Version: 1.8.1) FTPソフト: FFFTP DB: SQLite3 ----- 使用するディレクトリ、ファイルのパーミッションの設定のしかたがよく分からず、 困っています。 使用するファイル、ディレクトリは以下の通りです。 phpスクリプトファイル(3種類) (1)全ての人からウェブブラウザ経由でアクセスされて動く --- a1 (2)phpスクリプトから呼ばれた時にのみ使われる --- a2 (3)管理者のみがアクセス --- a3 DBファイル(.sqlite3) --- b1 画像ファイル --- c1 <位置関係(Document Root を基準に書かせてもらいます。)> Document Root --- a1.php Document Root --- sub --- a2.php Document Root --- admin --- a3.php Document Root --- db --- b1.sqlite3 Document Root --- img --- c1.jpg 上記のような場合、 (ディレクトリ) sub admin db img (ファイル) a1.php a2.php a3.php b1.sqlite3 c1.jpg これら、4つのディレクトリと、5つのファイルは、 それぞれ、具体的には、どのようにパーミッションの設定をしたらよろしいでしょうか。 (考え方も含め、ご教示頂けますと助かります。) それと、 パーミッションの話で出てきます、 「自分」、「グループ」、「他人」 とは、一般的に、 レンタルサーバー(特に知りたいのはXREAの場合。)においては、 それぞれ具体的には誰を指しますでしょうか? (「グループ」に属すユーザというのは誰のことなのでしょうか?  もし存在しないという場合には、「グループ」のユーザの権限は、  すべて「0」でも大丈夫でしょうか。) また、細かい話にはなりますが、 あるユーザに、DBファイルへの書き込み権限を与え、その一方で、 そのDBファイルへの書き込みを実際に実行するPHPスクリプトファイルの 実行権限を与えない、なんていう場合には事実上、 そのユーザは、「そのDBファイルへの書き込みはできない」 ということになりますでしょうか。 また、phpファイルを「読む」 と、「実行する」では、 動作上、どのような違いがあるのでしょうか。 phpファイルを「読むだけ」というのが、 どのような動作なのか、よく分からなかったもので。。。 どうぞ、よろしくお願い致します。 (レスポンスは確実に致します。)

    • ベストアンサー
    • PHP
  • chmodでのパーミッション

    実行すると、同じディレクトリにあるディレクトリとその中のファイルを同じ階層にディレクトリを新規に作って、その中のファイルを全部コピーするスクリプトを組んでいます。 コピーはうまくいったのですが、パーミッションの設定がうまくいきません。 例えば @chmod("$dir/xxx.cgi",0755)or die("エラー"); と書くと、パーミッションは363になってしまいます。 5ファイルくらいあるのですが、他のパーミッション(例えば666など)も137になってしまいます。 Webを検索してもこういった事例にはおめにかからないのですが、私の使っている2つのサーバーで、どちらも同様の結果でした。 何がいけないのでしょうか? よろしくお願いいたします。 #ついでにmkdirも作成はできるのですが、パーミッションが必ず755になってしまいます。 #作成されたディレクトリやファイルのownerは、1つめのサーバーではnobody、もう一つのサーバーではログインユーザーになります。 #サーバーはどちらもLinuxです。 #PHPのヴァージョンは、1つめが4.3.1、2つめが4.3.4です。 よろしくお願いいたします。

    • ベストアンサー
    • PHP