LinuC レベル 2
技術解説無料セミナー
2023/05/27 開催

主題

2.11 ファイル共有サービス
2.11.2 NFSサーバーの設定と管理

エスディーテック株式会社
デザインエンジニアリング本部

末永 貴⼀© LPI-Japan / EDUCO all rights reserved.

⾃⼰紹介
n⾃⼰紹介

エスディーテック株式会社－ デザインエンジニアリングでUI/UXソフトウェアの企画・開発・研究開発を⾏う企業
http://www.sdtech.co.jp
Linux関連⽂章の執筆
・@IT 「Linuxをいまから学ぶコツ教えます」
・@IT 「Linuxに触れよう」
・⽇経Linux「Xと次世代「Wayland」を知る」
・LPIC Level1,2 1回で合格必達テキスト+問題集など© LPI-Japan all rights reserved.

2

⾃⼰紹介
nTRITO VR
素早いトライ＆エラーを実現する
VRを活⽤した設計シミュレーター

nメンバーも募集中︕
sdtechでは⼀緒に働いてくれるメンバーも積極募集中です︕
興味がある⽅は弊社HPまで。
https://www.sdtech.co.jp/careers/about© LPI-Japan all rights reserved.

3

LinuCレベル１／レベル２ Version10.0とはnLinuCとはクラウド時代の即戦⼒エンジニアであることを証明するLinux技術者認定

ü現場で「今」求められている新しい技術要素に対応• オンプレミス／仮想化・コンテナを問わず様々な環境下でのサーバー構築• 他社とのコラボレーションの前提となるオープンソースへの理解• システムの多様化に対応できるアーキテクチャへの知⾒ü全⾯的に⾒直した「今」⾝につけておくべき技術範囲を網羅
今となっては使わない技術やコマンドの削除、アップデート、新領域の取り込みüLinuxの範疇だけにとどまらない領域までカバー
セキュリティや監視など、ITエンジニアであれば必須の領域もカバー© LPI-Japan all rights reserved.

4

クラウドを活⽤できるITエンジニアに必須の技術がまとまっている
AWSなどのパブリッククラウドを活⽤するための技術

AWSなどのパブリッククラウドを活⽤するための技術間が⽋けている状態

仮想マシン／コンテナ技術、クラウドセキュリティ、アーキテクチャ、ほか

オンプレミスのサーバーサイドLinux技術

オンプレミスのサーバーサイドLinux技術【今まで／その他】

Version10.0© LPI-Japan all rights reserved.

5

今回のテーマ

主題2.11 ︓ネットワーククライアントの管理
2.11.2︓NFSサーバの設定と管理
ü NFSとはü NFSサーバの設定と管理
ü NFSクライアント側での利⽤© LPI-Japan all rights reserved.

6

今回の実演環境について
nNFSサーバとNFSクライアントを仮想環境で構築
仮想マシンを利⽤して同⼀マシン上にサーバ、クライアントのOSをインストールし、その２つが通信することでNFSの通信環境を構築。

NFSクライアント

NFSサーバファイル共有ssh© LPI-Japan all rights reserved.

7

NFSとはnNFS(Network File System)とは
NFSはUNIX系OS間でファイルシステムの共有を⾏うためのサービスです。NFSは複数の構成要素によって成り⽴っており、その複数の要素を最低限理解しておく必要があります。
デーモン名

説明

nfsd

NFSファイルシステム要求を処理するNFSサーバカーネルモジュール

rpcbind (portmapper)

RPCプログラムにポート番号を割り当てる（portmapperの実装）

rpc.nfsd

NFSクライアントのリクエストを処理する

rpc.mountd

NFSクライアントからのマウント要求を処理する

rpc.statd

NFSサーバのステータスモニタ

lockd

NFSクライアントがNFSサーバ側でファイルロックを可能にする※ NFSはV3とV4により構成要素がことなっており、下位互換性の担保のために複数機能が混在している場合があります。
© LPI-Japan all rights reserved.

8

NFSとはnRPC(Remote Procedure Call)
RPCはネットワーク等で接続されたリモートコンピュータ上のプログラムのAPIに処理をリクエストする仕様で、プログラム内でAPI （関数、メソッド）を呼び出すとの同様にリモート上のプログラムのAPIを呼び出すことができます。
NFSはこのRPCでネットワークファイル共有を実現しており、TCP/IPを介してRPCにアクセスすための窓⼝がportmapperになります。このためportmapperはTCP/UDPのシステムポート番号111が割り当てられています。
NFSサーバ
NFSクライアント

portmapperにポート番号を確認
RPCプログラムのポート番号を取得

rpcbind(portmapper)
ポート番号の割り当て

portmap
RPC番号︓Port番号
10000 ︓111
10003 ︓2049
・・・

RPCプログラム※NFS V4からはrpcbindを使わない構造に変わっていますが、現状多くのディストリビューションではVer3との互換性担保のためにV3,V4の両⽅を動かすようになっています。
© LPI-Japan all rights reserved.

9

NFSサーバnNFSのインストール
・NFSサーバ

Redhat系$ sudo dnf install nfs-utils
Debian系$ sudo apt install nfs-kernel-server

・NFSクライアント

Redhat系$ dnf install nfs-utils
Debian系$ sudo apt install nfs-common© LPI-Japan all rights reserved.

10

NFSサーバnNFSサーバの設定
・NFSサーバの設定は/etc/exports ファイルで⾏う・書式[共有したいディレクトリパス] [共有先]([オプション])・例/mnt/cdrom 192.168.0.0/255.255.255.0(rw,sysnc)/home/tmp *.linuc.or.jp(ro) user1.linuc.or.jp(rw)

共有先はIPアドレス、FQDNなどの形で指定も可能ですし、ネットマスクと併せて指定することで⼀度に複数のクライアントを指定することも可能です。

※共有先とオプション指定の()は続けて記述する必要があります。
© LPI-Japan all rights reserved.

11

NFSサーバ
n共有オプション・/etc/exports ファイルに設定するオプションには以下のようなものがあります。
オプション名

rorw
sync
async
root_squash
no_root_squash
all_squash
no_all_squash
anonuidanongid

説明

読み込みのみ許可
読み込み、書き込みともに許可書込み要求後に即時にディスクにコミットする
書込み要求後に遅延させて関連する書込みとまとめてコミットする
クライアントのroot権限を無効化する(デフォルト)
クライアントのroot権限を無効化しない
クライアントのユーザ権限を無効化する
クライアントのユーザ権限を無効化しない
クライアントのuidをサーバ側で指定のuidに強制変更する
クライアントのgidをサーバ側で指定のgidに強制変更する© LPI-Japan all rights reserved.

12

NFSサーバnNFSのユーザ権限の注意点
サーバ、クライアント共にLinuxの場合は、UIDがサーバ、クライアントで同じになるケースがあります。特にroot権限（UID 0）はどのLinuxでも同⼀のUIDであるため、クライアントのroot権限がサーバ側でも適⽤されてしまいます。

NFSクライアント
uname︓UID
root ︓0
user1 ︓1001
user2 ︓1002
・・・

file rootでファイル作成

NFSサーバ
NFSでサーバ側にファイルを置く

uname︓UID
root ︓0
user1 ︓1001
user2 ︓1002
・・・

file クライアントのroot権限がサーバ側でも適⽤© LPI-Japan all rights reserved.

13

NFSサーバnNFS共有設定の注意点
・NFSの設定とファイルシステムの権限設定は異なるため注意が必要。

NFSクライアント

NFSサーバ
NFSサーバの設定はrw

ファイルシステム側のディレクトリ権限設定

drwxr-xr-x root.root

file© LPI-Japan all rights reserved.

14

NFSサーバnNFSサーバの実⾏
・NFSサーバのスタート$ sudo systemctl start nfs-server

・NFSサーバのシステム起動時の実⾏設定$ sudo systemctl enable –now nfs-server
・NFSサーバの設定のリロード$ sudo systemctl reload nfs-server© LPI-Japan all rights reserved.

15

NFSサーバnNFSサーバのユーティリティコマンド
・exportfs

NFSサービスを実⾏したまま共有設定を反映することができる$ sudo exportfs –r （/etc/exportsの設定をエクスポートする）$ sudo exportfs –ua （/etc/exportsの設定をエクスポートしなくなる）

・rpcinfo

RPCのportmap状態を出⼒する$ rpcinfo –p （各プログラムのRPC番号とPort番号の対応を出⼒する）

・nfsstate
NFSの状態を出⼒する$ nfsstate –s -4 （NFSサーバのV4の情報を出⼒）・showmount
NFSサーバのマウント情報を出⼒する$ showmount -e （エクスポートされたディレクトリ情報を出⼒する）© LPI-Japan all rights reserved.

16

NFSクライアント
nNFSクライアントの実⾏
・NFSクライアントの実⾏はmountコマンドで⾏う
・書式# mount -t nfs [-o オプション] NFSサーバアドレス:公開ディレクトリパス マウントポイント・例# mount -t nfs 192.168.0.1:/home/tmp /mnt/nfs

mountコマンドの実⾏はroot権限が必要であるため、⼀般ユーザで実⾏するためにはsudoでの実⾏や/etc/fstabの設定が必要になります。

© LPI-Japan all rights reserved.

17

NFSクライアント
nマウントオプション
・-oで指定できるオプションには以下のようなものがあります。
オプション名rsize=num

説明使⽤するNFSのバージョンを指定。（3, 4, 4.0, 4.1, 4.2）
複数のバージョンで動作しているサーバやバージョン違いの再試⾏の処理を効率化する。
マウントしたファイルシステムでバイナリ実⾏できなくする
setuidを使⽤した⾼い実⾏権限の取得ができなる
読取り操作で転送される最⼤バイト数を指定

wsize=num

書込み操作で転送される最⼤バイト数を指定

tcp

NFSマウントがTCPを使⽤するように明⽰する
NFSサーバのポート番号を指定する
デフォルトは0。その場合リモートのrpcbindに問い合わせる
NFSの標準ポート番号はTCP 2049

nfsvers=version
noexecnosuidport=num※デフォルト値はディストリビューションによる※デフォルト値はディストリビューションによる© LPI-Japan all rights reserved.

18NFSクライアント
nNFSクライアントのユーティリティコマンド
・nfsstate
NFSの状態を出⼒する$ nfsstate –c -4 （NFSクライアントのV4の情報を出⼒）$ nfsstate –m （NFSクライアントのマウント状況）・showmount
NFSサーバのマウント情報を出⼒する$ showmount -e NFSサーバアドレス（エクスポートされたディレクトリ情報を出⼒する）© LPI-Japan all rights reserved.

19

まとめnまとめü NFSとは• Linux間でネットワーク間のファイル共有を⾏う機能• RPCによって実現されている（V3）ü NFSサーバの設定• /etc/exportsファイルに共有設定を⾏う• サーバ側の共有設定やファイルシステムの権限設定に注意

ü NFSクライアントの操作• mountコマンドでNFSサーバ側のファイルシステムをマウントする• showmount –e でNFSサーバが共有しているディレクトリを確認する© LPI-Japan all rights reserved.

20

Q&A

Q&A

© LPI-Japan all rights reserved.

21

ありがとうございました
https://www.sdtech.co.jp© LPI-Japan all rights reserved.

22