【问题标题】:Confused on sudo vs su and running scripts对 sudo vs su 和运行脚本感到困惑
【发布时间】:2013-08-09 07:13:07
【问题描述】:

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

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

【问题讨论】:

  • 查看/etc/sudoers文件的内容;可能有一个条目读取类似:user NOPASSWD: su - john,这意味着您可以发出命令,但不能使用参数。不过,这更像是一个超级用户的问题

标签: linux shell sudo su


【解决方案1】:

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

在第一种情况下发生的情况是您执行一个命令su - john(意思是“以john 登录我),然后以root 身份执行此操作(因为您将sudo 放在首位)。您当前的用户有sudo-without-password-rights,root 有权成为任何用户。

第二次尝试是错误的。您不能使用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

【讨论】:

  • 这两个选项都要求我输入密码
  • 有趣。您当前以什么用户身份登录?你运行的是什么操作系统?
  • 我以用户george.OS是centos登录
【解决方案2】:

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

cratylus ALL=(ALL)       NOPASSWD: ALL

然后使用

提交查询
sudo -u cratylus the statement 

注意:不要引用语句 - 你只对“su -c”命令这样做。

【讨论】:

    猜你喜欢
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 2021-11-28
    • 2022-10-17
    • 1970-01-01
    • 2016-05-16
    相关资源
    最近更新 更多