我有这个:
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
我认为您需要在获取文件本身之前验证路径中涉及的每个文件夹的权限。
许多 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
我希望这有帮助。