半角スペースの有無だけでサーバーをぶっ壊しそうになった話
本記事は「本番環境でやらかしちゃった人 Advent Calendar 2021」24日目となります。
前提事項
事故を起こしたのは確か6年くらい前
サーバーのOSは確かCentOS6
諸事情でワンオペだった
当時の記憶を元にした再現であり多少盛ってるので細かいツッコミは勘弁してください
何をしてたか
~~~本番環境作業中~~~
(手順書ナガメー)
よし、次はファイルの移動か
mvコマンド入力してカチャカチャカチャ…ッターン
mv: cannot move /bin/ac to '/home/user/work_dir': Permission denied
mv: cannot move /bin/aconnet to '/home/user/work_dir': Permission denied
mv: cannot move /bin/addr2line to '/home/user/work_dir': Permission denied
mv: cannot move /bin/alias to '/home/user/work_dir': Permission denied
mv: cannot move /bin/alsaloop to '/home/user/work_dir': Permission denied
mv: cannot move /bin/alsamixer to '/home/user/work_dir': Permission denied
mv: cannot move /bin/amidi to '/home/user/work_dir': Permission denied
mv: cannot move /bin/amixer to '/home/user/work_dir': Permission denied
mv: cannot move /bin/amuFormat.sh to '/home/user/work_dir': Permission denied
mv: cannot move /bin/analog to '/home/user/work_dir': Permission denied
mv: cannot move /bin/aplay to '/home/user/work_dir': Permission denied
mv: cannot move /bin/aplaymidi to '/home/user/work_dir': Permission denied
mv: cannot move /bin/appstream-compose to '/home/user/work_dir': Permission denied
...以下省略
!!!!!!!!?????????????????????????
えっえっ何これやべぇ止めなきゃ!Ctrl+C
ポチー
何が起きたのか
// 実行したかったコマンド
# mv /tmp/logfile.zip /home/user/work_dir
// 実際に実行したコマンド
# mv / tmp/logfile.zip /home/user/work_dir
// 実行したかったコマンド
# mv /tmp/logfile.zip /home/user/work_dir
// 実際に実行したコマンド
# mv / tmp/logfile.zip /home/user/work_dir
何が違うかおわかりでしょうか
実行したかったのは単純なファイル移動コマンドでしたが
ファイルの先頭の /
と tmp/logfile.zip
の間に半角スペースが混ざっていました
これにより本来なら/tmp/logfile.zip
を/home/user/work_dir
に移動するはずが
/
配下全てとカレントのtmp/logfile.zip
を/home/user/work_dir
に移動するという
rm -rf /*
に匹敵する即死コマンドに変貌したわけです
その後どうした
まずは移動先となった/home/user/work_dir
の中を確認
不幸中の幸いとしてrootで作業しておらずsudoも付けず、すぐ処理を止めたことにより
移動されてしまったファイルは無かった(確か)ので首の皮は繋がっていました
一応作業ログを見返しやばそうな出力は無かったので
ワンオペだったのをいいことに事実を隠蔽し、何事も無かったように作業を再開しました
その後不具合は起きなかったので多分大丈夫だったでしょう!!!!
ヨシ!じゃないが
なぜ惨劇は起きかけたか
いうまでもなくワンオペでクロスチェックも何もあったものじゃなかった環境ですよね
ただし当時は人がいなくてペアとなる人員を用意できなかったプロジェクトだったのお察しでしょう
二度と惨劇を起こさないためにどうしたのか
正直このタイプの凡ミスはどうしたって無くならないような気もするんですが
今回は手順書を横目で見ながら長いコマンドを手打ちしていたことがミスを誘発した一因と思っています
これに限らず、当時の手順書は実行するコマンドが多く長いものもあったので
実行するPC内に手順書を置く許可を貰い、コピー&ペーストでコマンドを実行させてもらえるように交渉しました
(サーバーへ接続するのは専用のPCからのみだったため)
最後に
筆者はこの事故の影響でmvコマンドがトラウマになりました
今でも可能ならcp
してからrm
するという手間を挟んでファイル移動を行っています
(追記)
何も変わってないやんという感じですが
cp
というクッションを挟むことによって慎重に確認を行うための個人的な儀式です
さすがに何年も経った今はこんなこと起こさないはずだけどミスると一発アウトはどうしても怖い
Author And Source
この問題について(半角スペースの有無だけでサーバーをぶっ壊しそうになった話), 我々は、より多くの情報をここで見つけました https://qiita.com/coatly/items/e49c0c3cf63da306404b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .