如何通过脚本使用另一个用户的帐户密码进行 sudo?

如何通过脚本使用另一个用户的帐户密码进行 sudo?

我有一个以 身份运行的 bash 脚本user,该用户帐户没有评估权限。该机器有第二个admin具有 sudo 权限的帐户。没有设置 root 密码。

该脚本知道 的账户密码admin。如何将脚本升级到root

sudo -S只处理使用你的升级情况当前的帐户的密码,例如adminrootuser没有特权,因此这不起作用。

su admin可以工作但是没有提供从 STDIN 获取密码的方法。

换句话说,我如何以编程方式实现以下目标?

$ su admin
Password: ******
$ sudo command
Password: ******

答案1

由于su只从 TTY 读取,因此您必须为其指定一个。如果 GNU screen 可用,请尝试以下操作:

screen -d -m -S foo su -c 'sudo my_command' admin
screen -S foo -X stuff 'admin_password
'

第 1 行设置一个运行指定su命令的会话,该命令将提示输入admin用户的密码。第 2 行和第 3 行将密码(以及尾随的换行符以模拟按 Enter 键,注意引号)“塞入”命名会话中;等待su将从 pty 接收该密码,并假设该密码正确,则执行指定的命令 ( sudo my_command)。

(我确信 tmux 可以做类似的事情,但我不使用它,所以只能指向手册页。或者,您可以利用这个机会学习 pty 编程并编写自己的程序来执行密码到 su 的传递:))

答案2

虽然这不是您真正想要的,但一种解决方法是向用户授予有限的 sudo 权限。

添加仅具有以用户身份运行和运行命令的user权限。例如:/etc/sudoerssudoadminsudo

user   ALL = (admin) /bin/sudo

然后,运行类似的命令sudo -u admin sudo commands

相关内容