web-dev-qa-db-ja.com

Linux:権限をディレクトリのみに設定する

Apacheのhtdocsディレクトリの権限を特定のグループに、特定の読み取り/書き込み/実行で変更する必要があります。

ディレクトリには775の権限が必要であり、ファイルには664の権限が必要です。

htdocsを再帰的に実行すると、すべてのファイルとディレクトリが664に変更されます。

手動でディレクトリを変更したくありません。

ファイルまたはディレクトリのみを変更する方法はありますか?

22
radicaled

検索の-typeオプションは、アクションをファイルとディレクトリに制限します。使用 -oオプションを使用すると、さまざまなタイプの代替アクションを指定できるため、タイプごとに個別に実行するのではなく、findを1回実行するだけで済みます。

find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +
29
Barmar

chmodは実際にこれを行うことができます。 Xシンボリック権限は、「意味があれば実行する」ことを意味します。これは一般に、ファイルではなくディレクトリに対して意味します。だから、あなたは使うことができます:

chmod -R u=rwX,go=rX /path/to/htdocs

唯一の潜在的な問題は、プレーンファイルのいずれかがすでに実行セットを持っている場合、chmodはそれが意図的であると想定し、それを保持することです。

49
Gordon Davisson

findを使用してディレクトリを検索し、それらにchmodを適用します。

find -type d | xargs chmod 775

ファイルにはタイプfを使用します。

find -type f | xargs chmod 775
4
Amit Verma

試してください:

find htdocs -type d -exec chmod 775 {} +
2
RicardoE

私はGordonが提供するソリューションに似たものを使用します。

chmod -R ug=rw,o=r,a+X /path/to/folder/

一部のファイルに実行権限が以前に設定されていたとしても、フォルダには常に775、ファイルには664を設定する必要があります。

2
genna

上記のGordonの答えは正しいですが、ディレクトリツリーへのアクセスをロックダウンしようとすると、所有者が実行できるスクリプトと、大文字のXを付与された人が実行できるスクリプトが残ります。

使用する

find <path> -type d -exec chmod 775 {} +

または

find <path> -type d -exec chmod 755 {} +

より安全です。

2
MartinMlima