我正在自动化部署过程,我希望能够在我的计算机上调用一个 .sh 文件,让它完成构建并将 .zip 上传到服务器,然后在服务器上执行一系列操作。我需要做的一件事是要求我成为 root。所以,我想要做的是:
ssh [email protected] <<END_SCRIPT
su -
#password... somehow...
#stop jboss
service server_instance stop
#a bunch of stuff here
#all done!
exit
END_SCRIPT
这可能吗?
答案1
您是否考虑过使用无密码 sudo ?
答案2
不要使用 su,而是使用 sudoers 中设置了 NOPASSWD 的 sudo 来执行相应的命令。您需要尽可能限制允许的命令集。如果您不熟悉 sudoer 文件语法,让它调用运行 root 命令的脚本可能是最干净的方法,也是迄今为止最容易确保安全的方法。对于需要加载完整环境的命令/脚本,这种sudo su - -c command
方法虽然可能有点过头了,但仍然有效。
答案3
你所描述的情况可能预计。
答案4
不。即使您获得了 的密码su
,您仍然需要处理su
将打开新 shell 的事实,这意味着您的后续命令将不会传递给它。您需要为 root 操作编写一个脚本以及一个可以使用适当权限调用它的辅助可执行文件。