/var/www
が/home/user/www
にバインドされているWebサーバーとFTPサーバーを実行しています。
両方のディレクトリをchmod 777
に設定します(テスト専用であるため問題ありません)。
ファイルを/home/user/www
にアップロードできますが、新しいディレクトリを作成するときは常に、そのフォルダーでchmod 777
を実行する必要があります。
それ以外の場合、参照しようとすると、エラーメッセージが表示されます
このサーバーの/ test /にアクセスする権限がありません。
/var/www
内のすべてのサブフォルダーに誰でもアクセスできるようにする方法はありますか?または、アクセス許可を自動的に777
に設定できますか?毎回chmod 777
と入力しなければならないのは面倒です。
これは悪い習慣ですが、うまくいけば開発のためにこれを使用するか、別の正当な理由があります。 -m
オプションを使用してディレクトリを作成するときに、権限を指定できます。
mkdir -m 777 dirname
または、アクセス許可を再帰的に設定できます。
Sudo chmod -R 777 /var/www
これらのいずれかを使用する前に、ファイルシステムにアクセスできるようにするかどうかを本当に検討してください。
編集:Rinzwindが述べたように、ここはあなたが望むことを達成するためのより良い方法です。
/var/www
ディレクトリを所有しているグループを確認し、そのグループにユーザーを追加します。
Sudo adduser yourusername group
グループはおそらくwww-data
です。
その後、許可を775に設定しても問題ありません。
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
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;
異なる許可を持つすべてのファイルを作成するftpの場合、ftpdのumask、そのデーモンの起動方法を検索することができます。
このサイトをご覧ください https://linuxaria.com/article/linux-Shell-understanding-umask-with-examples
公共サービスの発表:
一般に公開されているサービス、特にWebアプリケーション(PHPなど)を実行すると、セキュリティ上の大きなリスクになります。
OSのセキュリティモデルでは、ファイルを変更できないように、多くのサービス(Webサーバーなど)が低い特権で実行されることを想定しています。ファイルに777を設定すると、この設計が崩れます。
リモートユーザーは、ファイルに書き込みまたはファイルをアップロードし、サーバー(またはシステム上の他のプロセス)をだまして読み取りまたは実行させることができます。スクリプトまたはソフトウェアには、これを可能にする欠陥がある場合があります。誰でも書き込み可能なディレクトリがある場合、これが発生する可能性のあるすべての方法をロックダウンすることは非常に困難です。
特定のシステムディレクトリ(/ usr、/ etc、/ varなど)で使用すると、驚くほどシステムが破損する可能性があります。
一部の重要なシステムファイルを実行するには、setuid/setgid権限などの特別な権限が必要です。たとえば、Sudo。システム自体によって設定されたディレクトリおよびファイルのファイル許可を変更しないでください。
元に戻し、古い権限をすべて戻す方法はありません。
つまり、以前にさまざまなアクセス許可を持つファイルとフォルダーがあった場合、それらの特定のアクセス許可に戻る方法はありません-それらをすべて同じものに変更するだけで、特定のファイルに必要な特定のアクセス許可設定が失われる可能性があります。
達成したいことを達成するためのより適切な方法が常にあります。
この場合、Webサーバーでreadディレクトリのみができるようにしたいようです。世界で書き込み可能な許可を与えることは、あなたがする必要がある以上の方法です。
Webサーバーがそのディレクトリを読み取れない理由を追跡します(ヒント:おそらく、ホームディレクトリが誰でも読めるわけではないためです。World-Readableは、World-Writableよりもはるかに安全です-ホームディレクトリを755などに設定します。そのwwwディレクトリを家の外で/ var/wwwや/ srvのような場所に移動します)。
これはうまくいきません。
Sudo chmod -f 777 /path/to/your/file/or/directory
-f
も使用する必要があります。
Sudo chmod -R -f 777 /path/to/your/file/or/directory
あなたが満足している別のファイルからパーミッションや所有権をコピーしたい場合は、Sudo chmod --reference = path/to/file/to/reference path/to/file/you/want /を使用してコピーできます。 to/change/permissino/to
ファイルの所有権についても同じことができます。