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

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

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

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

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

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

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

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

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

$ rm -r /home/test-user/.*

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

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

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

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

$ ls -lha ./.*

./.:
total 44K
drwxr-xr-x  4 root root 4.0K Aug  5 11:43 .
drwxr-xr-x 11 root root 4.0K Jun  2 12:50 ..
-rw-r--r--  1 root root 7.9K Jul 21 14:35 .ssh

./..:
total 120K
drwxr-xr-x 11 root  root    4.0K Jun  2 12:50 .
drwxr-xr-x 21 root  root    60K May 20  2014 ..
drwxr-xr-x  3 root  root    4.0K Jul 21 17:41 test-user
drwxr-xr-x  4 root  root    4.0K Aug  5 12:19 admin

./.ssh:
total 16K
drwx------ 2 root root 4.0K Apr 23 16:11 .
drwxr-xr-x 4 root root 4.0K Aug  5 11:43 ..
-rw------- 1 root root  423 Apr 23 16:11 authorized_keys

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

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

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

$ cd /var/www
$ rsync ./hoge.txt ../www —remove-source-files

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

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

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

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

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

# webのドキュメントrootの指定でシンボリックリンクを作成します。
cd /home/test-user/
$ ln -s /var/www/ ./www

# シンボリックリンクファイルを削除する
$ rm -rf www/

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

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

まとめ

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

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

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

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

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

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

この記事を書いた人
アバター
下駄(弓削田)
Creativeに生きるRunner

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

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

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

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

あなたにおすすめ