*

FreeBSD で NFS (3) 【/etc/exports 詳解】

公開日: : 最終更新日:2014/02/03 FreeBSD, FreeBSD くらいあんと, NFS

Seichan です.こんばんわ.
前回「FreeBSD で NFS (2)」で書いたとおり,/etc/exports 詳解の続編です.

以前 FreeBSD 5.0-RELEASE あたりで Pukiwiki の「FreeBSD で NFS(Network File System) サーバ & クライアント」に纏めていましたが,時代も変わってきてますので再まとめしています.よろしければ Pukiwiki 側もご覧ください.

 SPONSORED LINK
 

/etc/exports 詳解

読み取り専用でマウント

読み取り専用で共有をかけたいシチュエーションはとても多いと思います.ISO イメージの共有等ですね.そういう場合は -ro オプションで設定することが可能です.
次の例は,/usr は読み取り専用,/pub は読み書き可能な共有を設定しています.

/usr     -ro -network 192.168.241.0 -mask 255.255.255.0
/pub     -network 192.168.241.0 -mask 255.255.255.0

指定したディレクトリ以下を任意にマウント

FreeBSD で NFS (2)」で書いた「複数のディレクトリの共有」の場合,次のように 1行に共有をかけたいディレクトリを纏める書き方を紹介しました.

/usr/src /usr/obj  -network 192.168.241.0 -mask 255.255.255.0

あまりおすすめは出来ませんが,指定したディレクトリ以下のサブディレクトリの全てを任意にマウントポイントとする方法があります.次のように -alldirs オプションをつける事で実現出来ます.

/usr    -alldirs -network 192.168.241.0 -mask 255.255.255.0

この場合,/usr 以下の任意の場所を指定してマウントが可能になります.指定したディレクトリ以下全てを公開可能,NFS を提供するネットワークにセキュリティ上の懸念が少ない事等を判断して利用してください.
ちなみに,RedHat Enterprise Linux の NFS はこの動きがデフォルトのようです.

root ユーザアクセスの制御

オプションを指定しない場合,NFS クライアント上の root(UID: 0) ユーザのアクセスは UID/GID は -2:-2 という扱いになり,通常は nobody:nobody にマップされます.その為,NFS クライアント側で root 権限を持っていても NFS サーバ上の root が所有者のファイルは編集できません.これは NFS v2/v3 での認証機能が殆どない事によるセキュリティ担保の意味も含まれています.
信頼できるネットワークやホストからの root アクセスを許可する場合,-maproot オプションを使って明示的に許可する必要があります.
次の例は,/pub に対する 192.168.241.0/24 のネットワークからの root アクセスは,root ユーザで処理する設定となります.ただし,/usr には -maproot オプションをつけていない為,root アクセスは nobody にマップされたままとなります.

/usr    -network 192.168.241.0 -mask 255.255.255.0
/pub    -maproot=root -network 192.168.241.0 -mask 255.255.255.0

-maproot オプションに個別のユーザアカウントを指定する事で,root アクセスの変換先を指定可能です.指定の方法によって,NFS アクセス時のマッピングが変化しますので注意してください.

  • -maproot=[user]

このようにユーザ名のみを指定した場合,指定されたユーザが所属するプライマリグループが含まれます.ユーザが所属するグループのいずれかが読み書きの権限を付与されたファイルはアクセスが可能となります.
ドキュメント上はユーザが所属する全てのグループが含まれると記載があるのですが,9.2-RELESAE ではそのような動作はしませんでした.

  • -maproot=[user]:[group1]:[group2]

このようにユーザ名とグループを指定した場合,ここで明記されたグループのみが含まれます.ユーザおよび,指定されたグループに対する権限を付与されたファイルに対してのアクセスが可能となります.

  • -maproot=[user]:

このように,ユーザ名のみ指定で最後をコロンで終えた場合,UID 変換は行われますが,GID の変換は行われません.その為,指定したユーザの UID に変換されるのですが,GID は 0(wheel) のままとなります.
ドキュメントでは,指定したユーザに関する完全な資格と区別する為に利用すると記載されており,その場合,ユーザ名のみ変換され,グループは一切含まれない挙動になるべきなのですが,そのような動作とはなりませんでした.

例として,次のような環境での挙動を確認してみます.

# id seichan<br />uid=1000(seichan) gid=1000(seichan) groups=1000(seichan),10000(users)

# ls -l /pub
drwxrwxr-x  2 root     operator  512 Jan  6 10:56 .snap
-rw-r-----  1 root     wheel       0 Jan  6 10:57 file1
-rw-r-----  1 seichan  seichan     0 Jan  6 10:57 file2
-rw-r-----  1 seichan  wheel       0 Jan  6 10:57 file3
-rw-r-----  1 root     seichan     0 Jan  6 10:57 file4
-rw-r-----  1 root     users       0 Jan  6 10:58 file5

パターン1: -maproot が存在しない場合

/pub    -network 192.168.241.0 -mask 255.255.255.0

-maproot が存在しない場合,root アクセスは nobody ユーザの権限行われますので,NFS クライアント上の root ユーザアクセスは次のように全てのファイルが Permission denied で読み取りに失敗します.

# cat file1
cat: file1: Permission denied
# cat file2
cat: file2: Permission denied
# cat file3
cat: file3: Permission denied
# cat file4
cat: file4: Permission denied
# cat file5
cat: file5: Permission denied

パターン2: -maproot=seichan の場合,NFS サーバ上の seichan ユーザ及び seichan が所属するプライマリグループがマッピングされますので,ファイルオーナが seichan のものもしくはグループオーナが seichan のファイルの読み取りは可能となります.

/pub    -maproot=seichan -network 192.168.241.0 -mask 255.255.255.0
# cat file1
cat: file1: Permission denied
# cat file2
# cat file3
# cat file4
# cat file5
cat: file5: Permission denied

パターン3: -maproot=seichan: の場合,NFS サーバ上の seichan ユーザにマッピングされ,GID はそのままわたってしまいます.その為,ファイルオーナが seichan のもの,もしくはグループオーナが wheel のファイルの読み取りが可能となります.

/pub    -maproot=seichan: -network 192.168.241.0 -mask 255.255.255.0
# cat file1
# cat file2
# cat file3
# cat file4
cat: file4: Permission denied
# cat file5
cat: file5: Permission denied

パターン4: -maproot=seichan:seichan:users の場合,NFS サーバ上の seichan ユーザが所有するファイル,グループが seichan 及び users のファイルの読み取りが可能となります.

/pub    -maproot=seichan:seichan:users -network 192.168.241.0 -mask 255.255.255.0
# cat file1
cat: file1: Permission denied
# cat file2
# cat file3
# cat file4
# cat file5

-maproot オプションはこのように指定する値によって挙動が変わりますので,もし個別のユーザアカウントにマップさせたい場合等の場合,挙動をあらかじめ確認してからサービスリリースするように心がけましょう.

全てのユーザアクセスの制御

先のオプションは -maproot と,root アクセス時の制御を行いましたが,NFS クライアント側のユーザアカウント及び UID にとらわれず,全てのアクセスを特定の ID にマップさせることも可能です.-mapall オプションがその機能を実現します.
-mapall オプションは -maproot オプションと同じ形式の指定が可能で,動作も同様の動作となります.

以上,駆け足ではありますが,/etc/exports 詳解でした.これは NFSv2/NFSv3 の基本的な場合となりますので,今後はセキュリティや NFSv4 等を改めて纏めてみたいとおもいます.

SPONSORED LINK
  ☆ ブログランキング参加しました (*≧∀≦)ノシ
にほんブログ村 IT技術ブログ FreeBSDへ 

関連記事

no image

UPS

UPS 買いました.APC の ES 500. 前々から買いたいと言うか,必要だと思ってはいたのです

記事を読む

FreeBSD

FreeBSD 7.0-RELEASE が来たよー.あと,NanoBSD いい感じ

FreeBSD 7.0-RELEASE が,一応 2008/02 に間に合う形でリリースされました.

記事を読む

no image

s30 復活

Seichan です.まいど. HDD が壊れかけてた為,引っ張り出してきたものの,また休眠中ステー

記事を読む

no image

サーバを一時的に入れ替える為に

こんばんわ.Seichan です.本日は代休を使って会社を休んでいます. 掃除,洗濯をやって,ついで

記事を読む

no image

もっともセキュアなOSはBSDだそうだ

ITmediaによると,もっともセキュアな OS はオープンソースプラットホームの BSD と Ma

記事を読む

FreeBSD

FreeBSD をクライアントとして利用する (X.org)

Seichan です.FreeBSD をクライアントとして利用する,其ノ二.今回は X.org (X

記事を読む

no image

djbdns から bind へ移行

DMZ 構成にして,ネットワーク構成を色々変更して,何か良くわからないんですが, djbdns でう

記事を読む

freenas-logo-black

FreeNAS 0.69 (Kwisatz Haderach) の日本語環境アップデート

おひさしぶりです.Seichan です.FreeNAS 0.69 が出てからちょっと立ちました.とて

記事を読む

no image

TeX環境

最近,TeX を覚えようと思って,s30 に TeX 環境を入れてみた. TeX だの teTeX

記事を読む

no image

100G ショック

2.5 インチの 7400rpm 100GB HDD を購入してました Seichan です. 現在

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Google Adsense

ssl_icon
PHPki で簡単証明書運用 (5) 【管理ユーザのメンテナンスとCRLの取得】

Seichanです.こんばんわ. いつものとおり,だいぶ日が経ってし

ssl_icon
PHPki で簡単証明書運用 (4) 【作成した証明書を管理する】

Seichanです.こんばんわ. 先日の「PHPki で簡単証明書運

ssl_icon
PHPki で簡単証明書運用 (3) 【署名されたサーバ証明書を作る】

Seichan です.こんばんわ. さて,先日の「PHPki で簡単

ssl_icon
PHPki で簡単証明書運用 (2) 【初期設定と Root CA 証明書作成】

Seichan です.こんばんわ. さて,先日の「PHPki で簡単

ssl_icon
PHPki で簡単証明書運用 (1) 【PHPki の修正と導入 (修正版)】

Seichan です.こんばんわ. 先日「PHPki で簡単証明書運

→もっと見る

PAGE TOP ↑