我正在编写一个需要root权限的简单shell脚本。如果您键入sudo su
并使用终端,并且您输入了密码,它肯定会正常工作。
我想将密码传递给脚本文件,然后将其传递给系统以成为root ex:
pass= $1
navigateToRoot($pass)
答案 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)