hostname コマンドだって?

Raspberry Pi をいじるのに、いろいろ雑誌を読み込んでたりする。
今回、日経Linux を読んでたんだ。



コレね。


で、ふむふむと読んでたんだけど、「シス管系女子」なる漫画で思考停止。



え?
え〜??
ホスト名を確認するのに、hostname コマンドを使うの?
シェルスクリプトだから問題にならないんだろうけど…


hostname コマンドは、ホスト名を変更できるコマンドのこと。
引数がなければ、自分のホスト名を表示する。


つまり間違ってスペースの後に文字列なんか入れてたら、ホスト名が変わっちゃうんだけど。
この後の展開で case 文で hostname コマンドを使ってる。
つまり、分岐させたいサーバの全部が同じホスト名に変わる可能性もあったりする。


結構怖いね、シス管系女子…


ちょうど目の前に Linux が動いてるちっこいマシンがあるので、試してみた。

pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.18.7-v7+ #755 SMP PREEMPT Thu Feb 12 17:20:48 GMT 2015 armv7l GNU/Linux
pi@raspberrypi ~ $ echo $(hostname)
raspberrypi
pi@raspberrypi ~ $ echo $(hostname a)
hostname: you must be root to change the host name

pi@raspberrypi ~ $


おっと、管理者権限がなかった。
そう考えると、安全といえば安全なのかな?
でもシェルスクリプトの用途はバックアップだったし、普通なら root 権限を使うよね?
権限がないのでバックアップ出来てませんでしたなんて、アホな話だし。
今どきは root を使わないのかなぁ…


一応、root でもやってみる。

root@raspberrypi:~# uname -n
raspberrypi
root@raspberrypi:~# echo $(hostname a)

root@raspberrypi:~# uname -n
a
root@raspberrypi:~# hostname raspberrypi
root@raspberrypi:~# uname -n
raspberrypi
root@raspberrypi:~#


うん、やっぱりホスト名が変わるよねぇ
でも試してみて、ちょっと安心した。
ユーザの作成したデータなら、バックアップ用のユーザで必要なファイルをバックアップすればいいか。
あえて権限を変えたファイルなんて、そう大切なものでもないだろうし。
普段 root 権限でしかサーバ触ってないとか、あやしい管理者やってるのでこんな不安を抱えることになるんだろうな。


あ。


ふと思ってしまった。
今なら伝説のコマンドも打てそうな気がする。

root@raspberrypi:~# rm -rf /


これで空も飛べるような気がするよ。


…って、やらないよ!!


〜〜 2015.3.23 追記 〜〜
著者様にご考慮頂いてしまって、恐縮しきり。
拙いブログへのご対応、ありがとうございます。


Latest topics > シス管系女子で取り扱っている解説の妥当性、危険性について - outsider reflex


漫画が前提とするスキルレベルが違うので、当たり前といえば当たり前なんですよね。


以下、言い訳をぐだぐだと。


まず、私自身の職場環境でいうと hostname コマンドを手順書に書いた瞬間に怒られます。
そして uname -n を使うように指導されます。
過去、実際に hostname コマンドでホスト名を変えちゃった人がいるんですね。


で、何が起こったかと言う前に、知っておくべき内容を説明します。
システムって、クラスタ環境にすることもあります。
なぜ冗長構成にするかと言えば、そのシステムが止まるとどえらい額の損害が発生するとか、人の生死にかかわるとか、いろんな理由があるわけですが、とにかくシステムを止めちゃうとダメだからです。
このシステムには複数のサーバがあって、普段使う方をアクティブ、それが機能しなくなったら切り替えて使う方をスタンバイと言います。
システムをメンテナンスする際は、両方にログインしてホスト名を確認しながら作業する必要があったりします。
とあるクラスタ環境(冗長構成)では、ホスト名で生死を判断してアクティブとスタンバイを切り替えます。
当然、自分のホスト名も管理しています。
そんな環境にあるアクティブ側システムで自分自身のホスト名が分からなくなったとき、自分を探し始めてシステムが停止します。
スタンバイ側システムへ切り替われば問題になりませんが、HeartBeat ではアクティブ側システムが正常稼働しているように見えたんですね。
なので、システム全体が沈黙。
ロジックとしてはこんな感じだったと思います。
ちょっと経過はうろ覚えで申し訳なく、間違っていたらごめんなさい。


要は、ここではホスト名が変わるとシステムが止まるようなソフトウェアがありましたと言いたいんです。
(私の知っている事例ではクラスタソフトでしたが)


それで hostname コマンドでホスト名を変えた人の話に戻るのですが、もしかするとどえらい損害が発生したり、人の生死に関わるかもしれない障害が発生したわけですね。
その時は謝って、会社がペナルティを受けるかもしれないレベルで済んだらしいですが(検証機があったのに検証してなかったとか、問題行動もたくさんあったらしいですが、注意文で回ってきたのを読んだだけなので更なる詳細は不明)。
そりゃ、上司も青筋立てて怒ろうってもんです。


中級者以上になるなら知っておいてもらえると嬉しい、ちょっとした SE 残酷物語風の言い訳でした。



…もっと言えば、uname -n を使うべき職場なら、上司から注意されるから hostname で良いのかとも思い直した月曜日。