当我执行 sudo su - john
时,我将成为用户 john
而无需 要求输入密码。
但是当我这样做时:sudo su - john/usr/share/script_to_run.pl
我被要求输入密码。
sudo -u john/usr/share/script_to_run.pl
为什么?我在这里做错了什么?
最佳答案
现在,首先,-
表示您需要一个登录 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
关于linux - 对 sudo 与 su 和运行脚本感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18141762/