我在这里只是有点困惑。当您被要求授予用户 sudo 访问计算机的权限时。我应该将用户添加到轮组中吗?
# usermod -aG wheel bob
或者假设没有轮组或者由于某种原因被删除。
那么我怎样才能授予 bob sudo 访问机器的权限。当我这样做时
# which sudo
我得到结果:/usr/bin/sudo
那么我可以执行以下操作吗:
bob ALL=/usr/bin/sudo
但后来我更改为用户 bob 并尝试执行
# sudo iptables -L
然后它给了我错误消息:
抱歉,用户 bob 不允许以 root 身份执行 '/sbin/iptables -L'
因此,如果组轮不存在,我不确定如何向用户授予对计算机的 sudo 访问权限。而且据我所知
bob ALL=ALL ALL
基本上让 bob 拥有与 root 相同的权力,这是不好的。
我的另一个问题是如何使系统上的所有用户都能够执行最后一个命令。我是否必须创建一个组,然后将所有用户添加到该组中,还是有其他方法?
答案1
当 Wheel 组成员身份通过 sudo 为用户提供完全 root 访问权限时,通常在文件中进行如下配置/etc/sudoers
:
%wheel ALL=(ALL) ALL
wheel
含义:“主机上组的任何成员都ALL
可以 sudoALL
用户帐户来运行ALL
命令。”所以它与你的“坏”行完全相同:
bob ALL=(ALL) ALL
如果您想授予用户(或组)对特定其他用户帐户的完全访问权限,而不做其他任何事情,您可以这样做:
user ALL=(targetuser) ALL
# or
%group ALL=(targetuser) ALL
然后,用户可以执行以下操作
$ sudo -u targetuser command
以目标用户身份快速执行单个命令,或者
$ sudo -iu targetuser
获得与目标用户相同的 shell,其环境与目标用户直接登录时获得的环境完全相同。
由于历史原因,有些人条件反射地使用
sudo su - targetuser
为了第二个目的。这需要为相关用户提供至少运行“
su - targetuser
以 root 身份执行命令,并且从日志中拼凑出用户实际执行的操作将会更加困难。当sudo
没有该选项时,此命令很有用-i
,但我认为该选项现在已经存在了大约 15 年。
答案2
visudo
添加一行:
user1 ALL=/bin/cat, /etc/shadow
这允许 user1 使用sudo
.这意味着,您将无法运行除 using 之外的其他命令,也无法读取除usingcat
之外的其他文件。如果你输入,它将没有用,因为至少应该有一些工具来读取这个文件(这只是一个例子,你不必读取该文件)/etc/shadow
sudo
user1 ALL=/etc/shadow
/etc/shadow/
顺便说一句,“ALL”表示要执行的命令和要交互的文件的列表。默认情况下,旁边有 ALL=(ALL)根用户这实际上意味着所有命令和文件。
- 如果您想让该
last
命令(或任何其他命令)可由所有用户执行,您可以创建一个到公共目录(/usr/bin
)的硬链接,并通过 更改该命令(文件)的权限chmod +0001 /usr/bin/last
。但last
我猜想默认情况下所有用户都可以执行该命令。
要检查用户当前能够运行的命令列表,请使用sudo -l
。