我需要通过提供他们的密码来以另一个用户的身份执行命令。这必须能够在没有终端的情况下完成,也就是说,纯粹通过 bash 脚本完成。我还需要能够在不安装自定义包的情况下做到这一点(密码等)或配置任何 root 可访问的文件(sudoers, ETC)。
我尝试过的事情:
sudo -u 'myuser' -- sh -c 'mycommand'
su - 'myuser' -c 'mycommand'
ssh 'myuser'@localhost 'mycommand'
所有这些都是为了实现以另一个用户身份执行命令的目标。然而,身份验证是个问题...
sudo
- 允许您使用标志通过标准输入提供密码-S
。但是,它要求你的密码 - 不是您尝试以之执行命令的用户的密码。su
- 允许您提供他们的密码而不是您的密码,但只能通过终端提供!ssh
- 允许您提供他们的密码,但它也只能通过终端提供。它的开销也比前两个大得多。
如果su
有-S
这样的标志sudo
,这个问题就解决了。是否存在可以执行此操作的东西(内置)?如果没有,为什么不存在?似乎没有任何安全问题,因为sudo
已经提供了通过标准输入传递密码的能力。