Shell脚本成为root

Shell脚本成为root

我们如何编写shell脚本来成为root?也就是说,我不想在提示时输入密码,它应该在脚本本身内。我试图做但未能做到这一点。是否可能,如果是,请解释。

答案1

您可以使用编写脚本预计工具。

在Redhat中,expect包是默认的。但在 Ubuntu 中你需要单独安装它。

您可以使用命令来检查:

$ rpm -qa | grep expect 对于红帽

$ dpkg -l expect对于Ubuntu

以下脚本将完成您的工作:

#!/usr/bin/expect

spawn su -
expect "Password: "
send "password\r"
interact

答案2

将 root 密码的明文存储在文件中是本质上是危险的- 有很多途径可以恢复它。

这似乎是一个 XY 问题。

unixy 的权限委托方式是通过 setuid 位 - 但这只能应用于二进制可执行文件,而不能应用于 shell 脚本。正如 jordanm 所说,将 setuid 应用于 shell 本身是非常危险的 - 这就是 sudo 存在的原因 - 它有一个 setuid 位并根据 sudoers 文件验证用户请求,以对访问进行细粒度控制。但 sudo 也有一些问题。

答案3

最简单的方法是制作 shell 的 suid 副本:

cp /bin/bash $HOME/bin/becomeroot
sudo chown root $HOME/bin/becomeroot
sudo chmod 4750 $HOME/bin/becomeroot
hash -r

然后,运行becomeroot将启动一个以 root 身份运行的 bash 子 shell。

然而,如果我没有给你这个建议,那就是我的失职:不要这样做。让恶意软件如此轻易地将其权限升级为 root 是不明智的。相反,每当您需要以 root 身份运行某些东西时,只需安装sudo并学习使用它即可。

答案4

您可以设置 SUID 粘滞位:

chmod 2664 your-file

这将导致软件以文件所有者的身份运行。当然,您必须将所有权更改为 root:

sudo chown root your-file

(假设您在 sudoers 文件中找到,并且您已经安装了 sudo)

相关内容