自从我开始在 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,我可能会确保命令集是有限的,而不是全部。