如何将 Root 密码传递给脚本

如何将 Root 密码传递给脚本

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

相关内容