web-dev-qa-db-ja.com

NFS:特定のユーザーがNFSマウントに書き込むことを許可するにはどうすればよいですか?

サーバーがマウントの1つにファイルを書き込むのにかかる時間をチェックすることになっているNagiosチェックを作成しました。チェックはユーザーnagiosによって実行されています。

NFSサーバーは次のように構成されています。

[root@ny4aftp2 ~]# tail /etc/exports 
/proxy_logs *(rw,insecure,insecure_locks,no_subtree_check,async)
/sync_logs *(rw,insecure,insecure_locks,no_subtree_check,async)
[root@ny4aftp2 ~]# ls -ld /sync_logs/
drwxrwxr-x 3 peeradmin peeradmin 4096 Dec 10 10:14 /sync_logs/
[root@ny4aftp2 ~]#

これは、チェックスクリプトが実行しているコマンドです。

dd if=/dev/zero of=/$MOUNTPOINT/`hostname`.dat bs=1024 count=102

クライアントは次のように構成されています。

[root@ny4aproxy11 ~]# grep sync /etc/fstab 
IP:/sync_logs /sync_logs nfs intr,noatime  0 0

Nagiosユーザーがチェックを実行しているときに、ddコマンドが.datファイルをnfs共有/sync_logsに書き込もうとすると、「アクセスが拒否されました」というエラーが発生します。ユーザーnagiosは、両方のマシンで同じように構成されています。

サーバ:

[root@ny4aftp2 ~]# id nagios
uid=498(nagios) gid=498(nagios) groups=498(nagios),500(peeradmin)

クライアント:

[root@ny4aproxy11 ~]# id nagios
uid=498(nagios) gid=498(nagios) groups=498(nagios),500(peeradmin)

また、nagiosユーザーは、/sync_logsディレクトリの所有者であるpeeradminグループのメンバーです。

NFSサーバー上の/sync_logs

[root@ny4aftp2 ~]# ls -ld /sync_logs/
drwxrwxr-x 3 peeradmin peeradmin 4096 Dec 10 10:20 /sync_logs/

NFSクライアントの/sync_logs

[root@ny4aproxy11 ~]# ls -ld /sync_logs/
drwxrwxr-x 3 peeradmin peeradmin 4096 Dec 10 10:20 /sync_logs/

chmod o+w /sync_logsはしたくないので、あるべきように修正することをお勧めします... nagiosユーザーがpeeradmin groupを使用すると、nagiosユーザーが/sync_logsディレクトリに書き込むことができます。

どうすればそれを行うことができ、私は何を間違っているのですか?

編集#1:

IP:/sync_logs on /sync_logs type nfs (rw,noatime,intr,vers=4,addr=SERVER_IP,clientaddr=CLIENT_IP)

前もって感謝します

2
Itai Ganot

これまでのコメントに基づく:

  • マウントはNFSv3で機能しますが、NFSv3では機能しません。
  • ローカルアカウントを使用しています。

これは、問題がNFSv4アカウントの処理とidmapdにある可能性が高いことを意味します。 NFSv3で何が起こるかというと、クライアントはサーバーに使用しているUIDとGIDを通知します。

NFSv4で発生するのは、sernamesを使用し、idmapdを使用して前後にマップすることです。これは、認証レルム全体で同一のUIDとGIDを持つ必要がなくなったことを意味します。

しかし、ここに落とし穴があります-idmapdはマッピングを行ったり来たりできる必要があります。数値のUID/GIDではなくuser@domain(同等)を送信します。

/etc/idmapd.confを確認してください。また、クライアントとホストのドメイン名が一致していることを確認してください。 idmapd.confdomainnameを探しています。設定されていない場合は、サーバー/クライアントレポートのdomainnameコマンドがデフォルトになります。

NFSv3への切り替えは回避策(および検証)として役立つ場合がありますが、おそらく良い考えではありません-NFSv4にはv3に比べていくつかの優れた拡張機能があり、認証の問題のためにそれらをオフにすることは理想的ではありません。

2
Sobrique