落穂拾い

Gleanings in my life

uidの変更 @ Momonga

2005年12月28日 23時59分52秒 | Linux
最近ではユーザID(uid)はあまり気にされないものなのだろうか?
Momongaをインストールする際に一般ユーザを作ることを勧められて作ったのだが、その際、uidを選ぶことはできなかった。

もちろん、この Momonga だけを使っている分には uid なんて何番でも関係無い。ただ、他にも UNIX/Linux な環境があるとするとちょっと気になってくるものだ。nfsで相互にマウントするときはもちろん、外付けUSBハードディスクなどに UNIX/Linux なパーティションを作った場合などは、是非とも uid を統一しておきたいものだ。そうでなければファイルを自由気ままに処理できない。

Momonga では最初のユーザに問答無用で 500 番を与えてくれるのだが、私は従来より1000番台のある値で統一している。もともとは自分で管理していない職場のサーバで割り振られた uid なのだが、なんだかんだで外付けHDDに入っているデータも自分で管理しているファイルサーバも何もかも同じ uid で統一してある。というわけで、500番の uid を自分の好きな番号に変更することにした。

gnomeのメニューに「ユーザとグループ」というものがあるが、これは system-config-user を起動する。GUIで初心者には分かりやすい一方で、玄人には「何がなんだかさっぱりなブラックボックス」となってしまうツールだ。このツールでユーザを管理するのが Momonga / Fedora 的な正当派だろう。しかしである。このツールには uid を設定する項目がない。

というわけで、よくある usermod というコマンドを探してみる。/usr/sbin の中にちゃんとあった。で、これで uid を変更する。

/usr/sbin/usermod -u 10xx gleaning

として uid を 10xx 番に変更した。かなり時間かかる。どうやら既存ファイルの uid も変更してくれているらしい。普段、こんなコマンドを実行する機会はまったくないから(普通はuidを選んでユーザを作るからなぁ)、新鮮な驚きである。

と、その直後からどうも様子がおかしい。gnome が不調である。何がおかしいんじゃ?uidを変えたから一度ログアウトした方がいいのかも。

そんなことを思ってログアウトしてみた。そして gdm からログイン。ログインはできている。だけど止まる。gnomeが起動しない。う~ん、なんだ?こりゃ?

Ctrl-Alt-F1 で tty1 に切り替えてキャラクタ端末上でログインを試みる。問題なくログインできる。念のため ~/ の中を隈無く調べ uid が適切に変更されていることを確認する。完璧だ。

どうやら gdm からログインするとまずいことがあるらしい。というわけで X のエラーを見てみるために .xsession-error というファイルを読む。

が、このファイルの内容はホゲモゲ語である。いわゆる「文字化け」だ。
これはコンソール端末が日本語に対応していないのに、エラーファイルは日本語一杯夢一杯な状態であるからだ。ところがこの Momonga には unicon も kon も入っていない。エラーの内容が読めないのである。

仕方がないので gdm から root でログインし gnome-terminal 上でエラーの内容を確認してみた。


GConf エラー: 設定サーバ (gconfd) との接続に失敗しました: いくつか発生する可能性として、ORBit の TCP/IP ネットワークを有効にしていない、あるいはお使いのシステムで古い NFS のロックがクラッシュを引き起こしたことが考えられます。これに関連する情報については http://www.gnome.org/projects/gconf/ を参照して下さい (詳細 - 1: IOR ファイル '/tmp/gconfd-gleaning/lock/ior' のオープンに失敗しました。gconfd がありません: 許可がありません 2: IOR ファイル '/tmp/gconfd-gleaning/lock/ior' のオープンに失敗しました。gconfd がありません: 許可がありません)


といった内容が約200回繰り返し記載されていた。
そう、/tmp の中に gnome や KDE はテンポラリファイルを作成するのだ。それも専用のディレクトリまで作って、ファイルを山程用意するのだ。そしてこの専用ディレクトリにはユーザ名(uidではない)を使った名前がつけられてしまうのだ(上の例でいうと /tmp/gconfd-gleaning という名前)。そしてこのディレクトリの持ち主を調べると、案の定 500 番だ。そう、~/の中身はちゃんと root に変更してくれたいたのだが /tmp の中は変更せずそのまま uid=500 になっていたのだ。

というわけで /tmp の中の uid 500 のファイルを全部消した。

これでやっと uid の変更が終了です。普通に使えるようになりましたとさ。おしまい。

コメントを投稿