ディレクトリのすべてのファイルとフォルダの権限を644/755に変更します


184

コマンドプロンプトchmodからすべてのファイルを644に、すべてのフォルダーを755に変更するにはどうすればよいlinuxですか。(ターミナル)


6
誰か(@animuson)がとても親切に私を説明してくれるなら、なぜこのchmodの質問が話題外で他のすべて(14,438結果)がここにないのか...
hugo der hungrige

少し遅くなりますが、この1つのコマンドでも、受け入れられた回答を1ショットで実行します。chmod -R a = r、a + X、u + w / your / path
MichaelICE

良い質問です。締めくくるに値しません。これらは、閉鎖するのではなく、stackoverflowサブサイトに移動する必要があります。
Erik Friesen、2015年

1
@hugoderhungrigeそれはhttp://superuser.com:: Pのようなサーバーサイトでそれを尋ねに行くことを意味しますが、この質問は私にここで助けてくれてありがとう。
絵文字2015

回答:


345

1つの方法として、findを使用することができます。

ディレクトリ用

find /desired_location -type d -print0 | xargs -0 chmod 0755

ファイル用

find /desired_location -type f -print0 | xargs -0 chmod 0644

21
私のような他の人にとっては、これは機能せず、代わりsudo find /your/location -type f -exec chmod 644 {} \;にファイルとsudo find /your/location -type d -exec chmod 755 {} \;ディレクトリを試します
NineCattoRules

元のソリューションを実行したところ、ファイルとディレクトリへのアクセス権がめちゃくちゃになりました。気を付けて!コメントの解決策はうまくいきました、ありがとう!
Mahsa Mortazavi、2018年

3
なぜ(?)それはより良いのchmod -R a=r,u+w,a+X /fooですか?
Peter Krauss、2018

で失敗unable to execute /bin/chmod: Argument list too long
vladkras

desired_locationを指定するときにサブフォルダーのみをchmod 755にしたい場合はどうすればよいですか?これにより、親フォルダーが755
MaXi32

105

最も簡単な方法は次のとおりです。

chmod -R u+rwX,go+rX,go-w /path/to/dir

これは基本的には次のことを意味します:

次のようにして、chファイルmodesを-R再帰的にアンジングします。

  • user:read、rite、we Xecute権限、
  • g競売とoTHERユーザー:rEADと電子Xecute権限はなく、-w儀式の許可。

注意してくださいX、それはすでに、検索/実行可能でない限り、ファイルをディレクトリを実行可能にしますが、しませんが。

+X -ディレクトリまたはファイルが誰でも検索/実行可能である場合は、誰でも検索/実行可能にする。

詳細をご確認man chmodください。

参照:ファイルを除くすべてのディレクトリを(再帰的に)chmodする方法?SUで


7
chmod -R a = r、u + w、a + X / foo
John Allsup

9
この回答には、問題はありませんが、コマンドを実行する前に実行可能であったファイルは、後で実行可能になります。この欠陥のないコマンドについては、@ JohnAllsupの回答を参照してください。
mzuther 2017

4
@mzutherこの問題が実際に機能しない限り
RiaD

37

私が思いつくことができる最も短いものは:

chmod -R a=r,u+w,a+X /foo

これはGNU / Linuxで動作し、Posix全般を信じています(私の読んだ記事:http : //pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html)。

これは何ですか:

  1. ファイル/ディレクトリをr__r__r__に設定します(0444)
  2. 所有者にwを追加して、rw_r__r__を取得します(0644)
  3. ディレクトリの場合はすべて実行に設定します(ディレクトリの場合は0755、ファイルの場合は0644)。

重要なのは、ステップ1のアクセス許可ではすべての実行ビットがクリアされるため、ステップ3ではディレクトリ(ファイルではない)の実行ビットのみが追加されることです。さらに、3つのステップはすべて、ディレクトリが再帰される前に発生します(したがって、これはたとえば

chmod -R a=r /foo
chmod -R u+w /foo
chmod -R a+X /foo

a = rはディレクトリからxを削除するため、chmodはディレクトリに再帰できません。)


鮮やかさ!たくさん助けてくれました
Jannie Theunissen

13

私にとって覚えやすいのは2つの操作です。

chmod -R 644 dirName
chmod -R +X dirName

+ Xはディレクトリにのみ影響します。


1
最も簡単で安全
マルコマルサラ

12

https://help.directadmin.com/item.php?id=589彼らは書きます:

public_htmlデータをディレクトリの場合は755に、ファイルの場合は644にリセットする簡単な方法が必要な場合は、次のように使用できます。

cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;

私はテストしました...それはうまくいきます!


ライフセーバー!この問題のクリーンな解決策をありがとう!WordPressインストールのアクセス許可の問題を修正する必要があるときに私のために働いた!
twknab

ディレクトリ内で調整を行うのに適しています。
Christian Berendt

8

これは私のために働きました:

find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;

3
注意:これらのコマンドは、名前にスペースが含まれているファイルまたはディレクトリを処理しません。受け入れられた答えの中のコマンドはそうなります。
Chad Nouis 2015

1
:この警告は、{}は引用符で囲まれていない場合は...ので、print0とxargsの-0、以下で十分で遊ぶする理由はありません、適用されるfind /A -type X -exec chmod Y '{}' \;
マイケルStumpfl

6

両方を1つのパスで実行します。

find -type f ... -o -type d ...

のように、タイプfまたはタイプdを見つけ、最初の...をファイルに対して、2番目の...をディレクトリに対して実行します。具体的には:

find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +

--changesサイレントに動作させたい場合は、オフのままにします。


2

public_htmlデータをディレクトリの場合は755に、ファイルの場合は644にリセットする簡単な方法が必要な場合は、次のように使用できます。

cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;

さらに、「apache」ではなくユーザーとしてPHPが実行されていることがわかっている場合は、PHPファイルを600に設定して、セキュリティのレベルを上げることができます。例:

find . -type f -name '*.php' -exec chmod 600 {} \;

このリソースは、https//help.directadmin.com/item.php?id = 589にあります


-9

これも機能します:

chmod -R 755 *  // All files and folders to 755.

chmod -R 644 *.*  // All files will be 644.

1
誰もそれをしないでください!それは完全なサーバーに影響します!
T.Todua
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.