ttt

getttyent

4294967294番の人って誰ですか~?

2006-04-18 23:10:17 | インポート

FreeBSDとかLinuxとかSolarisとかいろんなOSが混在したネットワーク環境で、NFSを使うこと ・・・ たぶん、そんな特殊な事例ではないと思います。そんな環境で、これまで、見なかったことにしてたことがありました。

FreeBSDなNFSクライアントで、「ls -l」とかしてファイル一覧を見たときに、uid(user id)のところが、「4294967294」と表示されているものがありました。

意味不明な数字だな~と、多くの人は思うかもしれませんが、見る人が見れば、ああなるほど、あれだよね

% printf "%x\n" 4294967294
fffffffe

というわけで、signed 32bit integerで「-2」のことですので、非常に意味ありげな数値です。

どうやら、この「ファイルのuidが4294967294になる」現象は、NFSサーバがSolarisのときにおきるようです。

実は、このファイル、Solarisで見ると、ちゃんとnobodyって表示されるのです。

Solarisでは、nobodyのuidは60001なんですが、なぜかNFSでアクセスすると、nobodyが4294967294(== -2)にすげかえられてしまいます。なんででしょ?

☆ ☆ ☆ ☆ ☆

さて、ところでnobodyさんのuidっていくつなんでしょう?ということで、いくつか調べてみました。

FreeBSD       ・・・ nobody = 65534
Linux debian      ・・・ nobody = 65534
Linux Fedora Core5 ・・・ nobody = 99
Linux Fedora Core5 ・・・ nfsnobody = 4294967294
Solaris10       ・・・ nobody = 60001
Solaris10       ・・・ nobody4 = 65534

Fedoraは、なかなか賢いですねぇ。わざわざnfsnobodyというユーザーが登録されています。

Solarisが、なんかアレですね。nobody4ってのは、SunOS 4.x時代のnobodyのことだそうです。

☆ ☆ ☆ ☆ ☆ 

さて、ls -lしたときに数字がでちゃうのもいやなので、ユーザーを登録してみることにしました。そこの環境では、アカウント情報はLDAPで管理しているので、LDAPでuidNumber=4294967294なユーザーを登録して、ls -lしてみると・・・あれれ?変化ありません。

よくよくみたら、4294967294と入力したはずなのに、なぜか、半分の2147483647になっちゃってました。ふむ、uidNumberは、32bit signed integerなのかな?ってことで、-2と入力したところ、ようやくうまいこといきました。

こんな感じで。

dn: uid=nfsnobody,ou=People,dc=うんたら,dc=かんたら,dc=co,dc=jp
objectClass: top
objectClass: shadowAccount
objectClass: account
objectClass: posixAccount
uid: nfsnobody
cn: nfsnobody
homeDirectory: /nonexistent
loginShell: /usr/sbin/nologin
gecos: Unprivileged user Solaris
uidNumber: -2
gidNumber: -2


コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。