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
0 件のコメント:
コメントを投稿