由于权限被拒绝错误,Sudo mkdir 失败

由于权限被拒绝错误,Sudo mkdir 失败

我编写了一个脚本,将一些文件从一个地方复制到另一个地方,由于我没有源文件夹的权限,所以我尝试使用 sudo 运行它。问题是现在目标文件夹的创建失败。这是一个简单的测试用例:

在我的主目录中,以下内容有效:

mkdir testDir

但这由于权限被拒绝错误而失败

sudo mkdir testDir2

我的主目录有755权限,是我自己的。

我跑过去sudo groups发现果然那群root人在那里,但奇怪的是却users没有。还groups以我自己的身份运行表明我不在 sudo 组中。

有什么想法吗?为什么使用 sudo 运行时无法写入我的主文件夹?

答案1

这是由于 NFS 服务器上的“根挤压”造成的。从exports(5)手册页(强调我的):

nfsd 对服务器计算机上的文件的访问控制基于每个 NFS RPC 请求中提供的 uid 和 gid。用户期望的正常行为是她可以访问服务器上的文件,就像访问普通文件系统一样。这要求在客户端和服务器计算机上使用相同的 uid 和 gid。这并不总是正确的,也不总是可取的。

通常,在访问 NFS 服务器上的文件时,不希望客户端计算机上的 root 用户也被视为 root 用户。为此,uid 0 通常会映射到不同的 id:所谓的匿名或无人 uid。这种操作模式(称为“根挤压”)是默认模式,可以使用 no_root_squash 关闭。

换句话说,允许sudoNFS 客户端上的 root(例如,在运行时)像 NFS 服务器上的 root 一样修改文件和文件属性通常存在安全风险。这实际上会使客户端上的 root 等同于服务器上的 root,并允许恶意客户端接管服务器。

来自RHEL 6 安全指南

如果使用 no_root_squash,远程 root 用户就能够更改共享文件系统上的任何文件,并留下受特洛伊木马感染的应用程序,以便其他用户无意中执行。

相关内容