
私の実際の問題は、権限が適切に設定されているにもかかわらず、Nginxがページ(403 Forbidden)をレンダリングできないことです(私の考えでは)。
デフォルトの場所のstackoverflowディレクトリ:
user1@wfe1 ~]$ ls /usr/share/nginx/html/stackoverflow/ -al
total 4
drwxr-xr-x. 2 root root 23 Mar 9 02:59 .
drwxrwxr-x. 4 root www 89 Mar 9 02:59 ..
-rw-r--r--. 1 root root 6 Mar 9 02:59 index.html
ユーザーの場所のstackoverflowディレクトリ:
[user1@wfe1 ~]$ ls stackoverflow/ -al
total 4
drwxr-xr-x. 2 root root 23 Mar 9 02:52 .
drwxr-xr-x. 3 nginx nginx 79 Mar 9 02:51 ..
-rw-r--r--. 1 root root 6 Mar 9 02:52 index.html
構成ファイル:
server{
listen 80;
server_name localhost;
root /usr/share/nginx/html/stackoverflow; #Works
#root /home/user1/stackoverflow; #Doesn't work
index index.html;
}
失敗すると、403 Forbidden エラーが表示されます。問題の原因を見つけるために次のコマンドを使用し、ブラウザを使用して検索しましたが、結果は次のとおりです。
[root@wfe1 user1]# sudo strace -p 9114 -e trace=file
Process 9114 attached
stat("/home/user1/stackoverflow/index.html", {st_mode=S_IFREG|0644, st_size=6, ...}) = 0
open("/home/user1/stackoverflow/index.html", O_RDONLY|O_NONBLOCK) = -1 EACCES (Permission denied)
open("/home/user1/stackoverflow/favicon.ico", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
出力がPermission Deniedとして表示されることがわかります。ファイルにアクセスするためにどのユーザーアカウントが使用されるかを知りたいです。どのように詳細を学ぶことができますか?
新しい権限で質問が修正されました。
答え1
問題は出力で明らかです。
[root@wfe1 user1]# ls -al site3
total 8
drwxr-xr-x. 2 nginx nginx 23 Mar 6 06:12 .
drwx------. 5 user1 user1 4096 Mar 6 06:12 ..
-rwxr-xr-x. 1 nginx nginx 6 Mar 6 06:12 index.html
nginxはファイルとそのファイルを含むディレクトリの両方にアクセスできますが、その権限は親ディレクトリはいdrwx------
、これにより、このディレクトリとすべてのサブディレクトリへのアクセスがブロックされます。
ルートディレクトリを含む各ディレクトリレベルでアクセス権を確認する必要があります。
答え2
を見ると、プロセスの現在のeuidを見ることができます/proc/PID/status
。 euid または uid が 0 の場合は、次のようにしてディレクトリのaudit.log
selinix および POSIX ACL のリストを確認します。getfacl
答え3
list open filesコマンドを使用して、ファイルへの現在のアクセス権を表示できます lsof
。以下はいくつかのサンプル出力です。
# lsof
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 8,1 4096 2 /
init 1 root txt REG 8,1 124704 917562 /sbin/init
init 1 root 0u CHR 1,3 0t0 4369 /dev/null
init 1 root 1u CHR 1,3 0t0 4369 /dev/null
init 1 root 2u CHR 1,3 0t0 4369 /dev/null
init 1 root 3r FIFO 0,8 0t0 6323 pipe
例2 - + D =再帰的:
# lsof +D /var/log/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 488 syslog 1w REG 8,1 1151 268940 /var/log/syslog
rsyslogd 488 syslog 2w REG 8,1 2405 269616 /var/log/auth.log
console-k 144 root 9w REG 8,1 10871 269369 /var/log/ConsoleKit/history
Man lsof
いくつかの追加の例を見てみましょう。