Ubuntu Weekly Recipe

第368回エイプリルフール

本日は4月1日です。暦の上では今日から4月ではあるのですが、⁠今日はまだ3月だから、年度は変わってないから」とうそぶく人が出てくるエイプリルフールでもあります。そこでUbuntuを使って人をだますいたずらを考えてみましょう。

人をだますということ

Ubuntuは、と言うよりも一般的なOSのほとんどすべては、マルチアカウントに対応しています。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 残念ながら日本語には非対応
図1 残念ながら日本語には非対応

lolcatパッケージのlolcatはテキストを虹色にするコマンドです。

図2 ⁠-a」オプションでアニメーションも可能
図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環境では若干アニメーションが乱れる
図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の方はthinkbosskillといった便利なコマンドの情報が含まれています。funny-manpagesの方はちょっと下ネタ寄りなので、具体的なコマンド名の掲載は控えておきましょう。

お遊びという意味では、bsdgamesパッケージにはゲームだけでなくいろいろな、頭字語を変換するwtfや数字を英語表記に変換してくれるnumber文字列をパンチカードに変換するbcd便利ツールも備わっています。特に素数を表示してくれるprimesは、落ち着いて素数を数える必要がある状況が頻発するような人にとっては、手放せないコマンドになるはずです。

ちなみにUbuntu標準のデスクトップ環境であるUnityにはイースター・エッグは存在しません。これは「Alt + F2」を押して表示されるテキスト領域にfree the fishと入力すればわかります。ただしgegls from outer spaceの結果を考えると、そのうち実装されるかもしれません。

おすすめ記事

記事・ニュース一覧