使用sudo -u

使用sudo -u

我有 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

  1. 在您的配置中您允许:

    • userA以任何用户身份运行任何命令
    • userB运行fdiskvinoth
  2. fdisk默认情况下需要root访问设备的权限,您不能将其运行为userA,即。你可以运行,但fdisk -l不会打印任何输出,这就是你得到的。

  3. 最后sudo命令是不可传递的。当您userB使用帐户从帐户执行命令时sudo -u userA <command><command>将使用凭据运行,并且在 中定义设置userA的事实不适用于此命令。userAsudoers


使用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您可以:

  1. sudo为帐户启用。sudo fdisk -l有效运行意味着fdisk按账户运行root

  2. 将帐户添加到disk组中,这将允许使用帐户fdisk -l凭据在没有 的情况下运行sudo

相关内容