やってはいけないサーバーコマンド操作

やってはいけないサーバーコマンド操作

ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。

世の中ではGUIのOSが主流になって、仕事でしかコマンド操作を行わなくなったと思います。
そもそも、非エンジニアの人はコマンド操作を見ると、ドラクエの復活の呪文のようにも見えるらしいですね。

しかしサーバー運用を行っているエンジニアは、日々コマンドラインを基準に作業を行います。
そんな運用を行っていて、身の毛もよだつ体験をメモしておきたいと思います。

いずれもsu権限で行う事を前提にしてますが、一般ユーザー権限でも致命的になる可能性は高いので、参考にしてください。

ちなみに、一番有名な魔のコマンドは、管理権限で「rm -rf /」を実行する事でしょうね。
これは想像できるのでやる人はいないと思いますが・・・
(※すべてのファイルが問答無用に削除されます。警告も出ませんね。)

1.意図しないファイルが削除されます

「.ssh」など、ドットが先頭に付いているファイルやフォルダは、システムファイルとして認識されるため、
-aオプションのないlsコマンドでも表示されないのですが、.sshフォルダを削除しようとして、以下のようなコマンドを入力すると
あら不思議・・・

/homeディレクトリまるごと削除されてしまいます。

何故、こんな事になるのでしょう?
それは、通常「」アスタリスクを指定した場合だと、システムファイル以外のリストが対象になるのですが、「.」のように
ドットを先頭に含むとシステムファイルも対象になりlsコマンドで見かける「.」や「..」も対象になってしまう
ようです。

「.」や「..」が対象になるということは、2階層上位のディレクトリ、フォルダまでが削除対象となります。

同一階層で以下のコマンドを実行する事で、確認ができます。

./.*で上位の階層もリストされますね。

2.バックアップファイルが消えます

同一サーバー内で、複数のフォルダに同じようなファイルがあり、更新日付を元に重複データを削除しようと思った時、
rsyncコマンドで–remove-source-filesオプションを付けて、最新版以外は削除することにします。
別サーバーで行う場合はいいのですが、同一サーバーで行ってしまった場合に、以下のようなコマンドを実行してしまった場合・・・

この場合、 転送先が同じディレクトリになる失敗コマンドなんですが、rsyncが最新版を残してくれると思いきや、
なんとhoge.txtファイルは削除されてしまいます。

このオプションの怖いところで、転送後に転送元を削除するという流れの為、こういった事故が発生してしまいます。

rsyncを行う場合は、-nオプションをつけて、必ずドライラン(空運転)を行うようにすることで確認もできるので、一手間かけて、作業するように心がけましょう。

3.シンボリックリンク先が消えちゃうよ

同一サーバーでパーティションをまたいで、便利に階層を構築してくれるシンボリックリンクですが、これもちょっとしたミスでどえらい事になってしまうので、下記のようなコマンドに注意しましょう。

上記のように、シンボリックファイルに「/」スラッシュをつけてしまうと、元ファイルを削除しに行ってしまうので、本体が削除対象になってしまいます。
お〜こわ。

rmコマンドは、undoなどの処理が基本的に行えないため、細心の注意を払う必要があるので、ピリついて作業するようにしましょう。

まとめ

こういったミスは、慣れているエンジニアでも起こすこともあります。

会社で行っている場合は、一定のルールを作成して、多人数によるチェックや、使ってはいけないコマンド、上記のような、リスクを共有するなどの勉強会などが必要だと思います。

慣れている人は、コマンドラインで作業をするほうが早いという事もありますが、十分にリスクヘッジを行って扱うに越したことはありません。

fluentdでコマンドラインのログをリアルタイムに集積するという事も仕組みとして有効かもしれませんね。

とりあえず、良い子はマネしないでください。

ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。

【週刊bitWave】(メルマガ)始めました!

登録はこちらからメールアドレスを入力してお申込みください。

ご登録いただいたメールアドレスは 【週刊bitWave】の更新情報の配信にのみ使用します。

個人情報の取扱いに関しては、「プライバシーポリシー」をご確認ください。解除はいつでもこちらから行うことが可能です。

あなたにおすすめ

仮想環境で『Ansible』を使ってサーバ構築... 最近、サーバ構築を実施する必要がありました。 まずは仮想環境を作り、サーバ構築を……と思ったのですが、私はインフラ周りの経験が浅く、色々困ったことが頻出してしまいました。 今回の記事では、私と同じような “サーバ構築ビギナー” ...
内線電話用の番号検索|Slack APPで作ってみた... ショーケース・ティービーではメール誤送信防止という観点から、社内連絡ではチャットツールを使用しています。 現在使用しているツールは「HipChat」。 <bitWave関連記事『情報漏えいしないための決定打!”Hip Chat”』>...
Amazon EC2|Red Hat Linux 7.3で“Muninインストール“や“パッケージ導... ナマステ~! 私はナラヤンです! 今回が初投稿になるのですが、実はこれまで何度か本bitWave上でも登場していました。 <bitWave関連記事『おもてなしの企業の社員が、ネパール人をおもてなししてみた!』> <bitWave関...
継続的インテグレーションツール『Jenkins』を触ってみた... こんにちは。M.Sです。 現在、『Jenkins』からSeleniumを実行するお題に取り組んでいます。 『Jenkins』ってなに? 身近な継続的インテグレーションとは 『Jenkins』はjavaで実装されたオープンソー...