sudo 访问 vs 轮组

alk*_*ary 11 users permissions sudo group

我只是在这里有点困惑。当您被要求授予用户对机器的 sudo 访问权限时。我应该将用户添加到轮组。

# usermod -aG wheel bob
Run Code Online (Sandbox Code Playgroud)

或者假设没有轮组或由于某种原因被删除。

那么我怎样才能授予 bob sudo 对机器的访问权限。当我这样做的时候

# which sudo
Run Code Online (Sandbox Code Playgroud)

我得到结果: /usr/bin/sudo

那么我可以做以下几行:

bob     ALL=/usr/bin/sudo
Run Code Online (Sandbox Code Playgroud)

但是后来我改为用户 bob 并尝试执行

# sudo iptables -L
Run Code Online (Sandbox Code Playgroud)

然后它给了我那个错误信息:

抱歉,不允许用户 bob 以 root 身份执行 '/sbin/iptables -L'

因此,如果不存在组轮,我不确定如何向用户授予对机器的 sudo 访问权限。而且据我所知

bob       ALL=ALL    ALL
Run Code Online (Sandbox Code Playgroud)

基本上是让bob和root有一样的能力,这不好对。

我的另一个问题是如何让系统上的所有用户都能够执行最后一条命令。我必须创建一个组然后将所有用户添加到该组还是有其他方法?

tel*_*coM 13

当wheel组成员资格通过sudo授予用户完全root访问权限时,它通常在/etc/sudoers文件中配置如下:

%wheel    ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)

意思是:“主机wheel上的任何组成员都ALL可以对ALL用户帐户执行sudo以运行ALL命令。” 所以它与您的“坏”行完全相同:

bob      ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)

如果您想授予用户(或组)对特定其他用户帐户的完全访问权限,而没有其他任何权限,您可以这样做:

user     ALL=(targetuser) ALL
# or
%group   ALL=(targetuser) ALL
Run Code Online (Sandbox Code Playgroud)

然后,用户可以做

$ sudo -u targetuser command
Run Code Online (Sandbox Code Playgroud)

以目标用户身份快速执行单个命令,或

$ sudo -iu targetuser
Run Code Online (Sandbox Code Playgroud)

获得一个 shell 作为目标用户,与目标用户在直接登录时获得的环境完全相同。

由于历史原因,有些人条件反射地使用

sudo su - targetuser
Run Code Online (Sandbox Code Playgroud)

为了第二个目的。这将需要至少授予相关用户以运行`

su - targetuser 
Run Code Online (Sandbox Code Playgroud)

以 root 身份执行命令,从日志中拼凑出用户实际执行的操作会更加困难。这个命令在sudo没有-i选项时很有用,但我认为这个选项已经存在大约 15 年了。