Lighttpd 静的ファイル サーバー 403 禁止エラー

Lighttpd 静的ファイル サーバー 403 禁止エラー

静的ファイルを提供するために Debian Jessie に lighttpd をインストールしました。USB ドライブは /media/storage にマウントされており、ドキュメント ルートは /media/storage/www です。lighttpd.conf は次のようになります。

server.modules = (
    "mod_access",
    "mod_alias",
    "mod_compress",
    "mod_redirect",
#       "mod_rewrite",
)

server.document-root        = "/media/storage/www/"
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 80


index-file.names            = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny             = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ( "application/javascript", "text/css", "text/html", "text/plain" )

# default listening port for IPv6 falls back to the IPv4 port
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"

通常のユーザー「jurre」でウェブサイトを編集できるようにしたいので、「sudo chown jurre:www-data /media/storage/www」と「sudo chmod 740 /media/storage/www」を実行しました(ファイルの読み取り、書き込み、実行はできますが、ウェブサーバーは読み取りのみ可能です)。もちろん、ログアウトして再度ログインし、その後 lighttpd を再起動しました。セットアップをテストするために「Hello World!」という簡単な index.html を追加しましたが、次のサイトにアクセスすると 403 禁止エラーが表示され続けます。

/media/storage/www で ls -l を実行:

total 8
-rw-r--r-- 1 jurre www-data 58 May 16 16:43 index.html

lighttpd エラー ログも確認しましたが、Web サーバーがシャットダウンされて再起動されたときのみが表示され、ログにエラーはまったく記録されていません。

答え1

ユーザーに 4 つの権限 (ユーザー:グループと権限 740) しかなく、フォルダーに対する実行権限がなく、読み取り (フォルダー名と属性の読み取り) のみであるwwwため、フォルダーにアクセスできません。www-datajurre:www-datawww

フォルダーを実行するということは、フォルダーを開く (ファイルを一覧表示したり、フォルダーに入る) ことを意味するため、フォルダーに対する実行権限が必要です。これは自分のユーザーjurre(権限 7) で実行できますが、www-data実行ビットは設定されていません。

このフォルダーの権限を 750 に変更して、もう一度試してください。

答え2

もう一つのよくある問題は、マシン上で SELinux がアクティブになっていることです。

ディレクトリ ツリーに正しい権限があっても、ディレクトリが SELinux に登録されていない場合は 403 が返されます。

chcon -R -h -t httpd_sys_content_t /absolute/path

これを修正します。

答え3

スーパーペリカン、

上記のコメントに加えて、試してみるといいかもしれません 「sudo chown -R www-data:www-data *」 または「sudo chown -R www-data:www-data /media/storage/www/*」 そのフォルダまたはサブフォルダ内から/メディア/ストレージ/www この方法では、ユーザーではなく Web サーバーがフォルダーとファイルを所有します。

chmodに関しては、次のようなものも試してみてください「sudo chmod -R 755 /media/storage/www/*」 悪例 "chmod -R 775「Web サーバーと物理 OS 自体の間には、ファイル セキュリティのレベルが異なります。chown/chmod は OS レベルでより重要になります。サーバー上のファイルや Web ページの取得にも影響します。」

これが少しでも役に立つことを願います。乾杯。

関連情報