PBO-FSについての詳細
実は、まだドキュメントなどが整備されていません(^^;
従来のシステムコールやコマンドから推測できると思いますので、
今のところは試行錯誤でお願いします。
一応、参考資料↓
PBO-FSとその応用に関する詳細(LZH圧縮されたWord原稿,
232KByte)
追加されたシステムコール
- int chper(char *path, int permit)
情報隠蔽アクセス権限を変更します。利用法はchmodと同じです。
- int pmask(int mask)
ファイル生成時の情報隠蔽アクセス権限のマスク変更。umaskシステムコールと同じです。
- int dellink(char *spath, char *dpath)
委譲リンクを作成します。symlinkシステムコールと使い方は同じです。
- int chself(char *path)
セルフディレクトリを変更します。Root権限でのみ使用可能です。利用法はchrootと同じです。
変更されたシステムコール
- ファイルをアクセスするシステムコールにおいて、”::filename”で セルフディレクトリ相対アクセスとなるよう変更されています。これは、カーネル内部のnamei関数等を書き換えています。同様に、openシステムコールやexecシステムコールなどで、委譲リンクを参照するように変更されています。
- statシステムコール群で、情報隠蔽アクセス権限が参照できるようになっています。これにともない、stat構造体にst_permitメンバが増えています。
追加されたライブラリ関数(libCへの追加)
- char *getself(char *buf, size_t size)
現プロセスのセルフディレクトリを参照します。利用法はgetcwdと同じです。
追加されたコマンド
- chper
ファイルの情報隠蔽アクセス権限を変更します。利用法はchmodと同じです。
変更されたコマンド
- ls
-pオプションで、ファイルの情報隠蔽アクセス権限情報を表示します。また、従来からあった-Fオプション表示で、委譲リンクの場合、委譲先と委譲優先度を表示します。
- ln
-d
オプションで委譲リンクの作成ができます。利用法は、-sオプションによるシンボリックリンク作成と同じです。
現在分かっている問題点
FreeBSDは多くのファイルシステムに対応していますが、PBO-FSはこの中のUFSを変更することで作成されています。ここで、UFS(FreeBSD2.2.8)の空き領域を用いているため、再フォーマットなどすることなく、UFSから移行できますが、他のファイルシステムにおいては、PBO-FSの機能を利用することができません。具体的には、NFSで問題が生じます。NFS自体への対応は行われているため、PBO-FSを組み込んだFreeBSDでNFSのremote
mountとexportは可能ですが、PBO-FSの機能である、委譲リンクやディレクトリ単位のアクセス権限はNFS経由では利用できなくなります。委譲リンクはシンボリックリンクとして扱われ、アクセス権限は全て公開扱いとなります。
また、tarコマンドの様にファイルの属性情報を扱う一部のコマンドで問題が発生します。具体的には、tarで委譲リンク情報やアクセス権限情報が消えてしまいます。