我正在使用 (X)dialog 作为正常运行的脚本,但它需要 root 权限来执行某些命令。该脚本从 .desktop 文件运行,因此用户看不到终端。例如这里
#!/bin/bash
Xdialog --msgbox "Welcome" 0 0
touch /root/testfile
Xdialog --msgbox "All OK" 0 0
该touch
命令不执行。一种解决方案是使用kdesu
kdesu touch /root/testfile
但这种方法有两个问题:用户必须为每个命令提供密码,并且 kdesu 窗口不遵循与其余窗口相同的主题。
请注意,我希望用户提供 root 密码而不是 sudoer。
我找到了类似的脚本这里,但我无法将其应用于我的脚本,因为实际命令无法像以前那样接受密码sshpass
。
答案1
一种方法是su
在脚本的开头执行。用户只需在脚本开头输入一次 root 密码。然后,您可以通过执行命令而无需 root 权限su [username] -c [your command not to be executed with root privileges]
。
但是,您不能在此处使用对话框来询问密码。