Bash 脚本自动以 root 或 sudo 身份使用密码登录

Bash 脚本自动以 root 或 sudo 身份使用密码登录

自从我开始在 Ubuntu 中使用 bash 脚本以来,我一直很好奇,我一直在想是否有办法以 root 身份登录或运行 sudo 命令,而无需在系统提示时手动输入密码在终端

是否可以将密码硬编码到一行中,例如“echo mypassword”,并让 sudo 读取 echo 命令而不是自己输入?

我环顾四周,如果你将根设置为没有密码,那么你就可以这样做,而这是我所不想要的。

我刚刚玩了一下 bash,看看是否可以以 root 身份登录并仅通过 bash 脚本以 root 身份运行命令:

#!/bin/bash

echo mypassword | sudo apt-get install frozen-bubble

这只是出于我的好奇心,我只是想知道如果可能的话如何实现它。谢谢。

如果这相关的话,我正在使用 Ubuntu 9.04。

答案1

您不应该对密码进行硬编码。如果您想使用 sudo 而不使用密码,则必须编辑 sudoers 文件。要编辑 sudoers,请键入命令

$ sudo visudo

Visudo 使用 vi 作为编辑器。如果您不熟悉 vi,可以将环境变量 VISUAL 或 EDITOR 设置为您喜欢的编辑器,例如。VISUAL=nano仅当 visudo 配置为--with-env-editor

在 sudoers 文件中,你应该放置行

your_username ALL=(ALL) NOPASSWD: ALL

或者

%some_groupname ALL=(ALL) NOPASSWD: ALL

或者(请注意,这将为所有用户启用无需密码的 sudo)

ALL ALL=(ALL) NOPASSWD: ALL

如需更多信息,请使用man sudoers

答案2

您不能也不应该在脚本中硬编码密码。正确的做法是确保运行脚本的用户在 sudoers 文件中,然后在脚本中使用 sudo。

答案3

硬编码密码是坏的. 使用 sudo,无需密码。

答案4

这里还有一个有趣的想法.....使用 ssh 和生成的公钥/私钥。可以配置密钥以仅允许使用它执行某些命令。

如果您使用不需要密码的 sudo,我可能会确保命令集是有限的,而不是全部。

相关内容