我的一个脚本中有 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。