私はこれを持っています:
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>
を使わずにそれを修正する方法、もっと適切な方法があります
?
ファイル自体にアクセスする前に、パスに含まれる各フォルダーのアクセス許可を確認する必要があると思います。
多くのLinuxディストリビューションでは、デフォルトで/home
ディレクトリ内の各フォルダーへのアクセス許可を(0700)(ユーザー自体だけが読み取り/書き込み/実行を許可されている)に設定しています。つまり、ユーザーmy_user
がファイル/home/my_user/dir1/dir2/file1.txt
とアクセス許可0755
ユーザーhttp
は、上記のデフォルトのアクセス許可がそれを防ぐため、それを述べることができません。
私の推測では、ls -al /home/my_user/dir1/dir2/file1.txt
を実行したときにhttp
以外のユーザーがいて、そのユーザーが実際にファイルを読み取ることができたと思います。その場合は、chmod
やsetfacl
などのツールを使用してすべてのディレクトリの権限を修正する必要があります。
これがお役に立てば幸いです。