我写了一个小的 bash 脚本。它需要 root 密码。
只有两个命令,都需要权限。所以,目前我必须输入超级用户密码两次- 我不想那样。
我将脚本链接到桌面。我的意思是,我正在从桌面上执行它。
我的努力,但不起作用:
gksu -u root "iptables -D INPUT 7 && iptables -D INPUT 6"
答案1
就我个人而言,我会编写一个脚本并将其放置~/bin
在 $PATH 中或其他目录中,然后有一个执行sudo <script_name>
.有很多方法可以做到这一点,这是我的首选方法:
mkdir ~/bin
editor ~/bin/myscript
然后编写你的脚本:
#!/bin/bash
iptables -D INPUT 7
iptables -D INPUT 6
保存它并使其可执行:
chmod +x ~/bin/myscript
最后创建一个执行脚本的桌面快捷方式:
editor ~/Desktop/myscript
包含:
[Desktop Entry]
Version=1.0
Type=Applicaton
Name=Myscript
Comment=My script that does something cool
Icon=help-info
Terminal=false
Exec=bash -c "sudo ~/bin/myscript"
然后,系统只会要求您输入 sudo 密码一次。
答案2
您可以运行sh
将两个命令合并为一个:
sudo sh -c 'iptables -D INPUT 7 && iptables -D INPUT 6'
当然,如果不是一次性的事情,制作脚本会更方便。
答案3
您可以使用sudo -v
“刷新”权限。您可以在脚本运行时在后台循环中使用它。 (我很久以前从其他地方改编的,但我忘了在哪里。)
sudo_done="/tmp/sudo.finished"
sudo_me() {
while [ ! -f $sudo_done ]; do
sudo -v
sleep 5
done &
}
stop_sudoing() {
touch $sudo_done
sleep 7
rm $sudo_done
}
sudo_me &
# Your script here.
stop_sudoing &
另外,如果它不是 GUI 程序,则gksu
没有必要,也sudo
可以。