16 ビット UID から 32 ビット UID への変更に関するメモ

- ユーザ空間とカーネル空間とのあいだで ioctl またはデータ構造をやりとり
  するときには、カーネルコードでは __kernel_uid_t と __kernel_uid32_t を
  考慮しなければなりません。

- カーネル内部の構造体とコードでは、uid_t と gid_t を使用します。

32 ビットユーザ ID に移行するために、全ての Linux アーキテクチャでおこなう
べき残りの作業は、次のとおりです。

- ディスククォータには、UID/GID の最大値とは関係のない、面白い制限があり
  ます。ファイルシステムの最大ファイルサイズによって制限されるのです。
  というのも、クォータのレコードは、当該 UID に対応するオフセットに書か
  れるからです。クォータシステムが大きな UID を適切に扱えるかどうかに
  ついては、さらに調査が必要です。全てのアーキテクチャにおいて 64 ビット
  のファイルオフセットを扱えるのであれば、このことは問題とはならないで
  しょう。

- システム・アカウンティング・ファイルとの後方互換性を維持するかしないか、
  つまりコメントが言うように後方互換性を切り捨てるべきか、を決める (現在、
  旧 16 ビット UID と GID は、依然としてディスクに書き込まれており、以前
  パディングスペースだった場所は、独立の 32 ビット UID と GID を格納する
  のに使われています)。

- エミュレートされる OS が 16 ビット UID を使用していた場合、OS エミュ
  レーションが 16 ビット UID 互換のシステムコールを呼び出しているのか、
  それとも、そうでない場合、32 ビット UID システムコールを適切に使用して
  いるのか、を確認する必要がある。

  これは少なくとも次のものに影響があります。
        SunOS エミュレーション
        Solaris エミュレーション
        Intel の iBCS

        sparc64 での sparc32 エミュレーション
        (sparc32 に加えられた、新しい 32 ビット UID システムコール全てを
         サポートする必要があります)

- 全てのファイルシステムが適切に動作することを確認する。

  現在のところ、32 ビット UID は次のファイルシステムに対しては動くはずです。
        ext2
        ufs
        isofs
        nfs
        coda
        udf

  次のファイルシステムに対する ioctl() の修正はできています。
        ncpfs
        smbfs

  次のファイルシステムには、16 ビット UID のラップアラウンドを防止する
  簡単な修正が施されています。
        minix
        sysv
        qnx4

  他のファイルシステムは、まだチェックしていません。

- ncpfs ファイルシステムと smpfs ファイルシステムは、現在のところ、全ての
  ioctl() において 32 ビット UID を使用できません。32 ビット UID を取る
  新しい ioctl() が幾つか追加されましたが、もっと必要です (ユーザ空間と
  カーネル空間とのあいだでやりとりされる新しいデータ構造体を取るものも
  必要です)。

- ELF コアダンプ・フォーマットは、arm, i386, m68k, sh, sparc32 での 16
  ビット UID しかサポートしていません。これを修正するのは、おそらく重要な
  ことではありませんが、やるとしたら、新しい ELF セクションを追加する必要
  があるでしょう。

- カーネル内 NFS サーバをコントロールするのに使われる ioctl() は、arm,
  i386, m68k, sh, sparc32 では 16 ビット UID しかサポートしません。

- AX25 ネットワークの UID マッピング機能が適切に動作することを確認する
  (ユーザ空間とカーネル空間とのあいだのやりとりで、常に 32 ビット整数が
   使われているので、安全なはずです)。

Chris Wing
wingc@umich.edu

最終更新日： 2000 年 1 月 11 日

------------------------------------------------------------
翻訳団体： JF プロジェクト < http://www.linux.or.jp/JF/ >
翻訳日：   2004/05/17
翻訳者：   川崎 貴彦 <takahiko(a)hakubi.co.jp>
校正：     IKEDA Katsumi <ikedak(a)rg8.so-net.ne.jp>
校正：     Seiji Kaneko <skaneko(a)a2.mbn.or.jp>
