“stat”表示“权限被拒绝”,即使所有权限都已到位

Pap*_*ani 3 linux filesystems permissions directory

我有这个:

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
Run Code Online (Sandbox Code Playgroud)

但是,我不能说:

sudo -u http stat /home/my_user/dir1/dir2/file1.txt
stat: cannot stat '/home/my_user/dir1/dir2/file1.txt': Permission denied
Run Code Online (Sandbox Code Playgroud)

为什么?如何在无需解决的情况下解决这个问题,chmod 777 <path>有没有更合适的方法

?

小智 6

我认为您需要在访问文件本身之前验证路径中涉及的每个文件夹的权限。

许多Linux发行版默认权限为(0700)(意味着只有用户本身被允许读/写/执行),对/home目录中的每个文件夹,这意味着如果用户my_user拥有/home/my_user/dir1/dir2/file1.txt具有该权限0755的文件,则用户http无法统计因为我上面提到的默认权限会阻止它。

我的猜测是,当您ls -al /home/my_user/dir1/dir2/file1.txt与其他用户一起执行was 时http,该用户实际上可以读取该文件。如果是这种情况,您必须使用工具更正所有目录的权限,chmod或者setfacl如果您想更具体一些。

我希望这有帮助。