我的电脑上安装了 Kali-linux。每次重启时我都必须向它传递一些命令。我找到了一种快捷方式,将所有这些命令写入文本文件并在终端中执行文本文件。但是,这需要我使用以下命令进入 root 模式
sudo -i
并输入我的密码,我们假设是:
^^^^^^^^
现在我想要一个程序,通过该程序我只需要在终端中执行程序,它就会让我进入根模式,即它会自己输入密码。
有点像这样:
sudo -i
^^^^^^^^
好像我甚至不需要输入密码。有什么方法只需双击文件即可进入 root 模式……?
答案1
实现此目的的一种方法是编写一个不使用 sudo 的脚本,然后使用 sudo 运行该脚本本身。这样,您将输入一次密码。或者甚至允许在没有密码的情况下运行它 — 请参阅下一段。
您可以进行设置sudoers
,使其在执行某些命令时不要求输入密码,这些命令发生在您的脚本中,或者在运行脚本本身时(例如sudo myscript.sh
)。极其小心因为你本质上绕过了保护措施sudo
;如果某人修改你的脚本,他们的修改将以特权用户身份运行!当然,更好的方法是在 drop-in 目录中设置一些文件,/etc/sudoers.d/
而不是修改主文件(它将在包更新时被覆盖,而 drop-in 文件不会):
sudo visudo -f /etc/sudoers.d/my-script
阅读man sudoers
有关如何编写此内容的详细信息my-script
。
另一种方法是知道 sudo 有“-S”命令行参数,这使得它从 stdin 接受密码。然后你将密码放入文件中,妥善保护文件,然后你就可以将其 cat 到sudo -S
:
echo "pAs5w0rD" > cwfile
chmod 0400 cwfile
# the following is how to use this in the script
cat cwfile | sudo -S privileged-command
cat cwfile | sudo -S another-privileged-command
说了这么多,我意识到,任何这些解决方案本质上是不安全的。
因此,如果您需要在启动时始终执行特权命令,请考虑创建一个启动时服务,在启动时为您运行这些命令。这并不难。