web-dev-qa-db-ja.com

/ var / wwwのすべてのサブフォルダーをchmod 777するにはどうすればよいですか?

/var/www/home/user/wwwにバインドされているWebサーバーとFTPサーバーを実行しています。

両方のディレクトリをchmod 777に設定します(テスト専用であるため問題ありません)。

ファイルを/home/user/wwwにアップロードできますが、新しいディレクトリを作成するときは常に、そのフォルダーでchmod 777を実行する必要があります。

それ以外の場合、参照しようとすると、エラーメッセージが表示されます

このサーバーの/ test /にアクセスする権限がありません。

/var/www内のすべてのサブフォルダーに誰でもアクセスできるようにする方法はありますか?または、アクセス許可を自動的に777に設定できますか?毎回chmod 777と入力しなければならないのは面倒です。

53
user1645034

これは悪い習慣ですが、うまくいけば開発のためにこれを使用するか、別の正当な理由があります。 -mオプションを使用してディレクトリを作成するときに、権限を指定できます。

mkdir -m 777 dirname

または、アクセス許可を再帰的に設定できます。

Sudo chmod -R 777 /var/www

これらのいずれかを使用する前に、ファイルシステムにアクセスできるようにするかどうかを本当に検討してください。


編集:Rinzwindが述べたように、ここはあなたが望むことを達成するためのより良い方法です。

/var/wwwディレクトリを所有しているグループを確認し、そのグループにユーザーを追加します。

Sudo adduser yourusername group

グループはおそらくwww-dataです。

その後、許可を775に設定しても問題ありません。

86
Dan

Unixのファイルとディレクトリには、読み取り(r)、書き込み(w)、実行(x)の3種類の許可があります。各アクセス許可は、3つのユーザーカテゴリごとにonまたはoffになります。ファイルまたはディレクトリの所有者。所有者と同じグループの他の人々。その他すべて。ファイルのモードを変更するには、chmodコマンドを使用します。一般的な形式はchmod X @ Y file1 file2 ...

chmod a-w file (removes all writing permissions)
chmod o+x file (sets execute permissions for other (public permissions))
chmod u=rx file        (Give the owner rx permissions, not w)
chmod go-rwx file      (Deny rwx permission for group, others)
chmod g+w file         (Give write permission to the group)
chmod a+x file1 file2  (Give execute permission to everybody)
chmod g+rx,o+x file    (OK to combine like this with a comma)

u = user that owns the file
g = group that owns the file
o = other (everyone else)
a = all (everybody)

r = read aces to the file
w = write access
x = execute (run) access 
7
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;

異なる許可を持つすべてのファイルを作成するftpの場合、ftpdのumask、そのデーモンの起動方法を検索することができます。

このサイトをご覧ください https://linuxaria.com/article/linux-Shell-understanding-umask-with-examples

4
Jose Pla

公共サービスの発表:


問題を修正するためにchmod 777を使用しないでください


  • 一般に公開されているサービス、特にWebアプリケーション(PHPなど)を実行すると、セキュリティ上の大きなリスクになります。

    OSのセキュリティモデルでは、ファイルを変更できないように、多くのサービス(Webサーバーなど)が低い特権で実行されることを想定しています。ファイルに777を設定すると、この設計が崩れます。

    リモートユーザーは、ファイルに書き込みまたはファイルをアップロードし、サーバー(またはシステム上の他のプロセス)をだまして読み取りまたは実行させることができます。スクリプトまたはソフトウェアには、これを可能にする欠陥がある場合があります。誰でも書き込み可能なディレクトリがある場合、これが発生する可能性のあるすべての方法をロックダウンすることは非常に困難です。

  • 特定のシステムディレクトリ(/ usr、/ etc、/ varなど)で使用すると、驚くほどシステムが破損する可能性があります。

    一部の重要なシステムファイルを実行するには、setuid/setgid権限などの特別な権限が必要です。たとえば、Sudo。システム自体によって設定されたディレクトリおよびファイルのファイル許可を変更しないでください。

  • 元に戻し、古い権限をすべて戻す方法はありません。

    つまり、以前にさまざまなアクセス許可を持つファイルとフォルダーがあった場合、それらの特定のアクセス許可に戻る方法はありません-それらをすべて同じものに変更するだけで、特定のファイルに必要な特定のアクセス許可設定が失われる可能性があります。

  • 達成したいことを達成するためのより適切な方法が常にあります。

この場合、Webサーバーでreadディレクトリのみができるようにしたいようです。世界で書き込み可能な許可を与えることは、あなたがする必要がある以上の方法です。

Webサーバーがそのディレクトリを読み取れない理由を追跡します(ヒント:おそらく、ホームディレクトリが誰でも読めるわけではないためです。World-Readableは、World-Writableよりもはるかに安全です-ホームディレクトリを755などに設定します。そのwwwディレクトリを家の外で/ var/wwwや/ srvのような場所に移動します)。

3
thomasrutter

これはうまくいきません。

Sudo chmod -f 777 /path/to/your/file/or/directory

-fも使用する必要があります。

Sudo chmod -R -f 777 /path/to/your/file/or/directory
0

あなたが満足している別のファイルからパーミッションや所有権をコピーしたい場合は、Sudo chmod --reference = path/to/file/to/reference path/to/file/you/want /を使用してコピーできます。 to/change/permissino/to

ファイルの所有権についても同じことができます。

0
Amir Khalil