NFSv4 Server und ACL's unter diversen Clients

flechte

Member
Hallo Forum,
ich habe ein Problem mit dem NFSv4 Server und ACL's.

Der Server ist ein FreeBSD 8.2 p2 mit ZFS root.
Zum Testen gibt es auch noch ein UFS.

Code:
(root@server) /root # mount -p
...
rpool/root		/			zfs	rw		0 0
rpool/root/export/test	/export/test		zfs	rw		0 0
/dev/da7s1a		/1			ufs	rw		2 2
...

(root@server) /root # zfs get aclmode,aclinherit rpool/root/export/test
NAME                    PROPERTY    VALUE          SOURCE
rpool/root/export/test  aclmode     passthrough    local
rpool/root/export/test  aclinherit  passthrough    local

(root@server) /root # getfacl -v /export/test/
# file: /export/test/
# owner: root
# group: wheel
            owner@:::deny
            owner@:read_data/write_data/execute/append_data/write_attributes/write_xattr/write_acl/write_owner::allow
            group@:write_data/append_data::deny
            group@:read_data/execute::allow
         everyone@:write_data/append_data/write_attributes/write_xattr/write_acl/write_owner::deny
         everyone@:read_data/execute/read_attributes/read_xattr/read_acl/synchronize::allow

(root@server) /root # getfacl -v /1
# file: /1
# owner: root
# group: wheel
user::rwx
group::r-x
other::r-x

(root@server) /root # cat /etc/rc.conf
...
rpcbind_enable="YES"		# wegen NIS und NFS
rpcbind_flags="" 		# default
...
nfs_client_enable="YES"
nfsuserd_enable="YES"		# NFSv4 user/group name mapping daemon
nfsuserd_flags=""		# Flags for nfsuserd
nfscbd_enable="YES"		# NFSv4 client side callback daemon
nfscbd_flags="" 		# Flags for nfscbd
...
nfs_server_enable="YES"
nfs_server_flags="-t -n 6"	# (tcp,6 daemons)
nfsv4_server_enable="YES"	# 
...
mountd_enable="YES"		# Mount Daemon (fuer NFS3)
mountd_flags="-e -r -l"		# -e wegen NFSv4, -r regular files erlaubt, -l logging an
#
# braucht man fuer NFSv3 - NFSv4 geht auch ohne
rpc_lockd_enable="YES"		# Run NFS rpc.lockd needed for client/server.
# rpc_lockd_flags=""		# Flags to rpc.lockd (if enabled).
rpc_statd_enable="YES"		# Run NFS rpc.statd needed for client/server.
# rpc_statd_flags=""		# Flags to rpc.statd (if enabled).
...

(root@server) /root # cat /etc/exports
/1 		-ro
/export/test	-maproot=root
V4: / -sec=sys -network 192.168.8.0 -mask 255.255.252.0 

(root@server) /root # ps aux |grep nfs
root       26190  0.0  0.0  5828  1660  ??  Is    2:02PM   0:00.03 nfsd: master (nfsd)
root       26191  0.0  0.0  5828  1348  ??  S     2:02PM   0:00.00 nfsd: server (nfsd)
root       26221  0.0  0.0  5832  1680  ??  Is    2:02PM   0:00.00 nfsuserd: master (nfsuserd)
root       26222  0.0  0.0  5832  1716  ??  S     2:02PM   0:00.00 nfsuserd: slave (nfsuserd)
root       26223  0.0  0.0  5832  1716  ??  S     2:02PM   0:00.00 nfsuserd: slave (nfsuserd)
root       26224  0.0  0.0  5832  1716  ??  S     2:02PM   0:00.00 nfsuserd: slave (nfsuserd)
root       26225  0.0  0.0  5832  1716  ??  S     2:02PM   0:00.00 nfsuserd: slave (nfsuserd)
root       26253  0.0  0.0  5828  1312  ??  Is    2:02PM   0:00.00 nfscbd: master (nfscbd)
root       26254  0.0  0.0  5828  1292  ??  S     2:02PM   0:00.00 nfscbd: server (nfscbd)

Der Client ist eine VM mit FreeBSD 8.2 p2 (auf einem physisch anderen Rechner).
Die Konfiguration ist identisch zum Server (ausser nfs_server_*)

Code:
(root@bsdclient) /root # mount -t newnfs -v server:/export/test /mnt
server:/export/test on /mnt (newnfs, fsid 05ff0008000000)
(root@bsdclient) /root # ls -la /mnt
total 7
drwxr-x-r-x   4 root  wheel   5 Aug   4 16:07 .
drwxr-x-r-x  17 root  wheel  23 Jul   6 16:38 ..
drwxr-x-r-x   2 root  wheel   6 Sep  22  2010 3Dir
-rw-r---r--   1 root  wheel   0 Aug   4 16:07 a
drwxr-x-r-x   4 root  guru    6 Sep  22  2010 cli
(root@bsdclient) /root # getfacl -v /mnt/a
# file: /mnt/a
# owner: root
# group: wheel
user::rw-
group::r--
other::r--
Das sind aber keine NFSv4 ACL's !
Das sind nur die normalen Rechte, die ich auch mit NFSv3 erreiche.

Ein Test mit anderen Clients ist noch frustrierender.

Ein Client mit Solaris10 macht folgendes:

Code:
root@solaris:~# mount -F nfs -o vers=4 server:/export/test /mnt
root@solaris:~# mount -p |grep mnt
server:/export/test - /mnt nfs - no rw,xattr
root@solaris:~# ls -lv /mnt/
ls: ACL auf /mnt/ kann nicht gelesen werden: Zugriff verweigert
Es wird aber keine Fehlermeldung auf dem NFSv4 Server generiert.
(Der mountd kann sie auch nicht schreiben, da Solaris den nfsd direkt auf port 2049 anspricht.)

Code:
root@solaris:~# mount -F nfs -o vers=4 server:/1 /mnt
root@solaris:~# mount -p |grep mnt
server:/1 - /mnt nfs - no vers=4,xattr
root@solaris:~# ls -la /mnt/
Gesamt 14
drwxr-xr-x   3 root     nobody       512 Aug  2 12:35 ./
drwxr-xr-x  25 root     root         512 Aug  4 12:57 ../
drwxrwxr-x   2 root     nobody       512 Aug  2 12:26 .snap/
-rw-r--r--   1 root     nobody         0 Aug  2 12:35 a
-rw-r--r--   1 root     guru          26 Aug  2 12:35 test.txt

root@solaris:~# ls -lv /mnt/a 
-rw-r--r--   1 root     nobody         0 Aug  2 12:35 /mnt/a
     0:owner@:execute:deny
     1:owner@:read_data/write_data/append_data/write_xattr/write_attributes
         /write_acl/write_owner:allow
     2:group@:write_data/append_data/execute:deny
     3:group@:read_data:allow
     4:everyone@:write_data/append_data/write_xattr/execute/write_attributes
         /write_acl/write_owner:deny
     5:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
         :allow

Na bitte, geht doch!
Allerdings habe ich in dem exportierten UFS nicht die Rechte wie im ZFS.
Also auch nicht das, was ich wollte.


Ein CLient mit Linux (Ubuntu 10.04.3 LTS) macht folgendes:

Code:
root@ubuntu:~# mount -t nfs4 -v server:/export/test /mnt
mount.nfs4: timeout set for Fri Aug  5 14:38:14 2011
mount.nfs4: text-based options: 'clientaddr=192.168.11.11,addr=192.168.9.10'
mount.nfs4: mount(2): Input/output error
mount.nfs4: mount system call failed

root@ubuntu:~# mount -t nfs4 -v server:/1 /mnt
mount.nfs4: timeout set for Fri Aug  5 14:41:42 2011
mount.nfs4: text-based options: 'clientaddr=192.168.11.11,addr=192.168.9.10'
mount.nfs4: mount(2): Input/output error
mount.nfs4: mount system call failed

Geht also gar nichts !

Mit NFSv3 geht alles - mit allen Clients. Aber eben ohne ACL's.
(POSIX ACL's habe ich nicht ausprobiert.)

Ich habe auch die NFSv4 domain gesetzt (auf allen 4 Hosts gleich) - keine Änderung.
Ich habe statt des GENERIC Kernels einen eigenen Kernel gebaut, der NFSD statt NFSSERVER enthält - auch keine Änderung.

Nun habe ich hier im Forum gelesen, dass andere einen lauffähigen NFSv4 Server haben.
Vielleicht könnt ihr mir den entscheidenden Tip geben.
Danke im voraus !
 
@KobRheTilla

Danke für die schnelle Antwort.

Schön, wenn sie wirken (muss ich probieren).
Aber das heißt ja auch, dass nur der Admin des Fileservers welche vergeben kann.
Wenn das exportierte FS nun die Homes enthält und auf dem Server sich nie ein Nutzer einloggt, wird es eng. Dann müssen sie die Möglichkeit haben ACL's auf Ihrem Client zu setzen und die müssen dann auch im FS des Servers ankommen.
Da sehe ich im Moment schwarz.
 
Zurück
Oben