2011-03-07 65 views
0

我需要执行一个以root身份运行所需的命令。如何在bash脚本中传递密码?

我读了一些关于后使用硬编码密码脚本可能是不安全的,但实际上我不在乎,因为我提供给用户root密码反正。这是一个剥离的系统,只有两个用户:客户端和root用户,所以请避免警告我有关安全问题,继续并提供一个快速和肮脏的解决方案。

对于这个bash脚本我用苏需要 获得尽可能超级用户,然后 “我的命令”, 然后注销。

我不想终端提示输入密码我自己,而不是阅读,我在剧本提供某处密码,然后运行命令。优先不要提示用户输入任何信息。

或者,也许我可以安装sudo的,但有没有可能不使用密码(编辑sudoers文件或东西)的任何提示符下运行命令? 使用期望怎么样?我忘了说这也是一个便携式SO,用于U盘(也许以后也用于CDLive),如你所知,在这种类型的发行版中,如果用户需要,可以提供一个root密码。前面提到的命令是一些应用程序安装的扩展包,只有root才有权执行这样的命令(我不得不说它不是apt-get安装或rpm命令,所以不用担心这一点)。

+1

您可以通过描述你所需要的脚本实际上做你更好的答案。绕过类似UNIX的访问控制基础设施是UNIX相当于goto语句:如果你想使用一个,它通常意味着它的时间来从问题退一步一点,看看如果你能做到你想要什么做得更优雅。 – Ori 2011-03-07 03:55:20

回答

1

如果你想有一个命令是可运行的,没有密码,设置具体命令将在/etc/sudoers文件,没有密码,可运行(限制参数只有你希望允许特定的人,如果你使用的情况下,允许该限制)。

这是因为设置NOPASSWD:标志相关的sudoers条目一样简单。

如果你真的,真的不关心安全性,也可能是这样简单:

%admin ALL=(ALL) NOPASSWD: ALL 

(把须藤能力的用户admin UNIX组后) ...或者,如果你护理,你可以做一些具体的事情:

someuser ALL = NOPASSWD: /usr/local/sbin/my_admin_command 

请注意,如果这些命令将在没有用户存在的情况下运行,它们也可能没有分配TTY;在这种情况下,你必须确保你的sudoers文件不包含(经常目前按默认值)行:

Defaults requiretty 

......或者说这个默认的效果被丢弃专由行赋予权限。