允许任何用户查看所有服务的状态是否安全?

允许任何用户查看所有服务的状态是否安全?

我想让每个 Linux 用户看到所有 systemd 服务的状态。

我为 /etc/sudoers 文件创建了以下几行:

ALL     ALL = NOPASSWD: /usr/bin/systemctl is-active *
ALL     ALL = NOPASSWD: /usr/bin/systemctl is-enabled *
ALL     ALL = NOPASSWD: /usr/bin/systemctl status *

是否存在我目前可能看不到的安全风险?

事实上,每个 Linux 用户都可以看到所有服务的状态,这对我来说并不构成安全风险。

答案1

你做错了。你应该使用 polkit 设置策略,因为 systemctl 二进制文件本身会询问系统是否允许用户执行操作。例如

/etc/polkit-1/rules.d/50-default.rules:

polkit.addAdminRule(function(action, subject) {
    return ["unix-group:wheel"]; });

意味着 wheel 组中的任何用户都可以做任何事情(包括服务停止/启动)。还有更多广泛的例子问题代码本身

答案2

所有列出的systemctl命令(statusis-enabledis-active)都可以由任何普通用户调用,无需 root 权限。

这里不需要 sudo。

答案3

它是安全的,只要你运行的是最新版本的 sudo,env_reset 已启用,并且常见的警告

答案4

systemctl status通常调用它less,它允许您使用内置命令将输出写入任何文件名和目录下s。如果通过 sudo 调用,则此文件将以 root 身份创建,并可以覆盖任何现有文件,从而允许非特权用户造成破坏。

更进一步说,如果您的输出包含有效的命令,则可以以 root 身份运行它们(例如,systemctl如果此文件在下创建) 。/etc/cron.hourly

相关内容