Bash脚本自动logging为root或sudo密码

自从我在Ubuntu上启动bash脚本以来,我一直很好奇,我一直在想如果有一种方法可以以root用户身份login,或者运行sudo命令,而不需要在terminal提示你手动input密码。

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

我已经环顾四周,你可以,如果你已经设置了根没有密码,这是我不想要的东西。

我只是一直在玩bash,看看我是否可以root身份login,只通过bash脚本在root中运行命令:

#!/bin/bash echo mypassword | sudo apt-get install frozen-bubble 

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

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

你不应该硬编码你的密码。 如果你想使用sudo没有密码,你必须编辑sudoers文件。 要编辑sudoers,input命令

 $ sudo visudo 

Visudo使用vi作为编辑器。 如果你对vi不熟悉,你可以设置环境variablesVISUAL或EDITOR给你最喜欢的编辑器,例如。 VISUAL=nano 。 只有使用--with-env-editorconfigurationvisudo时,才会使用以下环境variables

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

 your_username ALL=(ALL) NOPASSWD: ALL 

要么

 %some_groupname ALL=(ALL) NOPASSWD: ALL 

或者(小心,这使所有用户没有密码sudo)

 ALL ALL=(ALL) NOPASSWD: ALL 

欲了解更多信息,请使用man sudoers

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

硬编码密码不好 。 使用sudo没有密码。

另一个有趣的想法在这里…..使用SSH生成的公钥/私钥。 密钥可以被configuration为只允许某些命令被执行。

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