0

当我这样做时,我无需输入密码即可sudo su - john成为用户。 但是当我这样做时:我被要求输入密码。也一样john
sudo su - john /usr/share/script_to_run.plsudo -u john /usr/share/script_to_run.pl

为什么?我在这里做错了什么?

4

2 回答 2

1

现在,首先,-意味着你想要一个登录shell。第一条语句意味着您希望以 root 身份(因此使用sudo),使其在您以 登录时显示john。在某处配置为您当前登录的用户有权在不使用密码的情况下执行 sudo。

在第一个实例中发生的情况是您执行一个命令su - john(意思是“登录我john作为sudo成为任何用户的权利。

第二次尝试是错误的。您不能使用su以这种方式执行命令,并且当您希望 su 执行单个命令时,我认为没有理由将其设为登录 shell。

在第三个选项中,您(作为当前登录的用户)想要“成为”john一个命令。为此,您将需要johns 密码。(但是,当您这样做root时,您不需要密码。)

为了让它工作,你可能会尝试

sudo su --command="/usr/share/script_to_run.pl" john

或者甚至更具异国情调

sudo sudo -u john /usr/share/script_to_run.pl
于 2013-08-09T07:27:49.047 回答
0

“sudo”旨在提供“su”的所有功能,但不要求他们使用其他用户的密码。您需要的答案在 /etc/sudoers 文件中,可以使用“sudo visudo”命令进行编辑。在这里你会发现你可以让你的用户不需要密码:

cratylus ALL=(ALL)       NOPASSWD: ALL

然后提交查询

sudo -u cratylus the statement 

注意:不要引用该语句 - 您只对“su -c”命令执行此操作。

于 2014-05-05T07:18:29.793 回答