我在一台机器上安装了 nginx,但网站无法正常工作,因为 nginx 使用的用户(www-data
)无权访问包含网站内容的文件夹。
我决定将用户添加www-data
到该root
组,该组是该文件夹的所有者,但是当我尝试统计该文件夹时仍然收到权限被拒绝的提示。
该文件夹位于以下位置/root/sources
,当前权限如下:
drwxr-xr-x 10 root root 4096 Feb 11 13:53 sources
(基本上,对于组内的用户来说,它具有读取权限)
我通过运行以下命令将用户添加到组中:
gpasswd -a www-data root
并运行以下命令来验证是否已正确添加:
root@pablomatiasgomez:~# grep www-data /etc/group
root:x:0:www-data
www-data:x:33:
现在,权限的典型问题是任何父文件夹都没有正确的权限,但就我而言,它们是正确的:
root@pablomatiasgomez:~# sudo -u www-data stat /root
File: /root
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fc01h/64513d Inode: 1525 Links: 11
Access: (0700/drwx------) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-02-11 13:56:46.300094553 -0300
Modify: 2023-02-11 13:41:37.453201896 -0300
Change: 2023-02-11 13:41:37.453201896 -0300
Birth: 2022-10-13 23:10:34.424934650 -0300
root@pablomatiasgomez:~# sudo -u www-data stat /root/sources
stat: cannot statx '/root/sources': Permission denied
我不知道还有什么问题。我还尝试向组添加写权限,但结果仍然一样。
答案1
好吧,找到问题了。尽管此命令显示www-data
可以访问/root
:
root@pablomatiasgomez:~# sudo -u www-data stat /root
File: /root
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fc01h/64513d Inode: 1525 Links: 11
Access: (0700/drwx------) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-02-11 13:56:46.300094553 -0300
Modify: 2023-02-11 13:41:37.453201896 -0300
Change: 2023-02-11 13:41:37.453201896 -0300
Birth: 2022-10-13 23:10:34.424934650 -0300
但实际上并非如此(如果无法访问,我不知道 stat 为什么会起作用)
但检查权限后/root
发现该组对其没有任何权限:
drwx------ 11 root root 4096 Feb 11 13:41 root
添加读取和执行权限后,一切正常:
chmod g+rx /root