web-dev-qa-db-ja.com

ディレクトリのすべてのファイルとフォルダのアクセス許可を644/755に変更する

chmodコマンドプロンプトでlinuxを使用して、すべてのファイルを644に、すべてのフォルダを755に変更する方法を教えてください。 (ターミナル)

161

1つの方法はfindを使うことです。

ディレクトリ用

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

ファイル用

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

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

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

これは基本的には

changeファイルmodes -Rに再帰的に与えることで:

  • user:read、writeおよびeXecuteの許可
  • groupおよびotherユーザー:readおよびeXecute権限。ただし-write権限は付与されません。

Xはディレクトリを実行可能にしますが、既に検索可能/実行可能でない限りファイルにはしません。

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

詳細についてはman chmodを確認してください。

参照してください: ファイルを除くすべてのディレクトリを(再帰的に)chmodするには? SUで==

92
kenorb

私が思い付くことができる最も短いものは、次のとおりです。

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. Rw_r__r__を取得するために、所有者にwを追加してください(0644)
  3. ディレクトリ(dirの場合は0755、ファイルの場合は0644)の場合は、すべてに対してexecuteを設定します。

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

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

a = rはディレクトリからxを削除するので、chmodはそれらを再帰することはできません。)

26
John Allsup

これは私のために働いた:

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

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

chmod -R 644 dirName
chmod -R +X dirName

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

7
Mark D

次のようにして、両方を単一パスで実行します。

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

のように、タイプf ORタイプdを見つけ、最初のファイルを...そして次のディレクトリをdirにします。具体的には:

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

黙って動作させたい場合は--changesを省略してください。

6
mza

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 {} \;

私はテストしました...それは動作します!

2