用户 www-data 拥有“/shared/data”目录,并且对“/shared”目录拥有完全权限。
root@cloud:/shared# ls -al
total 28
drwxrwxrwx 4 root root 4096 Sep 16 19:06 .
drwxr-xr-x 21 root root 4096 Sep 16 00:44 ..
drwxrwx--- 21 www-data www-data 4096 Nov 7 16:02 data
drwxrwxrwx 2 root root 4096 Sep 16 00:22 @Recycle
root@cloud:/# ls -al /
...
drwxrwxrwx 4 root root 4096 Sep 16 19:06 shared
...
此目录中没有任何其他用户拥有的文件。
for i in $(find /shared/data); do stat -c "%U %G" ''"$i"'' >> /tmp/output.txt; done
cat /tmp/output.txt | sort -u
www-data www-data
Selinux 设置为宽容。
但是,当我运行时:
root@cloud:/shared# sudo -u www-data ls -al /shared/
ls: cannot open directory '/shared/': Permission denied
root@cloud:/shared# sudo -u www-data ls -al /shared/data/
ls: cannot access '/shared/data/': Permission denied
位置“/shared”通过“/etc/fstab”中的以下条目通过 NFS 安装。
server.fully.qualified.domain:/shared/data /shared/ nfs4 _netdev,nofail,rw 0 0
这到底是怎么回事?其实几周前它就正常工作了,而且我没有做任何重要更改。
审计日志没有显示任何有趣的内容,syslog 没有显示任何有趣的内容,dmesg 没有显示任何有趣的内容。
Pathllld显示:
root@cloud:/# sudo -u www-data /pathlld/pathlld /shared/data/
drwxr-xr-x 22 root root 4096 Nov 7 23:23 /
/dev/mapper/ubuntu--vg-ubuntu--lv on / type ext4 (rw,relatime)
drwxrwxrwx 4 root root 4096 Sep 16 19:06 /shared
server.fully.qualified.domain:/shared/data on /shared type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.4,local_lock=none,addr=192.168.1.2,_netdev)
/bin/ls: cannot access '/shared/data': Permission denied
root@cloud:/# sudo -u www-data /pathlld/pathlld /shared
drwxr-xr-x 22 root root 4096 Nov 7 23:23 /
/dev/mapper/ubuntu--vg-ubuntu--lv on / type ext4 (rw,relatime)
drwxrwxrwx 4 root root 4096 Sep 16 19:06 /shared
server.fully.qualified.domain:/shared/data on /shared type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.4,local_lock=none,addr=192.168.1.2,_netdev)
答案1
答案是 NFS 中有一个安全功能,可以在 NFS 服务器和客户端上检查用户权限。将 www-data 用户添加到服务器并使两个服务器之间的用户 ID 和组 ID 匹配,可以使其再次工作。实际上有人从 NFS 服务器中删除了 www-data 用户,这使得它突然停止工作(而它本来可以正常工作)。