私たちのチームのほとんどの人はsudoアクセス権を持っています。しかし、私はまだsudo suを実行する前に確認したいと思います。ユーザーがYを押すと彼をrootとして受け入れ、それ以外の場合は自分のホームディレクトリに戻ります。以下のコードを試しましたが、ユーザーが別のキーを押すと、まだrootとしてログインできます。助けてください
!/bin/bash
echo -e "You are entering into high security env."
echo -e "If You are still not sure about the purpose, please logout of root user immediately."
echo -e "Contact admin immediately in case of any doubt."
sleep 1
echo -e "Press Y if you still want to enter as a root user"
read ch
case $ch in
'Y'|'y' )
echo -e "Risk is all yours. PT team welcome you here."
;;
*)
bash /root/.bash_logout
exit
;;
esac
答え1
明らかに、あまりにも多くのユーザーがsudoアクセス権を持っていることが懸念されます。
車輪を再発明するよりも標準的なアプローチを推奨し、ルートは.profile
実行時にのみ実行されるため、sudo su -
sudoのエイリアスはあまり便利ではなく、事前に印刷されているためです。
この/etc/sudoers
構成には、各ユーザーが初めて使用したときに受信するデフォルトの警告を永久に維持するオプションがあります。
あなたはあなたのローカルシステム管理者から一般的な講義を聞いたと思います。通常、次の3つに帰結します。
#1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility.
ルートパスワード:
常に開いたままにするには、/etc/sudoers.d/privacy
次の内容を含むファイルを作成します。
Defaults lecture = always
現在のユーザーとして試すには、まずログアウトする必要があります。
デフォルトのメッセージはsudoソースコードにあり、それを変更するにはsudoを再コンパイルする必要があります。これを行わないことをお勧めします。頑固な場合は、apt-srcでパッケージをコンパイルしてから固定/固定する必要があります。なぜなら、ランダムに更新されるのではなく、手動でのみ更新されるからです。
お客様のリクエストに対する補足として、人々の行動を記録し始めることを強くお勧めします。特に人々が無制限にsudo
アクセスできる場合にはさらにそうです。
次に追加する場合/etc/bash.bashrc
:
readonly PROMPT_COMMAND='history -a >(logger -t "commandlog $USER[$PWD] $SSH_CONNECTION")'
これにより、すべてのユーザーコマンドがシステムログに書き込まれます。
ロックされた中央のsyslogサーバーにログを転送するように設定しますsyslog
。これにより、ハッカー攻撃や悪意のあるsysadminが発生しても証拠を操作できなくなります。
答え2
スクリプトはどこで呼び出されますか?ルートの場合、.bash_profileまたは.bashrc?
私はこの行がユーザーをログアウトするとは信じていません:
bash /root/.bash_logout
.bash_logoutファイルのコマンドを実行する新しいbashプロセスを作成します。
次の行を試してみてください。
logout
アップデート:または試してみてください:
exit
シェル起動ファイルが警告スクリプトを実行していると仮定すると、「exit」はシェルではなく警告スクリプトのみを終了します。
"exit"を実行しているbashコードが別の警告スクリプトではなく.bashrcファイルにある場合は、シェルを終了する必要があります。