Linux下的目录权限问题

Linux下的目录权限问题

我的 Linux 服务器上有一个 NFS 共享目录。

ls: cannot access file: Permission denied
ls: cannot access res: Permission denied
total 20
d????????? ? ?       ?           ?            ? file
drwx------ 2 root    root    16384 May 19  2015 lost+found
drwxr-x--- 9 lma     lum 4096 Feb 18  2020 lum
d????????? ? ?       ?           ?            ? res

当我尝试更改权限时根用户在目录文件上。

chmod 775 file
chmod: cannot access `file': Permission denied

chown root:root file
chown: cannot access `file': Permission denied

收到错误,Permission denied.请让我知道如何更改目录的权限

答案1

除非使用导出选项导出 NFS 共享,否则NFS 客户端主机的no_root_squashUID 0 ( ) 将映射到NFS 服务器上的UID 65534(或在某些操作系统中)。这可以防止客户端主机的 root 用户在 NFS 共享上创建邪恶的 setuid-root 可执行文件,并利用它们非法获得使用同一共享的其他 NFS 客户端或 NFS 服务器本身的 root 访问权限。rootnobodynfsnobody

奇怪的问号可能表明用户nobody对相关目录只有读取权限,但没有x访问权限。这种组合意味着用户只能读取普通ls目录列表,但无法访问该目录中的任何文件。因此,任何stat(2)获取这些文件的大小/所有权/权限信息的系统调用也将失败。

仅目录fileres显示问号,而lost+foundlum正常显示,可能是由于客户端主机 root 用户所拥有的组成员身份、服务器系统上使用 ACL 或 SELinux 或这些因素的组合造成的。

如果这是问题所在,则无法通过 NFS 修复它。您需要登录 NFS 服务器系统,并在本地访问文件系统。

理想情况下,您应该设计 NFS 共享目录的组分配,以便 NFS 服务器的用户不拥有共享中的任何内容root(除非它应该是显式只读的或所有客户端都无法访问)。

如果必须root在客户端/服务器连接中保留所有权,则可以通过将导出选项添加到 NFS 服务器上的文件no_root_squash中的共享定义中/etc/exports,然后重新导出共享来实现。但如果您这样做,您应该使用noexec,nosuid挂载选项挂载包含 NFS 服务器上共享的文件系统。

相关内容