# Geloest: NFS Berechtigungs Problem

## Erdie

Hi,

ich habe einen Nettop, auf dem kde4 läuft  und an dem eine USB Platte hängt. KDE mountet die Platte automatisch in das Verzeichnis /media und legt dort ein Verzeichnis mit dem Namen einer GUID an:

```

nettop media # ls -l

total 4

drwxrwxrwx 6 martin users 4096 Dec 13  2010 0623293b-9946-45ed-b950-21928204f61b

```

Das Verzeichnis /media wollte ich via nfs exportieren und auf einer anderen Maschine mounten. Die Export datei sieht folgendermaßen aus:

```

nettop media #  cat /etc/exports 

# /etc/exports: NFS file systems being exported.  See exports(5).

/media *(rw,no_root_squash,no_subtree_check,sync)

nettop media #

```

Wenn ich dieses  auf einer anderen Maschine mounte, mit  folgendem fstab Eintrag:

```

nettop:/media           /mnt/nettop     nfs             noauto,user,rw  0 0

```

Dann erscheint der Mountpoint  mit einer dubiosen user - und Gruppen ID und ich das Verzeichnis nicht ansehen kann:

```

kellerkind mnt # ls -l

total 8

drwxr-xr-x 2 root       root       4096 Oct  7 18:02 cdrom

drwxr-xr-x 3 4294967294 4294967294 4096 Nov 26 12:02 nettop

kellerkind mnt # 

```

Der Versuch den Folder aufzumachen bringt dann als nomaler user "could not enter folder ... " bzw auf der Konsole "permission denied". Als root kann ich zwar rein aber es werden keine Dateien in dem Folder angezeigt, er sieht leer aus.

Was mache ich falsch?

BTW: Der ftp server hat keine Probleme mit dem Verzeichnis. Ich möchte das aber gern mit nfs machen. In den Ordnern befinden sich u. a. Videos, die man über ftp nicht mal so einfach anspielen kann, es sei  denn, man lädt die gesamte Datei runter. Das möchte ich vermeiden.

Grüße

Erdie

----------

## ixo

Hallo,

wahrscheinlich wird per Default nfsv4 verwendet, da muss man für's User Mapping einen Eintrag ändern (klappt bei mir aber nicht zwischen gentoo-NFS-Server und Ubuntu-Client).

Versuch einfach mal beim mounten z.B. nfsv3 anzugeben.

```
nettop:/media           /mnt/nettop     nfs             noauto,user,rw,nfsvers=3  0 0 
```

Ich hoffe, es hilft.

ixo

----------

## Max Steel

Du exportierst mit dem Parameter no_subtree_check

Das bedeutet dein /media wird exportiert aber alle darin enthaltenen sub-Bäume (alle darin gesetzten mountpoints) werden nicht mitübertragen).

änder das mal in subtree_check und probier nochmal (aber Vorsicht, ist nicht empfohlen; besser wäre der USB-Platte einen festen Mountpoint über fstab zu geben und diesen dann zu exportieren)

----------

## Erdie

Hmm .. ich habe beides probiert: mit subtree_check und nfsvers=3 aber es bleibt, wie es war. Als user kann ich nicht in das Verzeichnis und als root sehe ich dort keine Daten.  :Confused: 

----------

## boospy

Ja, NFS haut so richtig rein wenns um Berrechtigungen geht. Und wenns was als NichtRoot ist, sowiso. Ich bin bis jetzt noch nicht schlau draus geworden. Vielleicht  hilft das ja weiter:

http://www.suse.de/~agruen/nfs4acl/

http://nfs.sourceforge.net/nfs-howto/

http://www.citi.umich.edu/projects/nfsv4/linux/using-acls.html

lg

boospy

----------

## Treborius

nfs hab ich auch weggehauen,

das mit dem ganzen user-mapping war mir zu kompliziert

ich nutzte nun sshfs über fuse

----------

## Erdie

sshfs hatte ich auch vorher. leider hat das Nachteile. Auf dem share befinden sich Filme.  Wenn ich die über das Netz anspielen möchte, wird dann erst die ganze Datei runtergeladen bevor sie geöffnet wird. Nfs sollte sich wie ein lokales Dateisystem verhalten, so daß man in die Datei reinschauen kann, ohne vorher 1 GB über wlan zu ziehen. Das ist der Grund, weshalb ich nfs verwenden möchte.

----------

## py-ro

Mit sshfs über fuse geht genau das

----------

## boospy

Ja kann ich bestätigen. Ich habe mit sshfs was gemountet und von dort nen HD Film angesehen. Funzt normal. Wird nicht zuerst der ganz Film kopiert. Das was du meinst ist das Einbinden von Netzlaufwerken über grafische Tools wie Nautilus oder Dolphin. Hierbei muss bei SSH und Samba die Datei zuerst dowgeloadet werden. Frag mich nicht warum um Gottes Willen das so blöd gelöst worden ist. Für kleine Officedinge ist das brauchbar. Aber nicht für große Dateien. Zur Erleichterung als User:

```
visudo

%users ALL=(ALL) NOPASSWD: /bin/mount, /bin/umount, /usr/bin/sshfs

```

lg

boospy

----------

## l3u

Man muß lediglich rpc.idmapd starten und alles is gut … ich hatt genau das selbe Problem auch kürzlich. Aber wie gesagt /etc/init.d/rpc.idmapd start und sonst nix ändern an irgendwelchen Konfigurationsdateien und alles war wie bisher.

----------

## toralf

 *boospy wrote:*   

> Das was du meinst ist das Einbinden von Netzlaufwerken über grafische Tools wie Nautilus oder Dolphin. Hierbei muss bei SSH und Samba die Datei zuerst dowgeloadet werden. Frag mich nicht warum um Gottes Willen das so blöd gelöst worden ist.

 Eventuell ist die Option "Preview" dafür verantwortlich.

----------

## Christian99

 *boospy wrote:*   

> Ja kann ich bestätigen. Ich habe mit sshfs was gemountet und von dort nen HD Film angesehen. Funzt normal. Wird nicht zuerst der ganz Film kopiert. Das was du meinst ist das Einbinden von Netzlaufwerken über grafische Tools wie Nautilus oder Dolphin. Hierbei muss bei SSH und Samba die Datei zuerst dowgeloadet werden. Frag mich nicht warum um Gottes Willen das so blöd gelöst worden ist. Für kleine Officedinge ist das brauchbar. Aber nicht für große Dateien. Zur Erleichterung als User:
> 
> ```
> visudo
> 
> ...

 

Spontan hätt ich gesagt, dass Nautilus/Dolphin auf sftp basieren (Zumindest deren ssh-Protokoll).

sshfs verwendet dagegen vermutlich sowas wie scp, was u.U. dann besser funktioniert. (Letzter Satz nur vermutung und ohne Anspruch auf richtigkeit. Vielleicht weiß das jemand besser...)

----------

## boospy

Also Idmapd sollte eigentlich als Abhängigkeit dazugestartet werden. Tut er wohl nicht immer. Wem die Rechte total wurst sind, kann am Server auch die Option "all_squash" setzten. Das deaktiviert die Rechteverwaltung, und jeder kann drauf schreiben und ändern. Alles wird auf nobody gespeichert. Wobei die oktalen Werte dann auch wurst sind. Beispiel:

```
/export/testfreigabe    *(no_subtree_check,all_squash,rw)
```

lg

boospy

----------

## Erdie

Habe das Problem gefunden:

Man muß den Mountpoint eine Ebene tiefer wählen, da sonst nur bis zur der Ebene exportiert wird, wo das neue Filesystem gemountet ist. Und /media/<irgendwas> ist ja der Moutpoint für die USB Platte.

BTW: all_squash bewirkt, dass ich als user, obwohl er mit gleichem Namen auf client und server existert, nur lesen kann. Ohne diesen Parameter funktioniert der Schreibzugriff.

Vielen Dank und Grüße

Erdie

----------

## boospy

 *Erdie wrote:*   

> Habe das Problem gefunden:
> 
> BTW: all_squash bewirkt, dass ich als user, obwohl er mit gleichem Namen auf client und server existert, nur lesen kann. Ohne diesen Parameter funktioniert der Schreibzugriff.
> 
> Erdie

 

Aso, ja hatte vergessen zu erwähnen das natürlich die Benutzerrechte einmalig gesetzt werden müssen.

lg

boospy

----------

## LinuxTom

 *Erdie wrote:*   

> Habe das Problem gefunden:
> 
> Man muß den Mountpoint eine Ebene tiefer wählen, da sonst nur bis zur der Ebene exportiert wird, wo das neue Filesystem gemountet ist. Und /media/<irgendwas> ist ja der Moutpoint für die USB Platte.

 

Leider funktioniert das bei mir nicht:

Auf dem Server /etc/exports:

```
/exports 192.168.1.0/255.255.255.0(rw,no_subtree_check,crossmnt,fsid=0)
```

In diesem:

```
# ls -l /exports/

insgesamt 1

drwxr-xr-x 12 vdr vdr 560 17. Feb 07:25 video
```

Auf dem Client:

```
mount.nfs4 -o rw 192.168.1.2:/video /video/
```

```
# ls -l /video/

-rw-r--r--  1 4294967294 4294967294 23492822 17. Feb 07:15 epg.data

-rw-r--r--  1 4294967294 4294967294      297 12. Feb 23:07 xineliboutput@192.168.1.2.sdp
```

Und die /etc/idmapd.conf

```
[General]

Domain = local

[Mapping]

Nobody-User = nobody

Nobody-Group = nobody
```

Wie bekomme ich jetzt das User-ID Mapping ans laufen, sonst kann ich meine eigenen Aufzeichnungen nicht schauen.  :Sad: 

PS: /usr/sbin/rpc.idmapd läuft.

----------

## LinuxTom

Dann will ich noch mal anders fragen: Welche Versionen setzt ihr ein, bei denen es funktioniert. Also Kernel und nfs-utils. Bitte Melden.

----------

## LinuxTom

Mit der neuen Version (Kernel -> 3.2.1-r2 & nfs-utils -> 1.2.5), kommt wenigstens auf dem Server schon ein klares Mapping. Jetzt kommt das Update das Clients dran.

```
Feb 18 12:04:09 lux rpc.idmapd[4071]: nfsdcb: authbuf=192.168.1.1/255.255.255.0 authtype=user

Feb 18 12:04:09 lux rpc.idmapd[4071]: nfs4_uid_to_name: calling nsswitch->uid_to_name

Feb 18 12:04:09 lux rpc.idmapd[4071]: nfs4_uid_to_name: nsswitch->uid_to_name returned 0

Feb 18 12:04:09 lux rpc.idmapd[4071]: nfs4_uid_to_name: final return value is 0

Feb 18 12:04:09 lux rpc.idmapd[4071]: Server : (user) id "117" -> name "vdr@localdomain"

Feb 18 12:04:50 lux rpc.idmapd[4071]: nfsdcb: authbuf=192.168.1.1/255.255.255.0 authtype=group

Feb 18 12:04:50 lux rpc.idmapd[4071]: nfs4_gid_to_name: calling nsswitch->gid_to_name

Feb 18 12:04:50 lux rpc.idmapd[4071]: nfs4_gid_to_name: nsswitch->gid_to_name returned 0

Feb 18 12:04:50 lux rpc.idmapd[4071]: nfs4_gid_to_name: final return value is 0

Feb 18 12:04:50 lux rpc.idmapd[4071]: Server : (group) id "989" -> name "vdr@localdomain"
```

----------

## LinuxTom

Auf dem Client kommt jetzt:

```
Feb 18 12:27:25 wiesel rpc.idmapd[4417]: libnfsidmap: using domain: localdomain

Feb 18 12:27:25 wiesel rpc.idmapd[4417]: libnfsidmap: loaded plugin /usr/lib64/libnfsidmap/nsswitch.so for method nsswitch

Feb 18 12:27:25 wiesel rpc.idmapd[4418]: Expiration time is 600 seconds.

Feb 18 12:27:25 wiesel rpc.idmapd[4418]: Opened /proc/net/rpc/nfs4.nametoid/channel

Feb 18 12:27:25 wiesel rpc.idmapd[4418]: Opened /proc/net/rpc/nfs4.idtoname/channel

Feb 18 12:27:25 wiesel sm-notify[4428]: Version 1.2.5 starting

Feb 18 12:27:25 wiesel sm-notify[4428]: Already notifying clients; Exiting!

Feb 18 12:27:25 wiesel rpc.idmapd[4418]: New client: 8

Feb 18 12:27:25 wiesel rpc.idmapd[4418]: New client: 9

Feb 18 12:27:25 wiesel rpc.idmapd[4418]: New client: a

Feb 18 12:27:25 wiesel rpc.idmapd[4418]: New client: b

Feb 18 12:27:25 wiesel rpc.idmapd[4418]: Stale client: a

Feb 18 12:27:25 wiesel rpc.idmapd[4418]:        -> closed /var/lib/nfs/rpc_pipefs/nfs/clnta/idmap

Feb 18 12:27:25 wiesel rpc.idmapd[4418]: Stale client: 9

Feb 18 12:27:25 wiesel rpc.idmapd[4418]:        -> closed /var/lib/nfs/rpc_pipefs/nfs/clnt9/idmap
```

Und es funktioniert immer noch nicht:

```
#ls -l /var/vdr/

insgesamt 21

drwxr-xr-x  2 vdr        vdr        4096 10. Feb 10:38 dvd-images

drwxr-xr-x  2 vdr        vdr        4096 17. Feb 08:48 merged-config-files

drwxr-xr-x  2 vdr        vdr        4096 10. Feb 10:38 shutdown-data

-rw-r--r--  1 vdr        vdr         425 15. Feb 15:38 sysconfig-setup

drwxr-xr-x  2 vdr        vdr        4096 17. Feb 08:48 tmp

drwxr-xr-x 14 4294967294 4294967294  688 18. Feb 12:21 video
```

Kann mir jemand helfen?

----------

## LinuxTom

Und hier ist die Lösung für mich.  :Smile: 

----------

