[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: mounting nfs-share: Permission denied



High, high ...
* saimo@bluemail.ch <saimo@bluemail.ch> schrieb am [30.06.03 01:10]:

> >Also immer die Mountquelle so wie sie auch in den exports am Server
> >festgelegt ist.
> 
> Autsch, habe ich die Doku doch nicht richtig gelesen ...
> 
> mounten ging so, allerdings bekam ich, als ich das Verzeichnis oeffnen wollte,
> wieder ein :Permission denied. Mittlerweilen geht aber gar nichts mehr.

Dann solltest du deinem Rechner Beine machen ;-)
Spaß beiseite.

Grundsätzlich: der nfs-server erlaubt es bestimmten *Rechnern*
Verzeichnisse des Servers zu mounten. Diese Verzeichnisse und die
*Rechner* bzw Netzwerke werden am Server durch die /etc/exports
festgelegt, plus Optionen die dann das Arbeiten mit diesen
Verzeichnissen bestimmen.
Nach dem Mounten greift dann die Benutzerverwaltung. D.h. der User
vom Client muß *auf* dem Server die Rechte haben, um bestimmte
Datei-Aktionen ausführen zu können.
Bei Unixen sind Namen Schall und Rauch, letztendlich entscheidend
sind die User-Id(uid) und die Group-Id(gid) auf dem jeweiligen System. Das
setzt für die Berechtigungen also (ganz wichtig) voraus, das die uid
und die gid für den jeweiligen Benutzer sowohl auf dem Server wie
auch den Clients die gleichen sind.
Gesichert ist das in der Regel nur bei root (uid 0, gid 0). Und root
genießt bei nfs eine Sonderbehandlung. Per default verliert der root
vom Client in den vom Server gemounteten Verzeichnissen seine
root-Rechte, darf also nicht alles sehen/schreiben.

> Ich wollte von einem zweiten Client auf den Server zugreiffen und habe die
> Berechtigungen und /etc/exports entsprechend geaendert. Nach einem exportfs
> -ra ist jedoch einfach nichts passiert. Die neuen Daten wurden nicht in
> /var/lib/nfs/xtab uebernommen. 

exportfs -rav gibt mehr Informationen.

> Auch nach einem Loeschen und einem Neustart
> tauchten die alten Einstellungen wieder auf. Schliesslich habe ich noch
> einen Eintrag in /var/lib/nfs/rmtab gefunden. Darauf habe ich die Files
> unter /var/lib/nfs/ geloescht (rmtab, etab, xtab, state) und neu erstellt
> (touch, chmod 644). 

644 für alle ist falsch.
Diese Dateien/Dirs sollten so aussehen:
gerhard@ws01:/var/lib/nfs$ ls -l
insgesamt 20
-rw-r--r--    1 root     root          149 2003-06-30 19:41 etab
-rw-r--r--    1 root     root           87 2003-05-17 13:42 rmtab
drwxr-xr-x    2 root     root         4096 2003-03-23 23:55 sm
drwxr-xr-x    2 root     root         4096 2003-03-23 23:55 sm.bak
-rw-------    1 root     root            4 2003-06-30 19:41 state
-rw-r--r--    1 root     root            0 2003-06-30 19:41 xtab

> Leider habe ich vergessen, vor dieser Aktion den NFS-Server
> zu stoppen. Jedenfall kriege ich jetzt bei einem Mount-Versuch auf den zweiten
> Client den folgenden Fehler:
> 
> mount: RPC - Fehler des Portmappers - RPC : kann nicht empfangen
> 
> Der zweite Client ist in /etc/hosts.allow eingetragen. Die Files /var/lib/nfs/xtab
> und /proc/fs/nfs/exports bleiben nach einem exportfs -ra weiter leer. Der
> Befehl exportfs gibt die shares korrekt an. Was habe ich mit dieser Aktion
> gekillt? Wie wuerde man in einem solchen Fall korrekt vorgehen?
> 

Also mach mal folgendes (ich gehe davon aus das du am Server
schalten und walten kannst wie du willst ohne jemand zu stören):
1. /etc/init.d/nfs-kernel-server stop
2. /etc/init.d/portmap stop
3. Datein u. Dirs aus /var/lib/nfs wieder wie oben in Form bringen

So. Jetzt zu deinen exports. In deinem ersten Posting war dein
export:
/home/user/data/test client(ro,all_squash,anonuid=1000,anongid=1000)

Du willst dieses Verzeichniss also
-schreibgeschützt (ro),
-anonym (uid/gid als nobody) (all_squash),
-und dieser nobody soll auf dem Server der user 1000 / gid 1000 sein
dem Rechner client zum mounten geben.

Auf dem Server muß dann das Verzeichniss die Rechte
drwxr-x---    1 1000     1000
oder
drwxrwx---    1 root     1000
haben. Weil du ja explizit auf diese id mappen willst.
Alle SubDirs und Files müssen latürnich auch für 1000/1000 lesbar
sein.

/etc/hosts.allow ist IMHO für nfs nicht relevant.
auch mit exportfs würde ich mich erstmal nicht rumschlagen. Nach
Änderungenen an den exports ein beherztes stop/start des
nfs-kernel-servers langt.

Jetzt 4. /etc/init.d/portmap start
5. /etc/init.d/nfs-kernel-server start

Jetzt auf dem Client mounten.
Jeder User und root vom Client sollte jetzt lesend auf den mount
zugreifen können. Schreiben verbietest du ja.

Falls das nicht funktionieren sollte:

bitte mal folgende Infos zeigen:

ls -la /home/user/data/test
exportfs -v

Auch kannst du ja testweise mal den share offenmachen.
in die /etc/exports:
/home/user/data/test    192.168.0.0/255.255.255.0(rw,no_root_squash)

Jeder client aus dem Subnet sollte mounten können.
Root sollte nach dem mounten root alles dürfen.
Ein normaler Userr, wenn uid/gid auf client und server
übereinstimmen, kann das tun, was er auch auf dem Server tun könnte.

> Merci und Gruss
> Simon

Gruß
        Gerhard

Attachment: pgpKjt2i1qD3t.pgp
Description: PGP signature


Reply to: