[英]Confused on sudo vs su and running scripts
当我执行sudo su - john
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
“ sudo”旨在提供“ su”的所有功能,但不要求他们使用其他用户的密码。 您需要的答案在/ etc / sudoers文件中,可使用“ sudo visudo”命令进行编辑。 在这里您会发现您可以使您的用户不需要密码:
cratylus ALL=(ALL) NOPASSWD: ALL
从那里提交查询
sudo -u cratylus the statement
注意:请勿引用该语句-您只能对“ su -c”命令执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.