![如何将 Root 密码传递给脚本](https://linux22.com/image/1212830/%E5%A6%82%E4%BD%95%E5%B0%86%20Root%20%E5%AF%86%E7%A0%81%E4%BC%A0%E9%80%92%E7%BB%99%E8%84%9A%E6%9C%AC.png)
我的一个脚本中有 root 密码,我想启动另一个需要 root 权限的脚本。我该如何使用我拥有的 root 密码,这样我就不必在启动第二个脚本时询问用户 root 密码。
答案1
这其中存在很多安全隐患,但让我们直接找到处理此问题的最佳方法。
不要直接使用 root 密码。使用 sudo 运行脚本。Sudo 默认安装在 Ubuntu 上,并且几乎所有流行的 Linux 发行版的软件包存储库中都有。安装 sudo 后,您需要编辑 /etc/sudoers。
su -
visudo
# add something like the following:
Cmnd_Alias SCRIPT=/path/to/script1
script_user ALL=NOPASSWD: SCRIPT
因此script_user
可以通过 sudo 以 root 身份运行第一个脚本,然后以 root 身份启动另一个脚本。有关 sudoers 文件的更多信息,请参阅sudoers(5)
系统上的手册页。
但是您的脚本是否一定要以 root 身份运行?大多数情况下,这根本不是必需的,而是为了方便。
答案2
另一个选项是将文件的 suid 设置为 root。例如:chmod u+s script.sh
以 root 身份运行脚本,这样当普通用户执行脚本时,它将以所有者(即 root)的文件权限运行。
仅供您参考,如果您不想将 sudo 设置为无密码运行,您可以通过 stndin 将密码传递给 sudo,例如echo PASSWORD|sudo -S ./script.sh
但是,这可能存在安全隐患,因为它会将密码显示在历史记录中或任何像“ps”一样查看的人中。您还可以查看 Expect 和 Empty。