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

标签 linux bash shell unix scripting

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

usr1 启动一个 bash 脚本。从脚本中,我想以 usr2 身份运行一些命令。 我知道这样做的方法是:

su -l <usr2> -c "command"

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

此脚本可以进行交互,并要求用户输入密码。有没有办法在 bash 脚本中执行此操作?

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

最佳答案

您可以尝试使用读取 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>

关于linux - 以与 bash 脚本不同的用户身份运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52427308/

相关文章:

linux - 'ln' 脚本出现一些错误

linux - 如何使用文件内容作为命令行参数?

java - 我如何从命令行运行一个 intellij Java 项目?

linux - 在 shell 中集成内置更新功能,以便在有可用时接收 OTA 更新

linux - 在文件中搜索一行并将下一个模式匹配的行替换为 linux 中的换行符(Shell 脚本)

linux - 如何在一个 linux 虚拟机上运行一个 shell 脚本,在另一个 linux 虚拟机上

c++ - 在 linux 中将 "plugins"放在哪里

c - POSIX API 调用以列出进程中运行的所有 pthreads

linux - 如何使用共享对象的调试版本

bash - 将参数的值传递给shell函数仅打印参数的名称