以与bash脚本不同的用户身份运行命令

时间:2018-09-20 14:19:21

标签: linux bash shell unix scripting

我有2个用户:usr1和usr2。 root用户也不是。

usr1启动一个bash脚本。从脚本中,我想将某些命令作为usr2运行。 我了解这样做的方法是:

su -l <usr2> -c "command"

问题在于密码的传递。这是2个具有不同特权的不同用户,因此,不能跳过usr2的密码。

此脚本可以进行交互,并询问用户密码。 bash脚本中有没有办法做到这一点?

注意:我不是脚本专家。在问这个问题之前,我已经做了一些研究,但是我找不到合适的答案。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用read read man page命令,请参见以下示例:

#!/bin/bash

read -s -p "Enter your password: " pass
echo $pass

在这种情况下,您将需要将/ bin / su -c与sudo -S一起使用

#!/bin/bash 

user=$1
read -s -p "Enter pass: " pass
cmd=$(echo $pass|sudo -S <some-command>)
su -c '$cmd' - $user

其中user = $ 1另外的bash参数,在本例中为usr2的用户ID,然后突出运行

$sudo bash -x ./password.sh <target-user>