使用 sudo -u 以其他用户身份执行命令时出现问题

使用 sudo -u 以其他用户身份执行命令时出现问题

当我尝试ls以用户身份执行abc以下命令时,出现错误:

xyz@host:~/temp$ sudo -u abc ls
[sudo] password for xyz:
Sorry, user xyz is not allowed to execute '/bin/ls' as abc on host.

但如果我这样做su abc然后执行ls我就没有问题

答案1

您应该配置sudo安全策略以允许用户xyz以 user 身份执行某些操作abc。阅读sudoers手册(man sudoers)并使用visudo命令进行配置/etc/sudoers

例如,让我们允许用户以没有密码的用户身份xyz执行。将此字符串添加到(使用,不要直接编辑):/usr/bin/whoamiabc/etc/sudoersvisudo/etc/sudoers

xyz ALL = (abc) NOPASSWD: /usr/bin/whoami

现在,测试一下:

xyz@host:~$ sudo -u abc /usr/bin/whoami
abc

答案2

这是因为sudo不同于su。当您 时,您就成为系统的su abc用户。abc然后你就可以做任何abc能做的事情。

另一方面,sudo用于允许其他用户通过代理执行某些命令。换句话说,您的sudo配置允许您代表 执行一些命令abc。如果您尝试执行的命令不是其中之一,您将收到报告的错误。

答案3

如果一切看起来都正常,但您仍然收到Sorry user xxx cannot execute...消息,并且每次都会要求您输入sudo密码。

你可以这样做:

  1. /etc/sudoers删除行中包含您的用户设置
  2. 保存存档
  3. 打开文件,输入(不复制)您对该用户的选项
  4. 保存存档
  5. 尝试一下。

这对我有用。事实证明,该行的结尾很糟糕,因为我复制了需要从电子邮件执行的命令。

相关内容