Nagyon gyakran nem kívánatos, hogy a kliens gépek root-ja root-ként érje el az NFS szerver fájljait. Ebben az esetben, a 0 UID normálisan le van képezve egy másik UID-re, ezt általában anonymous-nak vagy nobody-nak hívják. Ez a mód az alapértelmezett (root squashing-nak hívják), és ha ki akarod kapcsolni, akkor a no_root_squash opciót kell használnod.
Alapértelmezésben az nfsd megkapja az anonymous UID-et és GID-et, megnézve a jelszófájlban a nobody felhasználót indulási időben. Ha nem találja, akkor a -2-es (65534) UID és GID értéket használja. Ezek az értékek felülírhatók az anonuid és az anongid opciókkal.
Hozzáadva ezt, az nfsd képes korlátlan számú speciális UID és GID érték leképezésére, nobody felhasználóra. Végezetül minden felhasználói kérést le tud képezni az anonymous UID-re, használva az all_squash opciót.
A telepítések kedvéért, ahol az UID-ek különböznek a különböző gépek között, az nfsd támogat több lehetőséget a dinamikus leképezésre a szerver és a kliens UID-jei között és viszont:
A statikus leképezés engedélyezhető a map_static opció használatával, amely egy fájlnevet kap argumentumként, amely leírja a leképezést. NIS alapú leképezésnél a kliens a NIS szerverről leképezi a szerveren lévő felhasználói és csoportneveket a kliensen lévő felhasználói és csoportnevekre.
Itt egy teljes lista a leképezési opciókról:
squash_uids=0-15,20,25-50Általában az általad használt lista is ennyire egyszerű.
map_static=/etc/nfs/foobar.mapA fájl formátuma a következő:
# Mapping for client foobar: # távoli helyi uid 0-99 - # squash these uid 100-500 1000 # leképezés 100-500-ról 1000-1500-ra gid 0-49 - # squash these gid 50-100 700 # leképezés 50-100-ról 700-750-ra
Azért, hogy ezt megcsinálja, az NFS szervernek tudnia kell a kliens domain-jét. Ezt meghatározhatjuk a map_nis argumentumával, például:
map_nis=foo.comJegyezd meg, lehetséges, hogy nem elegendő itt egyszerűen meghatározni a NIS domain-t, esetleg kiegészítő műveleteket kell végezned, mielőtt az nfsd valójában kapcsolatba tud lépni a szerverrel. Ha a disztribúciód NYS könyvtárakat használ, akkor meghatározhatsz egy vagy több NIS szervert a kliensek doman-jében a /etc/yp.conf fájlban. Ha egy más NIS könyvtárat használsz, akkor lehet, hogy be kell szerezned egy speciális démont, ypbind(8), amit az yp.conf fájlon keresztül lehet konfigurálni.
# példa /etc/exports fájl / master(rw) trusty(rw,no_root_squash) /projects proj*.local.domain(rw) /usr *.local.domain(ro) @trusted(rw) /home/joe pc001(rw,all_squash,anonuid=150,anongid=100) /pub (ro,insecure,all_squash) /pub/private (noaccess)Az első sorban a teljes fájlrendszer exportálva van a master és a trusty gépeknek. Azonkívül írásjoguk van, és minden UID összerendelés ki van kapcsolva a trusty gépen. A második és harmadik sor a helyettesítő karakterek használatára mutat példát, gépneveknél és hálózati csoportoknál (ez a @trusted). A negyedik sor mutatja a PC/NFS kliensek tárgyalását. Az ötödik sor exportál egy nyilvános FTP könyvtárat mindenki számára a világon, minden kérést a nobody account jogaival hajt végre. Az insecure opció ebben a sorban engedélyezi a klienseknek, hogy nem fenntartott portról érkezzen az NFS kérés. Az utolsó sor minden NFS kliensnek megtiltja a hozzáférést a /pub/private könyvtárhoz.