当我sudo su - john
时,我成为了用户john
,没有要求输入密码。
但当我这样做时:sudo su - john /usr/share/script_to_run.pl
我被要求输入密码。
同样适用于sudo -u john /usr/share/script_to_run.pl
为什么呢?我在这里做错了什么?
答案 0 :(得分:1)
现在,首先,-
表示您需要登录shell。第一个语句意味着您希望以root身份(因此sudo
)希望在您以john
身份登录时显示它。某处配置为您当前登录的用户有权在不使用密码的情况下执行sudo。
第一个实例中发生的是您执行一个命令su - john
(意思是“以john
身份登录”),然后以root身份执行此操作(因为您首先放置sudo
)。您当前的用户拥有sudo-without-password-rights,root有权成为任何用户。
第二次尝试是错误的。您不能使用su
以这种方式执行命令,并且当您希望su执行单个命令时,我认为没有理由将其设置为登录shell。
在第三个选项中,您(作为当前登录的用户)想要为一个命令“变成”john
。为此,您需要john
的密码。 (但是,当您以root
执行此操作时,您不需要密码。)
为了使它工作,你可以尝试
sudo su --command="/usr/share/script_to_run.pl" john
或者甚至可能更具异国情调的
sudo sudo -u john /usr/share/script_to_run.pl
答案 1 :(得分:0)
"须藤"旨在提供" su"的所有功能,但不要求他们使用其他用户的密码。您需要的答案在/ etc / sudoers文件中,可以使用" sudo visudo"进行编辑。命令。在这里你会发现你可以让你的用户不需要密码:
cratylus ALL=(ALL) NOPASSWD: ALL
然后用
提交查询sudo -u cratylus the statement
注意:不要引用该声明 - 您只能为" su -c"命令。