はじめに
複数Webサーバのコンテンツ一元配置やユーザからのファイルアップロード集約先にNASを利用するのですが、設定につまずきポイントがありましたのでメモしておきます。
前提条件
- インスタンス、NAS(NFSv4)の作成は完了していること
- 構成は インスタンス(クライアント) - NAS(サーバ)構成
- OS:CentOS6.7, 7.1(共にニフティ提供版)
手順(全てクライアント側)
- NFSマウントに必要なライブラリをインストール
install
$ yum -y install nfs-utils nfs-utils-lib
- インストール後、ユーザ情報を確認
command
$ cat /etc/passwd
~
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
- ユーザ作成
uid, gidをnfsnobodyに合わせてユーザを作成。
おそらくこのnfsnobodyがNFSサーバ側とマッピングされているユーザと推測。
command
$ useradd -o test -u 65534 -g 65534
$ cat /etc/passwd
~
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
test:x:65534:65534::/home/test:/bin/bash
$ id test
uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)
- マウントポイントを作成
command
$ mkdir /var/www/share
- マウント実行
command
$ mount -t nfs4 10.102.169.164:/ /var/www/share
NASのIP(今回は10.102.169.164)とマウントポイントは適宜合わせる。以降も同様。
- マウント確認
command
$ df -h | grep share
10.102.169.164:/ 99G 60M 99G 1% /var/www/share
- 再起動後にも自動マウント
/etc/fstab
10.102.169.164:/ /var/www/share nfs defaults 0 0
- 試しにファイルとディレクトリを作成してみる
command
$ su test
$ cd /var/www/share
$ touch test.txt
$ mkdir hoge
$ ls -all
drwxr-xr-x 3 nfsnobody nfsnobody 4096 8月 22 14:55 2017 .
drwxr-xr-x 7 root root 4096 8月 22 14:08 2017 ..
drwxrwxr-x 2 nfsnobody nfsnobody 4096 8月 22 14:55 2017 hoge
-rw-rw-r-- 1 nfsnobody nfsnobody 0 8月 22 14:42 2017 test.txt
作れた。
おまけ
- apache + php(mod_php)でプログラム実行によりNASへの書込み等を行う場合、
apacheの実行ユーザ、グループをアクセスユーザ(今回でいうところのtest:nfsnobody)にする必要があります。 - 尚、実行ユーザを変更する場合は下記のディレクトリのグループを変更する必要があります。
command
$ find / -group apache
/var/www/html
/var/cache/mod_proxy
/var/lib/dav
/var/lib/php/session
/usr/sbin/suexec
/var/run/httpd
最後に
NFSv4の仕様上このような方法となり、少し気持ち悪いですがプロンプトの表示やlsコマンド等での表示がnfsnobodyとなってしまいます。
もう少しスマートな実装方がありましたらご教示頂けると幸いです。
参考
Turbolinux 11 Serverユーザーガイド 第 16章NFS サーバー
ニフティクラウド NAS:NASへの接続(NFS)
apache起動ユーザ変更時にグループ設定を変更する