2012-07-31

UbuntuのUnityのメニューバーの右上の不要なアイコンを消す方法並びにGuestアカウントのセキュリティ

UbuntuのUnityのmenu barには、私にとって不要なアイコンがある。まず、メールのアイコンだ。これは、メールやチャットやTwitterなどにアクセスできる機能だ。しかし、私はその手のサービスを利用するのには、別のソフトウェアを使っているので、このアイコンからアクセスできる機能は使っていない。むしろ、このアイコンは隣のネットワークとかサウンドのアイコンをクリックしたい時に邪魔になる。

このアイコンは、indicatorと呼ばれている。メールのアイコンが必要なければ、indicator-messagesというパッケージを取り除くことによって、消すことができる。

sudo apt-get remove indicator-messages

さて、もうひとつ、私にとって不要なindicatorがある。ユーザー切り替えの項目だ。Ubuntuに移行した当初、このアイコンに悩まされた。というのも、このメニュー項目は、確認もせず有無を言わさずログイン画面に切り替わってしまう。しかも、このメニューは非常に誤クリックしやすい位置にあるのだ。当時、一瞬何が起きたか分からずに困惑したものだ。思うに、大多数のユーザーにとって、あるユーザーでログインしたままのユーザー切り替えは不要ではないか。

残念ながら、この機能を受け持つパッケージ、indicator-sessionを取り除くと、シャットダウンなどのindicatorも消えてしまう。幸い、ユーザー切り替えの項目だけを非表示にする方法はある。

dconf-editorでapps→indicator-sessionを開き、user-show-menuのチェックを外せば良い。

ちなみに、lightdm上でログインしたままのユーザー切り替えは、dm-toolを使うことによってコマンドからでも行える。

$dm-tool -h
Usage:
  dm-tool [OPTION...] COMMAND [ARGS...] - Display Manager tool

Options:
  -h, --help        Show help options
  -v, --version     Show release version
  --session-bus     Use session D-Bus

Commands:
  switch-to-greeter                   Switch to the greeter
  switch-to-user USERNAME [SESSION]   Switch to a user session
  switch-to-guest [SESSION]           Switch to a guest session
  lock                                Lock the current seat
  list-seats                          List the active seats
  add-nested-seat                     Start a nested display
  add-local-x-seat DISPLAY_NUMBER     Add a local X seat
  add-seat TYPE [NAME=VALUE...]       Add a dynamic seat

さらに、Guestアカウントの問題もある。UbuntuのGuestアカウントの権限は、Apparmorによって厳しく制限されている。その設定ファイルは、/etc/apparmor.d/lightdm-guest-sessionにある。

view /etc/apparmor.d/lightdm-guest-session

読めばわかるが、理想とは裏腹に、この設定は危険である。なぜならば、compizの設定ファイルに対する書き込みを許可しているし、そもそも/etc/下への書き込みも許可している。コメントによれば、Compizのバグに対処するためらしいが、パスワードの設定されていないゲストアカウントにcompizの設定ファイルや/etc/下のファイルの書き込み権限を与える理由にはならない。バグによって機能しないのであれば、バグを直すまでGuestアカウントは無効にしておくべきなのだ。

この問題さえ解決されれば、UbubntuのGuestアカウントは、他人に一時的にコンピューターを使わせる際に使えるかもしれない。しかし、もし悪意を持った諜報員が、所有者の監視下にないコンピューターに物理的にアクセスできるならば、レスキューディスク的なものでブートしたり、あるいはHDDを取り外して別のコンピューターに接続した上で、必要な変更をするであろうし、やはりGuestアカウントの意味はよく分からない。

残念ながら、Guestアカウントを無効にする簡単な方法は用意されていない。用意するべきだと思うし、現在のApparmorの設定がバグ回避のために骨抜きである以上、デフォルトで無効にされているべきだと思う。Guestアカウントを無効にするには、 /etc/lightdm/lightdm.confを書き換えなければならない。このファイルを開くと、以下のようになっているはずだ。

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu

これに、"allow-guest=false"という行を付け加える。つまり、以下のようになる。


[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
allow-guest=false

あまりおすすめしないがワンライナーのために。

echo "allow-guest=false" | sudo tee -a /etc/lightdm/lightdm.conf

この変更をした後に、lightdmを再起動する必要がある。最も簡単な方法は、リブートすることである。一応、sudo restart lightdmでもいいのだが、もちろんこれは、ログアウトと同様、というよりもっと大きな効果がある。

No comments: