su将密码传递给脚本

Rob*_*obM 7 sudo sudoers

我正在尝试编写一个运行以下命令的脚本:

sudo su
runmqsc_result=`su -c "runmqsc QMGR < /home/rob/query_queue.txt" -m "mqm"`
Run Code Online (Sandbox Code Playgroud)

但是,我的问题是这些命令是由sudoers文件中的用户作为shell脚本的一部分运行的.但是,显然sudo su要求运行它的用户的密码.

我需要做的是将密码传递给sudo su,以便脚本自动运行.我怎样才能做到这一点?

ps:我无法更改运行"runmqsc"的权限...它必须作为用户mqm运行,需要从root用户切换到.

n.s*_*.st 14

来自man sudo:

-S    The -S (stdin) option causes sudo to read the password from the standard
      input instead of the terminal device.  The password must be followed by a
      newline character.
Run Code Online (Sandbox Code Playgroud)

因此,虽然它违背了所有安全原则,但echo 'password' | sudo -S su [...]应该有效.


或者,您可以使脚本只能由root写入,并添加以下内容/etc/sudoers以允许用户johndoe使用root权限运行它而无需输入密码:

johndoe ALL = NOPASSWD: /full/path/to/your/script
Run Code Online (Sandbox Code Playgroud)

只能由root写入的部分对于防止johndoe修改脚本和以root身份执行任意命令非常重要.