mishimaの日記: Solaris NFS のちょっといい話
Solaris の NFS プロトコルには、匿名ユーザID (anonuid) および匿名グループID (anongid) という概念がある。
この anonuid および anongid は、NFS プロトコル上でしか使用されない仮想的な UID/GID であり、ファイルシステム上ではいずれかの実ユーザ/実グループに結びつけられる。
身元のはっきりしないユーザおよびグループからのアクセスを匿名ユーザ、匿名グループに割り当てるのだろうが、
事実上、現状でこれに該当するのは root squash されている root からのアクセスのみである。
Solaris では、OS 上の実ユーザ nobody・実グループ nobody を、NFS プロトコル上の匿名ユーザ・匿名グループに割り当てている。
それぞれ UID と GID は次のようになっている。
nobody uid: 60001
anonuid : 4294967294 (-2)
nobody gid: 60001
anongid : 4294967294 (-2)
サーバとクライアント間での UID/GID の変換を図にすると、次のような感じだ。
【Solaris Filesystem】
↓ UID:60001, GID:60001
【Solaris NFS サーバ】
↓ UID:-2, GID:-2
【ネットワーク】
↓ UID:-2, GID:-2
【Solaris NFS クライアント】
↓ UID:60001, GID:60001
【Solaris Filesystem】
当然、逆変換も行われる。システムが Solaris のみだったら、これでうまくいく。
問題は、Solaris と他の OS との間で NFS のファイル共有を行った場合だ。
どうやら、NFS サーバでおこなう実ユーザ→匿名ユーザという変換・逆変換と、
NFS クライアントがおこなう匿名ユーザ→実ユーザという変換・逆変換は、Solaris しかやっていないみたいだ。
つまり Solaris NFS サーバと Linux クライアントではこーなる。
【Solaris Filesystem】
↓ UID:60001, GID:60001
【Solaris NFS サーバ】
↓ UID:-2, GID:-2
【ネットワーク】
↓ UID:-2, GID:-2
【Linux NFS クライアント】
↓ UID:4294967294, GID:4294967294
【Linux Filesystem】
残念なことに逆変換も行われないようだ。
【Linux Filesystem】
↓ UID:4294967294, GID:4294967294
【Linux NFS クライアント】
↓ UID:4294967294, GID:4294967294
【ネットワーク】
↓ UID:4294967294, GID:4294967294
【Solaris NFS サーバ】
↓ UID:4294967294, GID:4294967294
【Solaris Filesystem】
そんなわけで、Solaris 上で nobody:nobody 権限となっているファイルを NFS で扱うのは非常に難しい、
というのが結論のようです。
…ぜんぜんいい話じゃねーよっ
Solaris NFS のちょっといい話 More ログイン