在Linux中如何输入需要sudo的命令链中的一个命令的密码。我能想到的一个例子是,在运行一个长编译工作之后,我想关闭机器。
make ; sudo init 0
我希望shutdown命令仅在make完成后运行,但是想立即输入密码,因为第一个命令完成后我不会在那里。另外,我不想以超级用户权限运行“make”。因此切换到root并运行命令也是不可能的。
谢谢!
答案 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是您要允许的用户名。