第一个 bash 脚本 - 仅输入 root 密码一次

第一个 bash 脚本 - 仅输入 root 密码一次

我写了一个小的 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可以。

相关内容