*

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

qmail

qmail も ports から入れてみた. いつも当てているパッチが Makefile 自動化と言

記事を読む

no image

ネットワーク環境を変えたのは前のエントリに言及してますが,不具合があったら連絡をぷりーづ. > お友

記事を読む

no image

antibadmail その後

2005/12/24 に antibadmail を導入し,約3週間たちました.現状の状態を報告して

記事を読む

pukiwiki-official

pukiwiki を PHP 5.4 に対応させる方法 (2)

Seichan です.こんばんわ. pukiwiki を PHP 5.4 に対応させる方法 (1)

記事を読む

no image

FreeNAS について書こうと思ったのに…

Seichan です.ただいまぁ. 週末,FreeNAS を触りたおして大分理解したから,これについ

記事を読む

no image

祝(?) 180,000Km & watchdog timeout…

こんばんわ.Seichan です.最近さらにバタバタと過ごしております. まったりする時間が欲しい

記事を読む

FreeBSD

FreeBSD は / から ZFS 化出来るらしいよ

Seichan です.とりあえずよさげなサイトを見つけたので,めもめも.http://www.ish

記事を読む

FreeBSD

GEOM RAID3 を使う

Seichan です.こんばんわ. 前回の「GEOM CONCAT を使う」に続いて今回は RAI

記事を読む

no image

FreeNAS と m0n0wall

そういや,FreeSBIE で色々遊んでるわけなのだが, FreeNAS が気になる. 今の Fil

記事を読む

no image

RELENG_6_1 と diablo-jdk1.5

FreeBSD の良い話題が2つほど. 6.1-RELEASE に向けて CVS ブランチ RELE

記事を読む

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 ↑