Warum kann root auf einem Computer nicht den von nfs gemounteten Inhalt von einem anderen Computer ändern?

14

Auf meinem NFS-Server habe ich den folgenden Export definiert:

#NFS exports Database
/shared -alldirs -network=192.168.1 -mask=255.255.255.0

Auf meinem NFS-Client:

192.168.1.7:/shared /shared nfs rw 0 0

Als root auf dem Server kann ich natürlich tun, was ich will. Auf dem Client kann mein regulärer Benutzer 'gabe' Änderungen am nfs-Mount vornehmen (vorausgesetzt, ich habe Berechtigungen dafür), root jedoch nicht.

Als mein regulärer Benutzer:

gabe@client$ cd /shared
gabe@client$ ls -l
total 8
drwxrwxrwx  4 gabe  wheel   512 Mar 20 19:20 tmp
gabe@client$ cd tmp
gabe@client$ touch test.txt
gabe@client$ rm test.txt

Als root:

# cd /shared/tmp
# touch test.txt
touch: test.txt: Permission denied

Auch dies ist alles auf der NFS- Client- Seite der Dinge, und ich vermute, dass es etwas mit der Option -maproot zu tun hat. Dies ist das erste Mal, dass ich NFS einrichte, und diese Besonderheit ist mir gerade aufgefallen. Ich werde jetzt etwas lesen, um zu sehen, ob ich das herausfinden kann, aber wenn jemand einen Einblick hat, würde ich es begrüßen.

gabe.
quelle

Antworten:

18

NFS wurde mit der Idee entwickelt, dass Benutzer- und Gruppen-IDs auf allen Computern im Netzwerk identisch sind. Für normale Benutzer funktioniert das in Ordnung. Aber die UID von root ist immer 0, und nur weil Sie root auf einer Box haben, heißt das nicht, dass Sie root-Zugriff auf jeden Rechner im Netzwerk haben sollten.

Daher behandelt NFS root speziell. Standardmäßig ist root dem nobodyBenutzer zugeordnet, der normalerweise keinen Schreibzugriff hat. Mit dieser -maprootOption können Sie die Behandlung von root ändern. BSD -maproot=rootentspricht der Linux- no_root_squashOption.

cjm
quelle
Ja in der Tat. Dies hat mein Problem behoben. Die Manpage, die ich las, war ein wenig kryptisch (oder mein Verständnis war es) in Bezug auf das, was Maproot genau tat. Vielen Dank!
gabe.
Ein weiterer Neuling hier. Ich habe mich gefragt, ob Sie vielleicht wissen, wie Sie feststellen können, ob ein NFS-Laufwerk für die Verwendung der -maprootOption konfiguriert wurde, ohne Zugriff auf den NFS-Server zu haben.
John
@ John, das ist so unterschiedlich, dass Sie eine neue Frage stellen sollten, anstatt einen Kommentar hinzuzufügen.
cjm 30.07.11
5

Dies ist bei herkömmlichen NFS-Implementierungen üblich. NFS-Benutzerzuordnungen werden unabhängig vom Kontext durchgeführt, daher müssen alle Zugriffe des Clientstamms einem bestimmten Benutzer zugeordnet werden (normalerweise nobodystandardmäßig). Daher dieses seltsame Verhalten, bei dem der Client-Root nicht direkt auf Ihre Dateien zugreifen kann, sondern su gabeauf sie zugreifen kann.

("Aktuelle" Versionen von NFS, dh NFSv4 und vielleicht NFSv3, erlauben ein vernünftigeres Verhalten, wenn dies auf beiden Seiten unterstützt wird, aber ich kenne die Details nicht.)

Gilles 'SO - hör auf böse zu sein'
quelle