Contents
概要
NFSを構築します。
前提条件
OS
CentOS Stream 8を使用します。
SELinux
有効です。無効にする場合はこちらを参照して下さい。
Firewalld
無効です。有効化する場合はこちらを参照して必要な許可設定をして下さい。
標準ポート番号
TCP:2049 (NFSv4)
設定
インストール
nfs-utilsをインストールします。nfs-utilsにNFSサーバーが含まれます。
[root@centos ~]# dnf install nfs-utils
/etc/idmapd.conf
idmapd.confのデフォルト値
コメント行等をしたidmapd.confは下記の通りです。
[General] [Mapping] [Translation] [Static] [UMICH_SCHEMA] LDAP_server = ldap-server.local.domain.edu LDAP_base = dc=local,dc=domain,dc=edu
idmapd.confの設定
[General]セクションのDomainのみ設定しています。この設定はNFSサーバーにアクセスするクライアントでも設定しておきましょう。それ以外の必要の無い空のセクションは削除しています。[UMICH_SCHEMA]セクションは内のLDAP関連設定は、[Translation]セクション内でumich_ldapが指定されていなければ不要な為、削除しています。
[root@centos ~]# vim /etc/idmapd.conf
[General]
Domain = si1230.com
/etc/nfs.conf
nfs.confのデフォルト値
コメント行等を削除したnfs.confは下記の通りです。
[general] [exportfs] [gssd] use-gss-proxy=1 [lockd] [mountd] [nfsdcld] [nfsdcltrack] [nfsd] [statd] [sm-notify]
nfs.confの設定
本稿ではNFSv4のみ使用したい為、[nfsd]でFSv2/v3を無効化しています。それ以外の必要の無い空のセクションは削除しています。[gssd]セクションは簡単に説明できるような内容では無かったので細かい点は省略しますが、動作上は不要でしたので削除しています。
[root@centos ~]# vim /etc/nfs.conf
[nfsd]
vers2=no
vers3=no
/etc/exports
exportsはNFSが公開するディレクトリを定義する設定ファイルです。デフォルト値は空です。
[root@centos ~]# vim /etc/exports
/share/dir1 10.0.0.0/24(rw,no_root_squash)
- /share/dir1
- 公開するディレクトリです。
- 10.0.0.0/24
- アクセスを許可するネットワークです。
- rw
- アクセス権です。rwは読み込みと書き込みを許可しています。デフォルト値はroで読み込みだけが許可されます。
- no_root_squash
- 後述します。
squashについて
squashは押しつぶす意味で、NFSではユーザーの権限を下げる(押しつぶす)意味で使われています。NFSのセキュリティ設定は主に送信元ネットワークの指定とsquashの設定になりますが、基本的にはサーバー/クライアント共に同じユーザー/グループを設定して利用することが適切だと思います。
- root_squash
- root権限でアクセスした際にnobodyユーザーとして扱われます。
- no_root_squash
- root権限でのアクセスを許可しています。
- all_squash
- 全てのユーザーはnobodyユーザーとして扱われます。
サービス起動設定
NFSサーバーを起動します。
[root@centos ~]# systemctl enable --now nfs-server.service [root@centos ~]# systemctl status nfs-server.service
補足
こちらからの引用です。実際に試してはいませんがexportsの書き方で下記のように挙動が変わるようです。スペース1つだけなのでかなり分かりづらいですが、確かにスペースを空けると別の設定になりますよね(同じディレクトリに対して複数のホストを許可する場合はスペース開けて設定する為)。意図しない設定をしているサーバーが結構ありそうです。
/etc/exports ファイルの形式は、特に空白の使用に関しては非常に厳格です。常にホストとエクスポートされるファイルシステムの間、およびホスト同士の間を空白で隔離することを忘れないでください。しかし、コメント行以外では、ファイル内の他の場所には空白が存在すべきではありません。
たとえば、以下の2つの行は同じ意味ではありません。
/home bob.example.com(rw) /home bob.example.com (rw)最初の行は bob.example.com からのユーザーにのみ /home ディレクトリーへの読み込み/書き込みアクセスを許可します。2番目の行は bob.example.com からのユーザーにディレクトリーを読み込みのみで(デフォルト)マウントを許可して、他の人々には読み込み/書き込みでマウントすることを許可します。