本日は4月1日です。暦の上では今日から4月ではあるのですが、「 今日はまだ3月だから、年度は変わってないから」とうそぶく人が出てくるエイプリルフールでもあります。そこでUbuntuを使って人をだますいたずらを考えてみましょう。
人をだますということ
Ubuntuは、と言うよりも一般的なOSのほとんどすべては、マルチアカウントに対応しています。1つのシステムの中に、複数のユーザーがログインする可能性があるわけです。もしあなたがあるシステムに対して管理者権限を持っているのであれば、他のユーザーが利用する部分に細工をすることで、簡単に他のユーザーを「だます」ことができるのです[1] 。
[1] 言い方を変えると、他の人が管理するシステムにログインする場合はそういうリスクがあるということです。ある程度の信頼関係が前提にはあるものの、リスクの存在も頭の片隅に残しておくことが肝要です。また、エイプリルフールと同じく、みんながみんな冗談を受け入れるわけではないことも覚えておきましょう。
aliasの設定
たとえば有名な教育アプリとして「slコマンド 」が存在します。これはよく使う「ls」を「sl」とタイプしてしまうミスを矯正するために、slと「ミスタイプ」した時は端末の中に機関車を走らせる教育的コマンドです。そこでslパッケージをインストールしたうえで、/etc/profileや/etc/profile.d/以下に「alias ls='sl'」とでも書いておけば、bashをはじめとする/etc/profileを読み込むシェルならもれなくlsコマンドがslコマンドに置き換わります[2] 。
aliasはUbuntuの標準環境でもいくつか設定されています。lsやgrep時に色付きで表示されるのは.bashrcの中で「--color=auto」オプションを付けているからですし、「 ll」で詳細表示、「 la」でドットファイルの表示もaliasで実現しています。時間がかかるコマンドを実行する時に「時間のかかるコマンド; alert」としておけば、コマンド終了時にその戻り値に応じて通知メッセージをポップアップするのも、aliasでnotify-sendの複雑なオプションを1つにまとめているからです。
他にも「( あなたが愛用しているわけではないテキストエディタの名前を入れてください)のコマンド名」 を「( あなたが愛してやまないテキストエディタの名前を入れてください)のコマンド名」 に置き換えるようなaliasを設定することも可能です。可能ではありますがこれは冗談ではすまされず、場合によっては血を見ることにもなりますので、あまりおすすめはしません。
MOTDの改変
「MOTD (message of the day) 」はユーザーがログインした時に、ログインコンソールに表示されるメッセージです。デスクトップユーザーにはあまり馴染みがないかもしれませんが、Ubuntu Serverを使っているユーザーなら、IPアドレスやロードアベレージ、アップデートの必要性の有無などが表示されるところを見たことがあるでしょう。
伝統的にはこれはログイン時に/etc/motdの内容を表示することで実現しています。Ubuntuの場合は、update-motd を用いて/etc/update-motd.d以下のスクリプトによって生成しています。よって、ここに新しいファイルを追加すれば、任意のメッセージをユーザーがログインした時に表示できるのです。
ところでfortune と言う警句・名言を表示するコマンドがあります。これをMOTDと組み合わせて使うと、ログインの度にランダムにメッセージを表示できます。
$ sudo apt - get install fortune - mod fortunes
$ fortune
I am two fools , I know , for loving , and for saying so .
-- John Donne
さらに世の中には「テキストを装飾する」コマンドが数多く存在します。そのうちUbuntuのリポジトリにあるものをいくつか紹介しておきましょう。
cowsayパッケージの「cowsay 」コマンドは、渡した文字列を「牛さん」に喋らせるコマンドです[3] 。
$ cowsay - e "><" "Ubuntu Weekly Recipeは毎週水曜掲載!"
______________________________
< Ubuntu Weekly Recipe は毎週水曜掲載! >
------------------------------
\ ^ __ ^
\ (><) \_______
( __ ) \ ) \/\
||---- w |
|| ||
「-e」オプションは牛さんの目を変えるオプションです。さらに「-f」オプションを使えば、牛さん以外に/usr/share/cowsay/cows/に定義されたアスキーアートを使用できます。
$ cowsay - f stegosaurus Ubuntu Weekly Topics もよろしくね!
_____________________________
< Ubuntu Weekly Topics もよろしくね! >
-----------------------------
\ . .
\ / `. .' "
\ .---. < > < > .---.
\ | \ \ - ~ ~ - / / |
_____ ..-~ ~-..-~
| | \~~~\.' ` ./~~~/
--------- \__ / \__ /
. ' O \ / / \ "
(_____, `._.' | } \/ ~~~/
`----. / } | / \__/
` -. | / | / `. ,~~|
~-.__| /_ - ~ ^| /- _ ` ..- '
| / | / ~-. `-. _ _ _
|_____| |_____| ~ - . _ _ _ _ _>
toiletパッケージで提供している「toilet 」コマンドは、文字そのものを巨大化し、カラフルに修飾します。「 -F list」で装飾内容のリストが表示されますし、「 -f」オプションで/usr/share/figlet/にあるフォントを選択できます。
図1 残念ながら日本語には非対応
lolcatパッケージの「lolcat 」はテキストを虹色にするコマンドです。
図2 「 -a」オプションでアニメーションも可能
罵られたいあなたに
sudoはもっとも使われるコマンドの1つでしょう。sudoの設定には「パスワードを間違った時にそのユーザーを罵る」という設定があります。何を言っているかわからないかもしれませんが、そういう設定があるのです。
次のようにvisudoコマンドを使って以下の1行を追加してください[4] 。
$ sudo visudo - f / etc / sudoers . d / insults
Defaults insults
「-K」オプションで一度sudoの認証済み情報を削除し、パスワードを再度問い合わせるようにしたうえで、意図的にパスワードを間違ってみましょう。
$ sudo - K
$ sudo ls
[ sudo ] password for shibata :
Have a gorilla ...
[ sudo ] password for shibata :
Speak English you fool --- there are no subtitles in this scene .
[ sudo ] password for shibata :
Are you on drugs ?
sudo : 3 incorrect password attempts
猫好きのあなたに
ここまではCUI向けの「仕掛け」でした。最後にGUI向けの仕掛けを1つだけ紹介しておきましょう。
「oneko 」はマウスカーソルを追いかける猫を表示するアプリです。ただそれだけです。「 いたずら」に使えるかどうかは難しいところではありますが、Upstartを使ってログイン時は必ず起動するようにしておけば、うっとおしい……じゃない、癒されることこの上ありません。
図3 Unity環境では若干アニメーションが乱れる
onekoのマニュアル にもあるように、「 -tora」オプションを付けるとトラ柄に、「 -dog」オプションを付けると犬にも変更できますし、「 -sakura」や「-tomoyo」といったオプションもあります。
イースター・エッグあれこれ
日本では復活系業界もしくはゆで卵業界が陰謀を張り巡らせていないせいかまだあまり馴染みはありませんが、キリスト教圏では3月末から初夏にかけてイースターと呼ばれる重要な祭日が存在します。そのイースターに関する有名な習慣の1つが「イースター・エッグ 」です。
この習慣にちなんで、ソフトウェアの中に隠されたメッセージや機能なども「イースター・エッグ」と呼んだりします。たとえば「apt-get moo」と入力すると「牛さん」が表示されたり、vimで「:help 42」と入力すると生命、宇宙、そして万物についての究極の疑問の答え について教えてくれたりします。普段よく使うソフトウェアにも存在するかもしれませんので、FLOSSの醍醐味としてコードを探索するのも楽しいかもしれませんね。
イースター・エッグとは異なりますが、普段よくお世話になるmanpagesとは別に、より高度で重要な機能に関するマニュアルを厳選したパッケージも存在します[5] 。
$ sudo apt - get install funny - manpages asr - manpages
「asr-manpages 」の方はthink やbosskill といった便利なコマンドの情報が含まれています。「 funny-manpages 」の方はちょっと下ネタ寄りなので、具体的なコマンド名の掲載は控えておきましょう。
お遊びという意味では、bsdgames パッケージにはゲームだけでなくいろいろな、頭字語を変換するwtf や数字を英語表記に変換してくれるnumber 、文字列をパンチカードに変換するbcd 便利ツールも備わっています。特に素数を表示してくれるprimes は、落ち着いて素数を数える必要がある状況が頻発するような人にとっては、手放せないコマンドになるはずです。
ちなみにUbuntu標準のデスクトップ環境であるUnityにはイースター・エッグは存在しません。これは「Alt + F2」を押して表示されるテキスト領域に「free the fish 」と入力すればわかります。ただし「gegls from outer space 」の結果を考えると、そのうち実装されるかもしれません。