さまざまなポートアクティビティを監視するために実行中の複数の端末ウィンドウを開くスクリプトがありますiftop
。
開いているすべての端末にはsudoパスワードを入力する必要があります。合計5つの端末があることを考えると、少し痛いです。
だから私の質問は、sudoパスワードを一度入力し、すべてのウィンドウにパスワードを入力するのではなく、その権限ですべてのウィンドウを実行するにはどうすればよいですか?
#!/bin/bash
TITLE="${USER}@${HOSTNAME}"' iftop (h=help, L=lin/log scales, t=line display mode, T=line totals, p=port display)'
gnome-terminal --title "$TITLE" -e 'sh -c "sudo iftop -P -f \"port 22\""' --hide-menubar --zoom=0.85
TITLE="${USER}@${HOSTNAME}"' iftop (h=help, L=lin/log scales, t=line display mode, T=line totals, p=port display)'
gnome-terminal --title "$TITLE" -e 'sh -c "sudo iftop -P -f \"port 33 or port 44\""' --hide-menubar --zoom=0.85
TITLE="${USER}@${HOSTNAME}"' iftop (h=help, L=lin/log scales, t=line display mode, T=line totals, p=port display)'
gnome-terminal --title "$TITLE" -e 'sh -c "sudo iftop -P -f \"(port 55) or (port 66)\""' --hide-menubar --zoom=0.85
スクリプト全体を実行してみたsudo
ところ、開いているすべての端末もsudo端末になりました。私にとって必要なのは、通常の端末を実行することですsudo iftop
。
答え1
場所または設定はまたはtimestamp_type
?マニュアルページによると、デフォルトは次のとおりです。/etc/sudoers
/etc/sudoers.d/*
tty
ppid
tty
sudo
タイムスタンプの種類-
sudoers
資格情報のキャッシュにはユーザー固有のタイムスタンプファイルを使用します。このtimestamp_type
オプションを使用して、使用されるタイムスタンプレコードの種類を指定できます。可能な値は次のとおりです。
global
端末または親プロセスIDに関係なく、ユーザーのすべてのログインセッションに単一のタイムスタンプレコードが使用されます。追加レコードは、パイプラインで複数回使用されたときにパスワードプロンプトをシリアル化するために使用されますが、sudo
これは認証には影響しません。
ppid
単一のタイムスタンプレコードは、同じ親プロセスID(通常はシェル)を持つすべてのプロセスに使用されます。同じシェル(または他の共通の親プロセス)で実行されるコマンドには数分間パスワードは必要ありませんtimestamp_timeout
(デフォルトは15分)。他の親プロセスID(シェルスクリプトなど)を使用してsudoを介して実行されるコマンドは、別々に認証されます。
tty
各エンドポイントはタイムスタンプレコードを使用します。これは、ユーザーのログインセッションが独立して認証されることを意味します。端末がない場合、動作はppidと同じです。同じ端末で実行されるコマンドには数分間パスワードは必要ありませんtimestamp_timeout
(デフォルトは15分)。デフォルト値はです
tty
。この設定はバージョン 1.8.21 以降でのみサポートされます。
その場合はいtty
またはに設定すると、ppid
毎回パスワードを要求する理由が説明されます。実行中の各コマンドは別々のttysudo
で実行されます。gnome-terminal
そして親PIDが異なります。
global
必要なことを行う唯一の設定のように見えます。
これが役に立たない場合、あなたのtimestamp_timeout
設定は何ですか?に設定されています0
か?デフォルトは15分でなければなりません。
他のtimestamp*
設定(timestampdir
、、timestampowner
)も確認してください。もしtimestampdir
(私のDebian sidシステムのデフォルトは/実行/sudo/ts)が存在しないか、rwXではありませんtimestampowner
(デフォルト)根)。
sudo
説明的なエラーメッセージはsyslogを介して記録されます。そしてこれらの設定でエラーが発生した場合は、管理者(root)に電子メールを送信してください。
/etc/sudoers
別のオプションは、ユーザーがiftop
パスワードを入力しなくても実行できるように編集することです。例えば
yourusernamehere ALL= NOPASSWD: /usr/sbin/iftop
バラよりパスワードを要求せずにルートで特定のプログラムをどのように実行できますか?これについての詳細は次のとおりです。