これが私がやる計画です:
#!/bin/bash
sudo -i <<'EOF'
iptables-save | awk '/^[*]/ { print $1 }
/^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
/COMMIT/ { print $0; }' | iptables-restore
EOF
上記の内容を保存し、名前をcleariptables.shとして指定します。実行可能にしました。
これは、次のパスのbinというフォルダに配置されます。/home/cymbal/bin/
(ここでcymbalはユーザー名です)
デスクトップにcleariptables.shへのショートカットを作成します。ショートカットの内容は次のとおりです。
[Desktop Entry]
Version=1.0
Type=Application
Terminal=true
Icon[en_US]=nm-device-wired
Name[en_US]=ClearIPtables
Exec=gksudo /home/cymbal/bin/cleariptables.sh
Comment[en_US]=Flush iptables filters
Name=ClearIPtables
Comment=Flush iptables script
Icon=nm-device-wired
デスクトップショートカットをクリックするたびにパスワードを入力するように求められ、スクリプトが実行されます。
問題:デスクトップショートカットをクリックすると、パスワードの入力を求められます。なぜならsudo-iスクリプトでパスワードを再入力するように求められますか?
答え1
いいえ、パスワードの再入力を求められません。gksudo
私の経験では、すでにsudo
ルートである場合は、パスワードを求めるメッセージはまったく表示されません(たとえ明示的に文書化されているものは見つかりませんが)。
答え2
あなたはそれを使用することができますパスワードなしWDディレクティブをファイルに入れますsudoers
。
/etc/sudoers
ファイルにこの行を追加する
your_login ALL = (root) NOPASSWD: /path/to/your/script
visudo
このファイルを編集するときは、プレーンテキストエディタの代わりにコマンドを使用する必要があります。変更を保存する前に構文エラーを確認してください。