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.
Der Client ist eine VM mit FreeBSD 8.2 p2 (auf einem physisch anderen Rechner).
Die Konfiguration ist identisch zum Server (ausser nfs_server_*)
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:
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.)
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:
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 !
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 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
(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 !