我最近发现一个问题,显然您可以“绕过”知道根用户密码的需要,而直接以根用户身份切换。因此,如果您是管理员,您可以拥有一些具有 sudo 组级别权限的用户。如果不给他们 root 密码,他们将无法登录或切换到 root 用户(正常情况 ofc)。现在他们将需要输入 sudo 命令来执行任何 root 管理级别的命令或操作。但他们也可以只执行 sudo su 或 sudo -i 来切换到 root 用户,而无需知道 root 用户密码。现在我有两个大问题:
- 在我看来(如果我错了,请纠正我)——这对于安全来说是一个大问题,并且也违背了 Linux 结构的全部目的。因为现在他们作为root不需要知道root密码。
- 审核和日志记录 - 他们现在是 root 用户,如果不安装任何第三方审核系统或工具,则不会记录从用户 root 运行的那些行为或操作。
我想我的问题是为什么 Linux 允许这样做。对我来说,这似乎是一个作弊绕过代码。
如果我的担忧或观点有误,请纠正我。谢谢
答案1
命令的目的sudo
是允许非 root 用户以 root 身份运行命令,而不是防止他们从运行这些命令(特别是在系统上,你不完全以root身份登录,就像Ubuntu一样)。因此,根据设计,sudo
也允许以 root 身份运行 shell。
如果你想限制你的用户可以通过哪些命令运行sudo
,你可以使用 file 来精确控制它/etc/sudoers
。我建议您阅读该文件的文档 ( man sudoers
)。
答案2
如果您是管理员,您可以拥有一些具有 sudo 组级别权限的用户
嗯,是。如果您是管理员,您可以成为管理员...
他们也可以只执行 sudo su 或 sudo -i 来切换到 root 用户,而无需知道 root 用户密码
是的,他们可以,如果他们已被明确授权通过在文件中添加适当的行来这样做sudoers
。如果您不想允许用户以 root 身份运行命令,请不要允许他们通过 sudo 或其他方式访问 root 帐户。
现在他们作为 root 不需要知道 root 密码
是啊,那又怎样?向某人提供 root 密码是允许他们访问 root 帐户的一种方法。让某人成为 sudoer(即允许他们通过 root 身份运行任意命令sudo
)是另一回事。
他们现在是 root 身份,并且在不安装任何第三方审核系统或工具的情况下,不会记录从用户 root 运行的那些行为或操作
是啊,那又怎样?成为 root 后可以关闭审核并删除日志。 (除了存储在远程计算机上的日志;那么,您最多可以保证日志将包含用户获得 root 访问权限的方式。)
如果您担心用户可以以 root 身份运行 shell,并且您希望他们“仅运行特定命令”: shell是一个特定的命令。sudo -i
是运行目标用户的默认 shell 的快捷方式:它相当于sudo bash
or sudo sh
orsudo zsh
或类似。如果您想阻止用户以 root 身份运行 shell,您sudo sh
也需要进行阻止。和sudo perl
。并且sudo vi
(可以运行)。等等。或者他们可以写入可执行文件并使用.或者他们可以运行并编辑 sudoers 规则。没有办法允许用户运行几乎所有命令而只阻止其中一些命令。如果您授予某人 root 访问权限,他们就拥有 root 访问权限,您必须信任他们。如果您不信任他们,请不要授予他们 root 访问权限。![any shell command]
eval "$(stdin)"
sudo
sudo visudo