web-dev-qa-db-ja.com

Linuxで1つの手順でフォルダとそのすべてのサブフォルダとファイルに対するアクセス権を変更するにはどうすればよいですか?

私はLinuxのワンステップ(コマンド)でフォルダとそのすべてのサブフォルダとファイルのアクセス権を変更したいと思います。

私はすでに下記のコマンドを試してみましたが、それは言及されたフォルダに対してのみ機能します:

chmod 775 /opt/lampp/htdocs

chmod 755、およびサブフォルダーやファイルを含むそのすべての内容に/opt/lampp/htdocsを設定する方法はありますか?

また、将来、htdocs内に新しいフォルダーやファイルを作成した場合、そのアクセス許可を自動的に755に設定する方法はありますか。

私もこのリンクを見ました:

http://stackoverflow.com/questions/3740187/how-to-set-default-chmod-in-linux-terminal

1546
Adam

chmod -R 755はこれらのパーミッションをツリー内のすべてのファイルとサブフォルダーに設定するという点で他の答えは正しいです。 しかし、なぜあなたはあなたがしたいのですか ?ディレクトリには意味があるかもしれませんが、なぜすべてのファイルに実行ビットを設定するのでしょうか。

あなたが本当にしたいのは、ディレクトリを755に設定し、ファイルをそのままにするか644に設定することです。これには、findコマンドを使用できます。例えば:

すべてのディレクトリを755(drwxr-xr-x)に変更するには

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

すべてのファイルを644(-rw-r--r--)に変更するには

find /opt/lampp/htdocs -type f -exec chmod 644 {} \;
2608
WombleGoneBad

-Rオプションを確認してください。

chmod -R <permissionsettings> <dirname>

将来的には、最初にmanページをチェックすることで多くの時間を節約することができます。

man <command name>

だからこの場合:

man chmod
709
Steve Robillard

すべてのファイルのアクセス権をa+rに、すべてのディレクトリのアクセス権をa+xに設定し、それを完全なサブディレクトリツリーを介して再帰的に設定する場合は、次のようにします。

chmod -R a+rX *

X(つまり、大文字のXであり、小さいx!であることは無視されます)(ファイルが既に誰かに実行可能である場合を除く)は無視されますが、ディレクトリには使用されます。

340
Pete

-Rchmodと一緒に使用して、すべてのファイルおよびサブフォルダーを再帰的にたどることができます。

Sudoは _ lamp _ が現在のユーザによってインストールされているか、他のユーザによってインストールされているかによって異なります。

Sudo chmod 755 -R /opt/lampp/htdocs
122
ravi ranjan

すべてのサブフォルダに(再帰的に)設定するには、-Rを使用します。

chmod 755 /folder -R

そしてumaskを使ってデフォルトを新しいフォルダ/ファイルに設定します。cd/folder umask 755

71
Topera

正しい再帰コマンドは次のとおりです。

Sudo chmod 755 -R /opt/lampp/htdocs

-R:現在のフォルダを含むすべてのサブフォルダを変更します

60
Pramendra Gupta

chmod 755 -R /opt/lampp/htdocsは再帰的にパーミッションを設定します。アクセス許可を設定した後に作成されるこのディレクトリのみにファイルのアクセス許可を自動的に設定する方法はありませんが、umask 022を設定することでシステム全体の既定のファイルアクセス許可を変更できます。

49
sleepynate

スーパーユーザーのnik で与えられた答えを検討し、すべてのファイル/フォルダーに次のように "one chmod"を使用することをお勧めします。

chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)
23
Iam Zesh

つかいます:

Sudo chmod 755 -R /whatever/your/directory/is

ただし、注意してください。あなたが間違ったファイル/フォルダの許可を変更するなら、それは本当にあなたを傷つけることができます。

20
Nate Starner

ディレクトリを775に、ファイルを664に設定する別の方法があります。

find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)

長く見えるかもしれませんが、3つの理由でかなりクールです。

  1. ファイルシステムを2回スキャンするのではなく、1回だけスキャンします。
  2. files の処理方法と directories の処理方法をより適切に制御できます。これは 特殊モード /のような スティッキビット で作業するときに便利ですが、ファイルには適用したくないでしょう。
  3. manページから直接テクニックを使います(下記参照)。

このソリューションと(Peter Mortensenのソリューションのように)2つのfindコマンドを使用した場合のパフォーマンスの違い(あるとしても)を確認していないことに注意してください。しかし、マニュアルの中に似たような例を見ておくことはお勧めです。

man findページからの例:

find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)

Traverse the filesystem just once, listing setuid files and  direc‐
tories into /root/suid.txt and large files into /root/big.txt.

乾杯

19
chrisfargen

chmod -R 755 directory_nameは動作しますが、どのようにして新しいファイルを755に保存しますか?ファイルの権限がデフォルトの権限になります。

11
Sanchit Gupta

あなたは適切なファイルとディレクトリがchmodされている/それらのパーミッションが適切であることを確認したいです。あなたが望むすべてのディレクトリに対して

find /opt/lampp/htdocs -type d -exec chmod 711 {} \;

そして、JavaScript、CSS、HTMLなど、すべての画像について実行するべきではありません。だから使う

chmod 644 img/* js/* html/*

しかし、すべてのロジックコード(たとえばPHP code)に対して、ユーザーがそのコードを見ることができないように権限を設定する必要があります。

chmod 600 file
10
NikolaiDante

Mac OS X 10.7(Lion)の場合、次のとおりです。

chmod -R 755 /directory

そしてそう、他のすべてが言うように、これをするとき注意してください。

7
wmartin

私はAdamが/opt/lampp/htdocsディレクトリを操作しようとしているすべてのプロセスのumask値を変更する方法を求めていたと思います。

ユーザーファイル作成モードマスク(umask)は、新しく作成されたファイルに対するファイル許可を決定するために使用されます。新しいファイルに対するデフォルトのファイル許可を制御するために使用できます。

したがって、ファイルを/opt/lampp/htdocsにアップロードするために何らかのftpプログラムを使用する場合は、必要なumaskを使用するようにftpサーバーを構成する必要があります。

例えばphpによってファイル/ディレクトリが作成される場合、あなたはphpコードを修正する必要があります。

<?php
umask(0022);
// other code
?>

bashセッションから新しいファイル/フォルダを作成する場合は、シェルプロファイルにumask値を設定することができます。〜/ .bashrcまたはすべてのユーザーに対して/etc/bashrcまたは/etc/profileファイルにumaskを設定することができます。以下をファイルに追加します。umask 022

Sample umask Values and File Creation Permissions
If umask value set to   User permission     Group permission     Others permission
000                         all              all                   all
007                         all              all                   none
027                         all          read / execute            none

そして既に作成されたファイルのパーミッションを変更するためにあなたはfindを使うことができます。お役に立てれば。

6
Viktor

ファイルを見つけてそれらにchmodを適用することには2つの答えがあります。最初のものはファイルのfindであり、(@WombleGoneBadによって示唆されるように)それが見つけたときにchmodを適用します。

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

2番目の解決策は、findコマンドですべてのファイルのリストを生成し、このリストをchmodコマンドに提供することです(@lamgeshで推奨されているように)。

chmod 755 $(find /path/to/base/dir -type d)

findコマンドによって返されるファイルの数が少ない限り、これらのバージョンはどちらもうまく機能します。 2番目の方法は、最初の方法よりも見やすく、読みやすくなっています。多数のファイルがある場合、2番目のソリューションはエラーを返します。Argument list too long.

だから私の提案は

  1. すべてのファイルとディレクトリのアクセス権を一度に変更したい場合はchmod -R 755 /opt/lampp/htdocsを使用してください。
  2. 使用しているファイルの数が非常に多い場合はfind /opt/lampp/htdocs -type d -exec chmod 755 {} \;を使用してください。 -type xオプションは特定の種類のファイルのみを検索します。ここで、dはディレクトリの検索に、fはファイルの検索に、lはリンクの検索に使用されます。
  3. それ以外の場合はchmod 755 $(find /path/to/base/dir -type d)を使用してください
  4. どんな状況でも最初のものを使うほうが良い
4
Prabhu

とても簡単です。

ターミナルでファイルマネージャに行きます。例:Sudo nemo/opt/に行き、 プロパティ→権限 をクリックします。そして その他 。最後に、作成および削除し、読み書きするためにファイルアクセスに変更して適用ボタンをクリックします。

2
Debian.