2010-11-08 17:31:41 +0000 2010-11-08 17:31:41 +0000
11
11

1つのコマンドでディレクトリのファイルパーミッションを変更する方法

Unixで1つのコマンドでディレクトリのすべてのファイルパーミッションを変更するにはどうすればいいですか?

回答 (3)

21
21
21
2010-11-08 17:40:58 +0000

ファイルやディレクトリのエントリのパーミッションを再帰的でない方法で変更するには、chmodコマンドを使用してください(具体的なオプションについては man chmod を参照してください):

chmod +x dir # Set a directory to be listable
chmod +x file # Set a file to be executable

ファイル/ディレクトリの所有者を再帰的に変更するには(すべての子孫に影響します):

chown -R username dir # Recursively set user
chown -R username:groupname dir # Recursively set user and group

ディレクトリ内のすべてのファイルのパーミッションビットを再帰的に変更するには、644コマンドを使用してください。

find dir -type f -exec chmod 644 {} ';' # make all files rw-r-r-

すべてのディレクトリのパーミッションビットを変更する。

find dir -type d -exec chmod 755 {} ';' # make all directories rwxr-xr-x

これだけでもできるといいですね。

chmod -R 755 dir

ただし、これには問題があります。ファイルとディレクトリを同じように扱ってしまうのです。上記のコマンドはディレクトリをリスト化し、すべてのユーザが読めるようにしますが、すべてのファイルを実行可能にします。

$ chmod -R 644 x2
chmod: cannot access `x2/authors.html': Permission denied
chmod: cannot access `x2/day_of_week.plot': Permission denied
chmod: cannot access `x2/day_of_week.dat': Permission denied
chmod: cannot access `x2/commits_by_year.png': Permission denied
chmod: cannot access `x2/index.html': Permission denied
chmod: cannot access `x2/commits_by_year.plot': Permission denied
chmod: cannot access `x2/commits_by_year_month.plot': Permission denied
chmod: cannot access `x2/files_by_date.png': Permission denied
chmod: cannot access `x2/files.html': Permission denied
...

644 に変更すると、別の問題が発生します:

0x1&

問題は、sudo がディレクトリリストビットを削除していることで、この副作用でファイルツリーの探索ができなくなっていることです。chmod -R を使用することでこの問題を回避することができますが、root 以外のユーザには全く役に立たないディレクトリができてしまいます。

要するに、chmod -R g-r はいくつかのケース(例: -x)では問題なく動作しますが、0x6& ビットをいじりたい場合には動作しないということです。

6
6
6
2010-11-08 17:34:48 +0000

chmod は、ファイルやディレクトリのパーミッションを再帰的に変更することを意味する -R フラグを持っています。

大文字の ‘X’ を使って、フォルダに対して正しいことをすることができます: ‘X’ = “ファイルがディレクトリであるか、あるユーザに対して既に実行権限を持っている場合にのみ実行/検索を行う”

例えば、次のようにします: chmod -R ug=rwX,o-rwx …

とすると、ツリー全体が各ファイルの所有者とグループにアクセス可能になり、他の誰もアクセスできなくなります。既に実行可能なファイルはその後も実行可能であり、すべてのディレクトリにはユーザとグループのための ‘x’ が付けられ、他の人のためのものではありません。

3
3
3
2012-08-01 07:10:21 +0000
chmod -R <file permission> *

chmodのマニュアルページより。

-R, --recursive
              change files and directories recursively

chmod-Rスイッチを併用して0x6&を使用してください。

ファイルパーミッションは777, 755, 644などのように変更することができます。

関連する質問

10
37
7
14
9