如何创建用户并授予其对 /etc/shadow 文件的读取权限?

如何创建用户并授予其对 /etc/shadow 文件的读取权限?

我想授予我的 Web 服务器用户 (nginx) 对 /etc/shadow 文件的读取权限,并确认我为此采取的步骤。我使用的系统是 CentOS 7。

  1. 首先我创建了一个名为 shadow 的组:groupadd shadow
  2. 然后我将 Web 服务器用户(nginx)添加到组 shadow:usermod -aG shadow nginx
  3. 然后我将所有者更改为root,并将文件组所有者更改为组shadow:chown root:shadow /etc/shadow
  4. 然后我允许 shadow 组中所有用户具有读取 /etc/shadow 文件的权限:chmod g+r /etc/shadow

完成这些步骤后,我运行ls -l /etc/shadow并看到以下输出

----r-----. 1 root shadow 1390 8月30日 12:51 /etc/shadow

我遵循的这些步骤正确吗?请告诉我,如果需要,我可以提供更多信息。

答案1

更改如此重要的文件的所有者组甚至可能会破坏某些东西,这是危险的

实现此目的的正确安全方法是使用 POSIX ACL:

setfacl -m u:special_user:r /etc/shadow

这里的另一个问题是,你把这个权利给了Nginx/etc/shadow,一个 Web 服务器。我猜想它运行着一些 Web 应用程序。而从 Web 应用程序直接访问是非常糟糕的主意。

这看起来可能适得其反,但所有严肃的系统都是这样做的:它们包括私人安全代理服务它执行所有安全检查,并且只有 Web 前端可以与此代理服务通信以访问敏感数据或执行其他敏感操作。例如,这是 Proxmox VE 的构建方式:有一个执行危险操作的 pvedaemon,而 pveproxy(Web 服务器)仅在需要执行此类操作时才与 pvedaemon 通信。

第三个问题是您根本无法访问此文件。您打算做什么?此文件是 PAM 套件的一部分。如果某些系统身份验证被修改,使其不使用影子文件,或者被移动,该怎么办?您应该使用 PAM 库调用,它将为您完成所有这些工作。

答案2

这看起来像是

chmod g=r /etc/shadow

并不是

chmod g+r /etc/shadow

也就是说,您似乎不小心使用了等号而不是加号。

编辑: 我刚刚仔细检查了我的系统,我的文件的权限/etc/shadow如下所示:

`----------. 1 root root 1183 20 Aug 11.53 /etc/shadow`

因此看起来您的权限是符合预期的!

相关内容