Re: mounting nfs-share: Permission denied

2003-07-04 Diskussionsfäden saimo
Hallo Gerhard

das war ja ein riesiges Mail. Vielen Dank, habe durch Deine ausfuehrliche
Antwort viel gelernt.

1. bei einem mehr privaten Umfeld

a) Du mußt die User der Clients und des Servers vereinheitlichen.
Also die User, die Backups auf den Server stellen dürfen, müssen
auch auf dem Server als User vorhanden sein, und zwar mit der
gleichen User-ID. Dieser uids dürfen nicht überschneidend sein, also
bei deinem Backup-User 1000/1000 darf es auf den Clients keinen
geben, der auch die uid/gid 1000 hat.
b) auf dem Server legst du eine Gruppe z.B. lbackup an. In diese
Gruppe stellst du alle User die Backups anlegen dürfen plus deinen
Backup-User, der das Backup ausführt.
c) Du erstellst ein Verzeichniss z.B. /backups mit den Rechten

drwxrwx--- 1000 lbackup

Das Verzeichniss gehört also jetzt deinem Backup-User und jeder der
Mitglied in der Gruppe lbackup ist, darf darin unter seiner uid
schreiben.

Dieses Verzeichniss exportierts du nun und zwar nur mit den Optionen
(rw,root_squash). Du sparts dir also das explizite Ummappen der
uid/gid auf 1000/1000.

Werde mich wohl, da es um ein Heimnetzwerk geht, an diese Loesung halten.
Meine erste Idee scheint mir nicht mehr so ideal ;-)

Merci und Gruss
Simon


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: mounting nfs-share: Permission denied

2003-07-03 Diskussionsfäden saimo
Vielen Dank an Gerhard, fuer die ausfuehrlichen Erklaerungen.

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),

war ein Fehler im ersten Posting, sollte (rw) sein

-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.

habe daher die Rechte auf
drwxrwxrwx1 1000 1000
gesetzt

So hat es schlussendlich auch geklappt. Noch eine kleine Frage: Was bedeutet
eigentlich die 1 (drwxrwxrwx11000 1000)? Manchmal ist es ja auch
eine 2.

Warum ich die userid zugewiesen habe: Auf dem Server existiert ein User (uid
1000/gid 1000) der fuer die Backups zustaendig ist. Der User auf dem Client
soll nun seine zu sichernden Dateien auf den gemounteten Share schieben,
wo sie dann vom Backupuser zuerst (z.B. auf CD) gesichert und danach geloescht
werden. Um Probleme mit den Userrechten zu vermeiden, soll eben jeder User
unter der id des Backupusers schreiben. Ist das vernuenftig, oder sollte
man das anders loesen?

Gruss
Simon


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: mounting nfs-share: Permission denied

2003-07-03 Diskussionsfäden Gerhard Brauer
High, high ...
* [EMAIL PROTECTED] [EMAIL PROTECTED] schrieb am [03.07.03 10:36]:

 Vielen Dank an Gerhard, fuer die ausfuehrlichen Erklaerungen.
 
 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),
 
 war ein Fehler im ersten Posting, sollte (rw) sein
 
 -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.
 
 habe daher die Rechte auf
 drwxrwxrwx1 1000 1000
 gesetzt
 
 So hat es schlussendlich auch geklappt. Noch eine kleine Frage: Was bedeutet
 eigentlich die 1 (drwxrwxrwx11000 1000)? Manchmal ist es ja auch
 eine 2.

Kann ich dir nicht genau sagen, muß aber etwas mit der Anzahl der
I-Nodes, die hinter der Datei bzw. den Verzeichnissen liegen, zu tun
haben.

 Warum ich die userid zugewiesen habe: Auf dem Server existiert ein User (uid
 1000/gid 1000) der fuer die Backups zustaendig ist. Der User auf dem Client
 soll nun seine zu sichernden Dateien auf den gemounteten Share schieben,
 wo sie dann vom Backupuser zuerst (z.B. auf CD) gesichert und danach geloescht
 werden. Um Probleme mit den Userrechten zu vermeiden, soll eben jeder User
 unter der id des Backupusers schreiben. Ist das vernuenftig, oder sollte
 man das anders loesen?

Du quälst dich damit mit der klassischen
Benutzerverwaltungs-Problematik herum. Dein Vorgehen hängt von
verschiedenen Umständen ab, der wichtigste ist IMHO inwieweit dein
Umfeld mehr privater oder geschäftlicher Natur ist.
Letztlich ist die Frage: inwieweit kannst du deinen Benutzern gegen
beabsichtlicher oder unbeabsichtlicher Manipulationen trauen. Und
wie groß ist die Anzahl der Benutzer? Weil die Fehlerrate
bekanntlich proportional zu Benutzerrate steigt. Und: wie sensibel
sind die Daten, die da gesichert werden sollen?

Nur mal kurz ein paar Beispiele / Hinweise / Gedankengänge:

a) Um nach deiner Methode den Usern auf den Clients überhaupt die
Möglichkeit zu geben, über nfs in den mount zu schreiben, mußtest du
auf dem Server den Share rwxrwxrwx machen. Jetzt kann *auf* dem Server
(lokal oder per telnet/ssh/nfs) aber *jeder* beliebige Daten in diesem
Verzeichnis löschen oder neue erstellen. Ganz zu schweigen vom
Lesen.

b) Gemeinsame Rechte (ob uid oder gid) in einem Verzeichniss bergen
immer Risiken. So kann User x die Backups von User y beliebig lesen
oder löschen. Als Admin sollte man solche Konstellationen
wenn es geht vermeiden und den Users (und sich selbst!) die Risiken
vor Augen führen.

c) Wenn du wie in a) angemerkt das Backupverzeichnis sowieso für
*jeden* schreib/lesbar machen *mußt*, dann könntest du dir auch den
Umweg über das User-Mapping sparen, da der User 1000/1000 auf dem
Server ja auch alles darf (weil jeder). Ein rm -Rf
/home/user/data/test/* wird dir das belegen.

Wer was darf ergibt sich immer aus den Berechtigungen des gerade
aktuellen Verzeichnisses. Wenn du z.B. als Normal-User in einem
Verzeichnis schreibberechtigung hast, kann dort auch Dateien oder
Verzeichnisse löschen (rm rmdir) die z.B. root gehören.

Noch ein Beispiel, wo sich für dein Backup Probleme ergeben können:
Die User können nur Einzel-Dateien in dein Backup-Verzeichniss
stellen.
User paul vom client kopiert Datei test.txt über nfs ins Backupdir.
Diese gehört jetzt (wegen anonuid/anongid) dem user 1000/1000. User
paul kann diese Datei jetzt nicht mehr verändern (da die Rechte auf
dem Server ja jetzt bei Standard umask 0022 rw-r--r-- sind). Er kann
sie aber noch löschen (da er ja in dem Verzeichniss ja
Schreib-Berechtigung hat). Genauso kann sie aber auch User peter
löschen.
Wenn deine User neben Einzel-Dateien auch Verzeichnisse ins
Backup-Dir stellen wollen, wird es richtig haarig.
User paul möchte ein Verzeichniss paultexte *mit* enthaltenen Dateien
ins Backup stellen. Das klappt nicht. Warum?
paul kopiert das Verzeichniss paultexte. Das Verzeichniss paultexte
wird auf dem Server auch noch angelegt, wechselt aber sofort den
Besitzer (eben zu 1000/1000). Und dann kann der Kopiervorgang für
die Dateien aus dem Verzeichniss paultexte nicht mehr fortgesetzt
werden, weil das Verzeichniss auf dem Server ja nicht mehr paul
gehört und er per default auch kein Schreibrecht mehr hat.

Ich würde dir raten:

1. bei einem mehr privaten Umfeld

a) Du mußt die User der Clients und des Servers vereinheitlichen.
Also die User, die Backups auf den Server stellen dürfen, müssen
auch auf dem Server als User vorhanden sein, und zwar mit der
gleichen User-ID. Dieser uids dürfen nicht überschneidend sein, also
bei deinem Backup-User 1000/1000 darf es 

Re: mounting nfs-share: Permission denied

2003-06-30 Diskussionsfäden saimo
Vielen Dank an Gerhard und Achim

 Aber lassen sich nicht mounten:
 % mount 192.168.0.150:/test blub/
 mount: 192.168.0.150:/test failed, reason given by server: Permission
denied

 Mit -t nfs dasselbe Resultat.

Du versuchst vom Server ein Verzeichnis /test (also Root(/) test) zu
mounten. Das gibt es aber nicht.
Richtig wäre:
mount -t nfs 192.168.0.150:/home/user/data/test wohin_du_mounten_willst

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.
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. 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). 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?

Merci und Gruss
Simon


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)



Re: mounting nfs-share: Permission denied

2003-06-30 Diskussionsfäden Gerhard Brauer
High, high ...
* [EMAIL PROTECTED] [EMAIL PROTECTED] 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:
[EMAIL PROTECTED]:/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-x2 root root 4096 2003-03-23 23:55 sm
drwxr-xr-x2 root root 4096 2003-03-23 23:55 sm.bak
-rw---1 root root4 2003-06-30 19:41 state
-rw-r--r--1 root root0 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/test192.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



pgp0.pgp
Description: PGP signature


Re: mounting nfs-share: Permission denied

2003-06-28 Diskussionsfäden Gerhard Brauer
High, high ...
* [EMAIL PROTECTED] [EMAIL PROTECTED] schrieb am [27.06.03 02:32]:

 Irgendwie bringen ich meinen NFS-Server nicht dazu seine Exports freizugeben.

...

 Die Exports werden scheinbar auch wirklich angeboten:
 % showmount -e 192.168.0.150
 Exports list on 192.168.0.150:
 /home/user/data/test   client 
 
 Aber lassen sich nicht mounten:
 % mount 192.168.0.150:/test blub/
 mount: 192.168.0.150:/test failed, reason given by server: Permission denied
 
 Mit -t nfs dasselbe Resultat.

Du versuchst vom Server ein Verzeichnis /test (also Root(/) test) zu
mounten. Das gibt es aber nicht.
Richtig wäre:
mount -t nfs 192.168.0.150:/home/user/data/test wohin_du_mounten_willst

Also immer die Mountquelle so wie sie auch in den exports am Server
festgelegt ist.

 Merci und Gruss
 Simon

Gruß
Gerhard



pgp0.pgp
Description: PGP signature


Re: mounting nfs-share: Permission denied

2003-06-28 Diskussionsfäden Achim Fritz


On Fri, 27 Jun 2003 [EMAIL PROTECTED] wrote:

 Hallo zusammen

 Irgendwie bringen ich meinen NFS-Server nicht dazu seine Exports freizugeben.

 System: woddy mit 2.4.21

 Ich habe folgende Einstellungen vorgenommen:

 /etc/exports:
 /home/user/data/test   client(ro,all_squash,anonuid=1000,anongid=1000)
 #  uid und gid von user auf dem Server

 /etc/hosts:
 192.168.0.100   client

 /etc/hosts.allow:
 ALL: client

 Nach einem exportfs -ra steht in /proc/fs/nfs/exports folgendes:
 # Version 1.1
 # Path Client(Flags) # IPs
 /home/user/data/test   client(ro,root_squash,all_squash,async,wdelay) # 192.168.0.100

 Der Server und der Client lassen sich gegenseitig pingen.

 Ein rcpinfo zeigt folgendes:
 % rpcinfo -p 192.168.0.150
program vers proto   port
 102   tcp111  portmapper
 102   udp111  portmapper
 1000241   udp  32768  status
 1000241   tcp  32768  status
 132   udp   2049  nfs
 1000211   udp  32770  nlockmgr
 1000213   udp  32770  nlockmgr
 151   udp  32771  mountd
 151   tcp  32769  mountd
 152   udp  32771  mountd
 152   tcp  32769  mountd

 Die Exports werden scheinbar auch wirklich angeboten:
 % showmount -e 192.168.0.150
 Exports list on 192.168.0.150:
 /home/user/data/test   client

 Aber lassen sich nicht mounten:
 % mount 192.168.0.150:/test blub/
 mount: 192.168.0.150:/test failed, reason given by server: Permission denied
versuch mal
mount 192.168.0.155:/home/user/data/test blub
sieht doch besser aus, oder?

Gruss Achim


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)