2つのサーバー間でNFS共有を作成した後、ポンド1(nfs クライアント) とデータサーバー1(nfs-kernel-server)、NFSサーバー権限を持つユーザーには、NFSクライアントにアクセスする権限がありません。
データサーバー1の構成:
$ cat /etc/exports
/data 10.132.246.167(rw,no_subtree_check)
$ ls -la / | grep data
drwx--x--x 3 u1 users 4.0K Sep 6 03:55 data/
$ ls -la /data
drwxr-xr-x 3 u1 users 4.0K Sep 6 02:31 prod/
drwxrwsr-x 2 www-data www-data 4.0K Sep 6 02:31 keys/
$ awk -F: '$0=$1 " uid="$3 " gid="$4' /etc/passwd | grep 'root\|u1\|ftp\|www-data'
root uid=0 gid=0
www-data uid=33 gid=33
u1 uid=115 gid=100
ftp uid=999 gid=100
lb1 構成:
$ mount 10.132.245.223:/data /data
$ mount
10.132.245.223:/data on /data type nfs4 (rw,relatime,vers=4,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.132.246.167,minorversion=0,local_lock=none,addr=10.132.245.223)
$ sudo -u u1 ls -la / | grep data
drwx--x--x 3 u1 users 4.0K Sep 6 03:55 data/
$ sudo -u u1 ls -la /data
drwxr-xr-x 3 u1 users 4.0K Sep 6 02:31 prod/
drwxrwsr-x 2 www-data www-data 4.0K Sep 6 02:31 keys/
$ awk -F: '$0=$1 " uid="$3 " gid="$4' /etc/passwd | grep 'root\|u1\|ftp\|www-data'
root uid=0 gid=0
www-data uid=33 gid=33
u1 uid=115 gid=100
ftp uid=999 gid=100
NFSサーバー(つまり、data-server1)では、root、u1、およびftpユーザーは/ dataサブディレクトリに適切なrwx権限を持ち、問題なくファイルシステムにアクセスできます。ただし、NFSクライアント(たとえばlb1)では、NFS共有内のディレクトリの内容のみを一覧permission denied
表示しようとすると、rootエラーとftpエラーが発生します。/data
一方、ユーザーu1は完全に実行されます。
NFSを初めて使用します。
答え1
すべてが期待どおりに見えます。そのため、所有者のみを/data
リストできます。他の人は、そのファイルとサブディレクトリに対する権限に基づいて、そのファイルとサブディレクトリにアクセスできます。rwx--x--x
u1
また、エクスポート行にno_root_squashがない場合(またはNFSv4を実行している場合は明示的なユーザーIDマッピングを実行する)、NFSクライアントのユーザーID 0はサーバーのユーザーID 65534(一部のシステムでは-2)にマップされます。次はエクスポート(5) マニュアルページ:
通常、NFSサーバー上のファイルにアクセスするときに、クライアントシステムのrootユーザーがrootと見なされることは望ましくありません。このため、uid 0 は通常、いわゆる匿名または人間 uid という別の ID にマップされます。この動作モード(「ルートスカッシュ」と呼ばれる)はデフォルト値であり、no_root_squashを使用してオフにすることができます。
デフォルトでは、エクスポートfsは圧縮アクセスのためにuidとgid 65534を選択します。この値は、anonuidおよびanongidオプションでオーバーライドすることもできます。