在命令链中输入sudo命令的密码

时间:2011-05-20 06:09:08

标签: linux bash shell sudo

在Linux中如何输入需要sudo的命令链中的一个命令的密码。我能想到的一个例子是,在运行一个长编译工作之后,我想关闭机器。

make ; sudo init 0 

我希望shutdown命令仅在make完成后运行,但是想立即输入密码,因为第一个命令完成后我不会在那里。另外,我不想以超级用户权限运行“make”。因此切换到root并运行命令也是不可能的。

谢谢!

6 个答案:

答案 0 :(得分:7)

sudo sh -c "su -c 'make' $USER && init 0"

尽早和经常更换你的uid。那是芝加哥的方式!

答案 1 :(得分:3)

您可以运行sudo -v来更新sudo时间戳 - 这意味着您无需输入 x 分钟的密码(默认值为5)。您可以通过修改sudoers文件中的timestamp_timeout来更改超时。

您可能还想将命令更改为

make && sudo init 0

只有在make成功完成后才会关闭。

答案 2 :(得分:2)

为什么不将密码输入sudo

make; echo 'password' | sudo -S init 0

答案 3 :(得分:1)

一种可能性是使用Expect 自动输入密码。

以下是期望和密码的简单操作:http://www.linux.com/archive/feed/56066

另一种可能性是编辑你的/ etc / sudoers并将你的用户设置为能够在没有密码的情况下使用sudo。如果您检查文件,将在那里的评论中解释。

答案 4 :(得分:0)

将sudo的超时更改为足以涵盖您的使用情况的内容,然后运行类似sudo echo的内容进行身份验证,然后运行其他命令。只要尚未达到密码超时,它就应该执行而不再询问。

答案 5 :(得分:0)

您可以将其添加到您的sudoers文件

username ALL = NOPASSWD: /sbin/init

其中,username是您要允许的用户名。