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


54

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

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

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

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

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

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


12
これをここに残すだけです。Webサーバーで777を使用しないでください。質問するより良い質問は、「777権限を使用せずにWebサーバーを動作させるにはどうすればよいですか?」です。
マルコセッピ

12
申し訳ありませんが、それは悪い習慣であり、私はこれに答えることを拒否します:)希望のeveyoneが同意します:)
リンツウィンド

回答:


90

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

mkdir -m 777 dirname

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

sudo chmod -R 777 /var/www

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


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

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

sudo adduser yourusername group

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

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


4
これはあなたが要求したことをしますが、最初にこれを読んでください。なぜ/ var / wwwにchmod 777がないのか実際には推奨されてません。
ウォーレンヒル

8
悪い習慣の方法で人々を助けないでください。ユーザーにグループwww-dataまたはapacheにユーザーを追加することで、その方法を説明していただければ幸いです;)
Rinzwind

4
教育が最初になります。人々がマシンを台無しにするのを助けることはLinuxのやり方ではありません。ですから、私はあなたに強く反対します。
リンツウィンド

2
質問者は、これはテスト専用であると言っていました。開発側が簡単にアクセスできるようにして、より迅速に作業できるようにしたいことは間違いなく理解できます。私は彼に、実稼働サーバーでこれを行うほど愚かではないという疑いの恩恵を与えます。
ダン

1
@ dan08テストには、ホームディレクトリの使用など、より良い方法があります。askubuntu.com/questions/46331/…およびkimbriggs.com/computers/computer-notes/linux-notes/…を参照してください。これらの目標を達成するための安全な方法があります;)
パンサー

7

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 

4
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;

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

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


1
このため+1はアップデートONLYフォルダやファイルではないことを唯一の答えである
janmyszkier

3

公共サービスの案内:


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


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

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

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

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

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

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

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

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

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

Webサーバーがそのディレクトリを読み取れない理由を追跡します(ヒント:あなたのホームディレクトリが誰でも読めるわけではないからでしょう。そのwwwディレクトリを家の外に/ var / wwwや/ srvのような場所に移動します)。


0

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.