sudo-S sh-c“ bash”

sudo-S sh-c“ bash”

我有一个脚本,可以打开终端窗口并向它们发送命令。其中一些必须以 root 身份运行,因此我会向它们发送此命令

sudo sh -c 'do_stuff && bash'

这将运行一些初始命令,然后进入交互式 shell。

在我的环境中,终端程序本身不能由 root 用户启动(是的,真的),并且将 root 密码存储在文件中(是​​的,真的)并启动几个这样的终端而不每次都要求输入密码实际上是有意义的。

这种情况很愚蠢,但请接受它。请不要告诉我我做错了,在这种环境下我别无选择。

如果我向他们发送这个命令

sudo sh -S -c 'do_stuff && bash' <passwordfile

然后终端不是进入交互式 shell,sudo然后立即退出do_stuff

我如何从 进入交互式 shell sudo -S

答案1

你做错了。但你有另一种选择。

首先,将密码存储在文件中是完全愚蠢的,并且会带来严重的安全问题。相反,应配置sudoers为允许在不使用密码的情况下执行必要的操作。

其次,不要尝试同时运行非交互式命令和交互式 shell。这样不行。您必须分别运行它们,但您可以这样运行它们:要让 sudo 启动交互式 shell,只需运行sudo -i

相关内容