UNIX - Mount -
目次
1998/08/23
UNIX が誕生した頃と異なり、現在ではリムーバブルメディアが有り触れた存在としてどのコンピュータにも付属している。そこでこのページでは、UNIX における FD、MO、CDROM 等の利用に関わる問題を採り上げることにする。
リムーバブルメディアのファイルは誰のものと見做すべきであろうか?
DOS ファイルシステムのように所有者の概念が存在しないファイルの場合には答は自明であろう。メディアの持ち主のものと考えて構わない。しかしながらここで問題にしているのは UNIX のファイルシステムの様に個々のファイルに所有者 ID が振られているファイルの場合である。
2つの考え方があり得る。
A: 固定メディアと同じ考え方を採用する。即ちファイルの所有者 ID で処理する。
B: ファイルの所有者 ID を無視し、どのファイルもメディアを挿入したユーザのものと見做す。
話を観念的にしない為に具体的なニーズに添って考えて見よう。
1. Alice はホスト venus で自分のファイルのバックアップを MO に採っている。
2. Alice はホスト venus の自分のファイルを FD にコピーして、ホスト vega に移そうとしている。
第一のケースに於ては Alice がコピーした MO のファイルは Alice のファイルなのでメディアの所有者である Alice と一致している。この場合にはどちらの考え方を採用しても問題は発生しないように見える。
第二のケースに於て仮に考え方 A を採用したとする。その場合、 Alice がコピーしたファイルは venus 上では Alice のものであるが vega 上でも Alice のものとは限らない。なぜなら venus と vega ではユーザ ID の割り振りが同じである保証はどこにも無いからである。
従ってリムーバブルメディアに於ては考え方 A を採用する訳にはいかない様に思える。
筆者が「見える」とか「思える」と言う歯切れの悪い言い方をしているのは理由がある。話はかように単純ではないのだ。そこでこの問題をどのように処理しているか、2つのシステム(FreeBSD と NEXTSTEP )を採り上げ解説しよう。
FreeBSD の場合
FreeBSD はオーソドックスな UNIX システムである。FreeBSD に見られるリムーバブルメディアの扱いは他の多くの UNIX に共通している。
FreeBSD はUNIX 形式のリムーバブルメディアに記録されている所有者 ID に忠実に処理する。即ち考え方 A を採用する。考え方 A とエンドユーザに対するマウントの許可とは両立しない。venus で Alice が作成したファイルは vega では一般に他のユーザのものとなり、Alice がこれに SUID をセットしておれば直ちに問題が発生する。従ってマウントをエンドユーザに解放する事はできない。従って root のみがマウントを許される。
他方 FreeBSD には MSDOS 形式のメディアのマウントを行うコマンド mount_msdos
が存在する。このコマンドはエンドユーザに解放されている。 mount_msdos
は MSDOS のファイルを疑似的に UNIX のファイルとして扱う。コマンド ls
で表示されるファイルの所有者は mount_msdos
を実行したユーザになっている。マウント先はそのユーザのディレクトリに制限されている。(/bin
や /etc
にマウントされる危険性を考えよ。)
NEXTSTEP の場合
NEXTSTEP はパーソナルワークステーションを強く意識した UNIX システムである。誰もが違和感無く使用でき、誰もがリムーバブルメディアを使用できるようにシステムが作られている。ここでは FreeBSD と全く異なるアプローチが採られている。
NEXTSTEP は全てのリムーバブルメディアを自動マウントする。マウントの先はルートディレクトリに統一されている。ユーザはマウントコマンドを実行する必要がない。むしろリムーバブルメディアに対しては UNIX のマウントコマンドの実行を許されていない。
コマンド ls
によって表示されるリムーバブルメディアのファイルはメディアを挿入したユーザのものとなっている。即ち考え方 B を採用している。SUID は無視される。NEXTSTEP はメディアを書き換えている訳ではない。FD を書き込み禁止にして挿入してもマウントされた結果は本来のファイル所有者とは異なっている。
結論
UNIX 形式のリムーバブルメディアのマウント問題は以下の3つの事を考慮する必要がある。- ユーザ ID の不整合
- SUID ファイルの扱い
- マウントの影響が他のユーザに及ぶ事
UNIX 形式のメディアをエンドユーザがマウントする場合には、UNIX はその行為を禁止するか、あるいは、本来の姿を歪めて許可するか2つに1つである。この事は UNIX がこの問題で既に破綻を来している事を意味している。
ここではリムーバブルメディアのマウントで発生する事がらの半分しか扱っていない。UNIX はマルチユーザシステムなので Alice が FD をマウントしている間に Bob からはその FD がどのように見えるかをも議論する必要があったのである。