shell脚本:导航到root

时间:2011-12-13 19:18:21

标签: linux shell scripting debian

我正在编写一个需要root权限的简单shell脚本。如果您键入sudo su并使用终端,并且您输入了密码,它肯定会正常工作。 我想将密码传递给脚本文件,然后将其传递给系统以成为root ex:

pass= $1
navigateToRoot($pass)

3 个答案:

答案 0 :(得分:2)

更好的方法是:

chmod +s yourfile
chown root yourfile

通过设置setuid位,文件将以root(所有者)身份执行,而无需存储或传递root密码。

确保没有其他人可以修改脚本

chmod o-w yourfile

见评论:

SETUID不适用于Shell脚本,所以这个答案是无效的。

答案 1 :(得分:1)

根据您对该问题的评论,我假设您实际上想要以某种替代方式询问用户密码,而不是在文件中以明文形式提供密码。

您可以使用-A标记sudo。来自man sudo

  

通常,如果sudo需要密码,它将从当前终端读取它。如果指定了-A(askpass)选项,则a(可能是   执行帮助程序以读取用户的密码和   将密码输出到标准输出。如果是SUDO_ASKPASS   设置环境变量,它指定帮助程序的路径   程序。否则,由askpass选项指定的值   sudoers(5)被使用。

答案 2 :(得分:0)

如果你想从脚本发送密码,你需要一种能够在tty - s上做奇怪事情的脚本语言,例如expect(基于tcl,我非常不喜欢的脚本语言)。

但是一个配置良好的sudo,或者使用较少的super命令,或者可能是一个二进制可执行文件(在C中非常谨慎地编码),这是setuid并调用其他一些脚本,应该就足够了。 ..