端末にsudo権限がある場合に警告し、残り時間を表示する方法は?


10

端末でsudo権限があることを確認するにはどうすればよいですか?(私がこれらの特権を持っていることを知っているので、私は単に入力するsudo -kことができます)ターミナルにもあまり多くの情報を追加しない方がいいでしょう、単に単純で小さなアラートのようなものです!

残り時間は不可能ですよね?

また、その特定の端末でこれらの特権を使用している時間を確認するにはどうすればよいですか?(したがって、と入力する代わりに、そのまま終了させることができますsudo -k)。Enterキーを押すたびに残り時間が表示されると思います。

編集:私はさらに調査し、/var/lib/sudo/$USER/$nPts($ nPtsは現在の現在の端末ptsですps -p $$)sudoコマンドが発行されるたびにタイムスタンプが更新され、sudoコマンドを使用する場合にのみアクセスできるため、残りの時間が常に設定済み...

PS .:その代わりに、私は試しましたalias sudo='sudo -k'が、すべてのコマンドにパスワードを入力する必要がありません...また、これalias sudos='sudo -k'(またはalias ssudo='sudo -k'、長い行を入力した場合は、Homeを押して「s」と入力するだけです)は、と入力して1つのコマンドのみを発行したいsudos。しかし、私が行動する必要があることを知るために私が通常のsudo特権を持っているときを私はまだ知りません...


2
なぜこれが反対投票されたのですか?これは最も明確な投稿ではありませんが、タイトルの質問は私にとっては有効な質問のようです(そして、かなり便利な質問です)
DaimyoKirby

何を明確にできると思いますか?私の未編集の最初の投稿は3倍大きく、より簡潔にするためにかなりクリアしました:)
Aquarius Power

遅かったと思います-もう一度読んだので、もっと理にかなっています。
DaimyoKirby 2013年

回答:


5

[私はまだよりよいanswearがあるかどうか知りたいと思います。]

私はうまくいく方法を見つけました、そしてプロンプトは一行に保たれます:

あなたの最後に~/.bashrcこれを追加してください:

function FUNCsudoOn() { 
    if sudo -n uptime 2>/dev/null 1>/dev/null; then 
        echo -ne "\E[0m\E[93m\E[41m\E[1m\E[5m SUDO \E[0m"; 
        #echo #without newline, the terminal seems to bugout with lines that are too big... discomment this if you find any problems...
    fi; 
}
function FUNCpromptCommand () { 
    FUNCsudoOn
}
export PROMPT_COMMAND=FUNCpromptCommand
#export PS1="\`FUNCsudoOn\`$PS1" #this also works, use instead of PROMPT_COMMAND

編集:私はそれが見つかったsudo -n uptimeあなたは、Enterキーを打つたびので、sudoのタイムアウトを更新します、そのsudoの時間が更新されます...無用の残り時間を知る作ること、それは常に15分に不履行、構成されたものになるよう.. 。

そして、あなたの好みに最適な色のフォーマットを見つけるには、次のようなオプションでScriptEchoColorを使用できます--escapedchars

echoc --escapedchars "@{nRlyo} SUDO " #that outputs below...
echo -e "\E[0m\E[93m\E[41m\E[1m\E[5m SUDO \E[0m"

点滅削除だけを停止するには\E[5mのように\E[0m\E[93m\E[41m\E[1m SUDO \E[0m


4

あなたの端末は、「これを行わないでください」のような愚かなことをしない限り、「sudo特権」を持ちsudo bash ません。

「通常のsudo特権を持っている」ために必要なのsudoは、コマンドの前に入力するのを控えることだけです。

/usr/bin/id何をするかを確認する良い方法sudoです。例えば:

id -a        # returns my UID info
sudo id -a   # returns root's info
id -a        # me again
sudo id -a   # root again

sudomanページには、「sudoersファイル(5)で上書きされない限り、sudoersのポリシーは、15分間の資格情報をキャッシュする」と言います。つまり、デフォルトでは、sudoコマンドを発行(およびパスワードを入力)した後、14.9分間待機してから2番目のsudoコマンドを発行すると、パスワードを再入力する必要がなくなります。15.1分待つと、パスワードを再入力する必要があります。sudo -k15分のタイマーをただちに期限切れにするだけです。私が見ることができる唯一の用途sudo -kは、あなたがロックを解除した端末を信頼できない人に譲ろうとしている場合ですUID 0


sudoコマンドの前での入力を控える」と言った。しかし、ファイアウォールルールを確認したい場合は、入力iptables -Lしないと機能しませんsudo iptables -L。私の要点は、実際にどのようにsudoの使用を回避できるかということです。
アクエリアスパワー

また、残り時間については、端末でEnterキーを押すたびに残り時間を知りたい。についてsudo -k、私はクラッカーが自分のマシンにリモートでアクセスしようとするのを心配しています(とにかく彼らがそれを実行できるかどうかは本当にわかりません...)、または少しの間ロックしないでマシンを開いたままにしておく場合...本当のポイントは、私はそれをこのようにしたいです!私が入力した気にいけないsudo -k多くの時間が私はこのようにそれを行うとき、私は良い感じする必要があるとして、後でもう一度、私のパスワード!:)
Aquarius Power

「sudoの使用を避ける」?Sudoは、ルートパスワードを配布したり、バイナリをsetuidしたり、を使用したりするためのソリューションでした/bin/su。破棄してもよろしいですか?「自分のマシンにリモートアクセスします...」そして、おそらく、引き継ぎ/proc/YourPID/fd/{0,1,2}ます。いいえ。マシンがリモートでアクセスされる場合は、Bad GuyがUID 0に簡単にアクセスできます。このレベルの問題が発生する前に、Linux-fooを増やす必要があります。
ワルティネーター2013年

あなたがすべきのように申し訳ありませんが暴言のために、それが鳴りalias k=/usr/bin/sudo -k、交換してくださいsudoへの呼び出しをラップし、エイリアスやbashの機能を使用してコマンドを/usr/bin/sudoして/usr/bin/touch $HOME/tmp/$$/sudotime、そして最後に、$ {{時間(今)を印刷するために何かを追加-時間($ HOMEを/ tmp / $ $ / sudotime)))Bashプロンプトで。ささいなことではありませんが、気分が良くなるなら、それを試してください。
ワルティネーター2013年

それは興味深いです。また、試みが発生したときにログに記録します。さらに良いことに、ネットワーク通信をシャットダウンします。しかし、私は非表示にしても、sudo任意のランダムな単語へのエイリアスで、彼らはまだ入力することができ/usr/bin/sudoのではなく、sudoかつsudoがないように私が本当の変更された場合、それはまだ仕事:(。とにかく私はアイデアのように..私は疑問に思うでしょう/usr/bin/sudo、それ以外の何かを壊しますがそれを使用するすべての私のスクリプト..私はそうしても、彼らは、スクリプトを読み込むことで、sudoはなったものを推測することができ...
アクエリアスパワー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.