予め断っておきますが、今回の話は割とLinux専門系のコラムです。知識を持ち合わせておられない方は目が滑りまくるかもしれませんが、ご了承ください。
という前振りで始めるコラムですが、タイトルを見れば分かる人は分かると思います。今回は自前のLinuxサーバをネットワークストレージとして利用するためのNFSについて。
NFSの正式名称がNetwork File Systemというように、ネットワーク上のディスクドライブをあたかも自分のマシンに接続されているかのようにマウントできる、Linuxでは標準装備のファイル共有プロトコルです。NFSサーバを立てるのもNFSクライアントを使用するのもひどく単純なんですが、単純に使用としたらえらく頭を悩ませることになりました。システム的に。
というのもアレです。NFSでそのままマウントしようとしたら、なんかディスクがrootでマウントされており、NFSでマウントしたらそのままその情報が引き継がれてしまっているんですよ。当然のごとく、普段は一般ユーザとしてログインしているのでrootなんぞのスーパーユーザ権限でマウントされていたら書き込むものも書き込めない。ストレージとして使えねぇじゃねぇかYO!と雄叫びを上げたということです。
しかも根本的なところにも問題がありまして、Linuxではユーザの識別にはUIDという番号を割り振っており、これにアカウント名を付属させているんです。例えばHOGE(UID=501)という具合に。少し考えると分かりますが、この番号は異なるホストでは一致しない可能性が十分考えられるというわけです。ホストAではHOGEのUIDは501ですが、ホストBでのUID=501に相当するアカウントはSUPER_HOGEかもしれません。しかしこれでもホストAがホストBにマウントしたとき、ホストAのHOGEがホストBのSUPER_HOGEとして振舞えてしまうというセキュリティ的問題が発生するわけです。
これを回避する方法がネットワーク内でのLinuxシステムのUIDは統一して管理する、というなんか随分と原始的な方法のようなんですけど、これを管理するためのNISというサービスも存在します。そんなんでいいのか?とか思いつつ、それが一般的な方法というならば従っておいて損はしないのかもしれません。
だけどもこれで元々のroot云々の問題が解決したわけではありませぬ。ext3のファイルシステムではマウント時にUIDやGIDを設定できないため、何も記述せずに自動マウントさせるとrootでマウントしてくれやがります。果たしてこれを望むとおりにマウントできるんだろーか。さらにはNISについての知識も乏しいので、そっち方面の知識を仕入れなければならないかもしれません。
そんなわけで、セキュリティ的に危ういとはいうもののなんか全部スーパーユーザで済ませたい今日この頃。一般ユーザとしてログインしても、シェル上でrootにログオンしていじくりまくることも多々ある中、ほんとにこのままでいいのかと問いたい。問い詰めたい。小一時間問い詰めたい。実質俺しかつかわねぇンだからrootで作業していたほうがナンボかマシな気がする。いや、セキュリティが云々という話もわからんではないけど、そんなこといったらWindowsもほとんどAdministrator(スーパーユーザ権限と同等)で作業してるしなぁ。わざわざ一般ユーザで使いつつ、ソフトのインストールのときだけAdministratorで再ログインするとかめんどくさ過ぎる。特に窓だとね。
誰か俺を納得させられるほどのroot作業否定理論を展開してくれ。
Comment