web-dev-qa-db-ja.com

「stat」には、すべての権限が設定されているにもかかわらず、「権限が拒否されました」と表示されます

私はこれを持っています:

ls -al /home/my_user/dir1/dir2/file1.txt
-rwxr-xr-x 1 http http 2798 Dec 30 18:18 /home/my_user/dir1/dir2/file1.txt

しかし、私はそれを述べることができません:

Sudo -u http stat /home/my_user/dir1/dir2/file1.txt
stat: cannot stat '/home/my_user/dir1/dir2/file1.txt': Permission denied

どうして? chmod 777 <path>を使わずにそれを修正する方法、もっと適切な方法があります

1
Pappani

ファイル自体にアクセスする前に、パスに含まれる各フォルダーのアクセス許可を確認する必要があると思います。

多くのLinuxディストリビューションでは、デフォルトで/homeディレクトリ内の各フォルダーへのアクセス許可を(0700)(ユーザー自体だけが読み取り/書き込み/実行を許可されている)に設定しています。つまり、ユーザーmy_userがファイル/home/my_user/dir1/dir2/file1.txtとアクセス許可0755ユーザーhttpは、上記のデフォルトのアクセス許可がそれを防ぐため、それを述べることができません。

私の推測では、ls -al /home/my_user/dir1/dir2/file1.txtを実行したときにhttp以外のユーザーがいて、そのユーザーが実際にファイルを読み取ることができたと思います。その場合は、chmodsetfaclなどのツールを使用してすべてのディレクトリの権限を修正する必要があります。

これがお役に立てば幸いです。

3
Manuel Florian