我有 2 个用户,用户 A 和用户 B。 userB 需要以 userA 的身份运行一些命令。我已指定这些选项/etc/sudoers
如下:
userA ALL=(ALL) ALL
userB ALL=(vinoth) /sbin/fdisk
我以 userB 身份运行此命令:
sudo -u userA fdisk -l
它要求输入用户 B 的密码。输入密码后,该命令没有给出 fdisk 输出。
答案1
在您的配置中您允许:
userA
以任何用户身份运行任何命令userB
运行fdisk
为vinoth
fdisk
默认情况下需要root
访问设备的权限,您不能将其运行为userA
,即。你可以运行,但fdisk -l
不会打印任何输出,这就是你得到的。最后
sudo
命令是不可传递的。当您userB
使用帐户从帐户执行命令时sudo -u userA <command>
,<command>
将使用凭据运行,并且在 中定义设置userA
的事实不适用于此命令。userA
sudoers
使用sudo -u
要允许userB
执行命令,userA
您需要将以下内容放入sudoers
:
userB ALL=(userA) /usr/bin/whoami
然后登录 shelluserB
并执行:
$ sudo -u userA whoami
userA
但userA
有运行权限whoami
(确实如此)。它不适合fdisk
.
fdisk
为普通用户启用
fdisk
本身并不限于root
帐户,但它需要访问磁盘设备(存储在/dev
其中,普通用户无法访问)。要授予用户运行权限,fdisk
您可以:
sudo
为帐户启用。sudo fdisk -l
有效运行意味着fdisk
按账户运行root
。将帐户添加到
disk
组中,这将允许使用帐户fdisk -l
凭据在没有 的情况下运行sudo
。