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

0 ubuntu bash

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

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

我环顾四周,如果您将 root 设置为没有密码,这是我不想要的。

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

#!/bin/bash

echo mypassword | sudo apt-get install frozen-bubble
Run Code Online (Sandbox Code Playgroud)

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

如果这是相关的,我使用的是 Ubuntu 9.04。

sum*_*mar 9

您不应该对密码进行硬编码。如果你想在没有密码的情况下使用 sudo,你必须编辑 sudoers 文件。要编辑 sudoers,请键入命令

$ sudo visudo
Run Code Online (Sandbox Code Playgroud)

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

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

your_username ALL=(ALL) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)

或者

%some_groupname ALL=(ALL) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)

或者(小心,这会为所有用户启用 sudo 无需密码)

ALL ALL=(ALL) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请使用 man sudoers