約 6 分で読めます。
この記事でrm -rf /*をやってしまったことを晒しました。
これは相当ショックで、対策を立てないとダメだろうということで、いくつか対策しました。
それをお話します。
rootユーザー時の背景色を真っ赤にする
rootユーザーになったとき、緊張感を高めるために背景色を赤にしました。
当然ですが、通常ユーザー時は赤くなりません。
動画を撮ってみました。
rootユーザーのときだけ赤くなっているのがわかります。
これは/etc/bash.bashrcで実現しています。
uidが0(=root)のときは背景色をA00000にして赤くし、それ以外なら初期値1B2224にしています。
1B2224は自分の好きなRGB色でOK。
たまたまManjaro Linuxでの初期値が1B2224だったので、合わせただけ。
if [ -n "$SSH_TTY" ]; then if [ $UID -eq 0 ]; then echo -e "\033]11;#A00000\a" else echo -e "\033]11;#1B2224\a" fi fi
また、suでの作業が終わってもとのユーザーに戻ったとき、赤から戻すため、/etc/bash.bashrcにてsuをaliasとシェル関数で動作変更しています。
こちらの記事を参考にいたしました。感謝です。
mysu() { if [ 0 -eq $# ]; then \su;. /etc/bash.bashrc else \su "$*";. /etc/bash.bashrc fi } alias su='mysu'
sudo -sを禁止する
rootに入るときによくやってしまっているsudo -sは禁止するようにしました。
/etc/bash.bashrcで。
mysudo() { if [ 0 -eq $# ]; then \sudo else if [ "-s" == $1 ]; then echo "This option is not allowed." else \sudo $@ fi fi } alias sudo='mysudo'
sudoでrmさせないようにする
sudoでrmすると以下の通り「できないよ、ごめんよ」と言われるようにしました。
$ sudo rm -rf / [sudo] password for yasu: Sorry, user yasu is not allowed to execute '/usr/sbin/rm -rf /' as root on nextcloud-server.
これは/etc/sudoersに以下の通り記載することで対応しました。
通常ですと4つめのALLで終わることが多いと思いますが、!/usr/bin/rmと記載することで、/usr/bin/rm以外はOK、としました。
yasu ALL=(ALL:ALL) ALL, !/usr/bin/rm
sudoで実行可能なファイルの置き場所を限定する
これはあまり効果が無いかもしれませんが、やらないよりはマシだろうと。
/etc/sudoersにて↓の設定がコメントアウトされているので、コメントを外しました。
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
sudo時にインパクトのある警告を毎回表示させるようにする
↑の画像にもある通り、sudo時にそれなりに目立つ警告を出すようにしました。
これはこちらの記事に説明があったのをほぼそのまま使わせていただきました。ありがたい。
Link
/etc/sudoersに以下のようにして毎回/etc/sudo_lecture.txtの内容を表示させるようにしました。
毎回ではなくて、ログイン後の初回だけなのですが。
Defaults lecture=always Defaults lecture_file=/etc/sudo_lecture.txt
/etc/sudo_lecture.txtは↑のLinkからダウンロードしてもらうのが良いと思います。
バイナリデータが含まれ、テキストでの提供が難しいと思ったので。
【番外編】visudoで使うエディターをvimにする
初期状態ではviが指定されていますが、さすがにきつかったのでvimにしました。
/etc/sudoersにて。
Defaults editor=/usr/bin/vim
終わりに
いかがでしたか。
今後なにか別のヒヤリハット案件があれば、改良していくつもりです!
Comments