サーバーからデスクトップ コンピューターにファイルをコピーしようとしています。ファイルを/var/www/html
(Web ページがある場所) に配置し、ダウンロードしようとすると が表示されます403 Forbidden
。ファイルで試してみましたがchmod 777
、問題は解決しません。
何が間違っているのでしょうか、なぜこのエラーが発生するのでしょうか?
答え1
ファイルを Apache ユーザーが所有するように変更する必要があります。デフォルトでは、Apache はユーザーwww-data
(グループ内www-data
) として実行されます。ファイルの所有者を変更するには を使用できますchown
( と一緒に使用する必要がある場合がありますsudo
)。
chown -R www-data:www-data /var/www/html
最後に、ファイルに少しでもApache ユーザーの読み取りおよび実行権限。おっしゃるとおり、これはすでに実行されていますが、すべての権限/ファイル所有者を変更した後、 を実行してすべてが正常であることを確認する必要があります ls -l /var/www/html
。セキュリティ対策として、他のユーザーのすべての権限を削除することも賢明です。
chmod -R 0550 /var/www/html
PHP または書き込みアクセスを必要とする他のスクリプト言語を使用する場合は、上記の権限マスクを次のように変更する必要があることに注意してください0770
。予防策として、必要なディレクトリ(Web サイトのキャッシュ データの書き込み、ファイルのアップロードなど)でのみこのマスクを使用してください。
答え2
私は CentOS 7 + Apache を使用していますが、問題を解決した唯一のコマンドはこれです (以前に chown+chmod を試したため)。
sudo setenforce 0 #SELinuxを無効にする
その後、ファイル (私の場合は anyfile.zip) をダウンロードできますが、攻撃者がコードを記述して実行できるようになる可能性があります。
答え3
おそらくあなたはカーネル有効になっています。現在の目的のためにこれを回避する最も簡単な方法は、問題のファイルを Apache を実行しているユーザー ID に chown することです。