Pro zpřístupnění NFSv4 ze serveru smaug1.ics.muni.cz na svůj Linux desktop budete potřebovat několik věcí

Podpora NFSv4 v kernelu

Test podpory NFS file systému

Test podpory RPCSEC

Automatické vkládání modulů

Pokud je zřejmé, že systém podporuje NFSv4 včetně RPCSEC, není nutné moduly vkládat ručně, moduly vloží NFS klientské nástroje samy.

Kerberos lístek umožňující připojení svazku

Nabízíme 3 možné způsoby připojení dle typu lístku:

Váš stroj soubor /etc/krb5.keytab od Metacentra

Dan Kouřil nebo Michal Procházka Vám na požádání přidá do /etc/krb5.keytab lístek tvaru nfs/váš_stroj@ICS.MUNI.CZ, který Vám umožní připojit NFS svazek. Původní krb5.keytab je nutno nahradit novým, který Vám bude na požádání vydán.

Váš stroj nemá soubor /etc/krb5.keytab od Metacentra

Můžete použít svůj uživatelský lístek

Před připojením svazku si vytvořte kerberos lístek (kinit). Vytváření lístku musí proběhnout pod rootem, protože pod rootem budete svazek připojovat. V této variantě je nutné nastavit rpc.gssd tak, aby hledal Váš lístek, nikoli systémový, viz níže.

Vydáme Vám jednoúčelový soubor /etc/krb5.keytab

Dan Kouřil nebo Michal Procházka Vám na požádání vytvoří krb5.keytab, který nakopírujete do /etc/. V tomto keytabu bude lístek tvaru nfs/váš_principál@realm. Je důležité, aby realm byl váš implicitní realm v souboru /etc/krb5.conf

Klientské NFSv4 nástroje

Doporučujeme nainstalovat nfs-utils verze 1.1.0 nebo vyšší. Na debianu jde o balíček nfs-common (apt-get install nfs-common). Na opensuse jde o balíček nfs-utils (yast -i nfs-utils) (OpenSuse nižší než 10.3). Na opensuse 10.3 a vyšších jde o balíček nfs-client (yast -i nfs-client

Zároveň budete potřebovat běžící portmap. Měl by se nainstalovat v závislostech na nfs-utils. V opačném případě jde o stejnojmenný balíček (tj. portmap).

Nastavení nfs-utils pro NFSv4

Nastavení idmapd.conf

Soubor /etc/idmapd.conf nastavuje mapování NFSv4 identit na lokální uživatele (NFSv4 pracuje s textovými principály kerbera, POSIX rozhraní file systému pracuje s číselnou reprezentací uživatelů a skupin).

Jednoduché nastavení /etc/idmapd.conf spočívá v nastavení konfiguračního řádku: Domain = META. Pak budou uživatlé z domény @META budou mapováni pomocí souborů /etc/passwd a /etc/group. To znamená že pro identitu xhejtman@META musí existovat záznam v /etc/passwd se jménem xhejtman. Běžné nástroje (ls -l) budou zobrazovat jména a skupiny z domény meta správně, bude-li pro jejich principála existovat jmnéno v daných souborech. Pro neexistující jméno se vybere mapování na uživatele nobody a skupinu nogroup.

Příklad:

grep xhejtman /etc/passwd
xhejtman:x:1000:1000:Lukas Hejtmanek,,,:/home/xhejtman:/bin/bash
ls -l /mnt/nfs/software
total 0
drwxr-xr-x 4 nobody   nogroup   51 2008-06-12 12:49 etics
-rw-r--r-- 1 nobody   nogroup    0 2008-06-06 14:26 hu
drwxr-xr-x 6 xhejtman soft-nfs4 54 2008-06-12 14:45 libnfsidmap
drwxr-xr-x 5 xhejtman soft-nfs4 40 2008-06-11 13:12 nsswitch

Tedy pro uzivatele xhejtman@META existuje jeho příslušný záznam v /etc/passwd a pro skupinu soft-nfs4@META zase záznam v /etc/group, tak mapování proběhne správně a správně se i zobrazuje. Pro uživatele vlastnící adresář etics záznam není, proto se zobrazuje jako nobody:nogroup.

Nastavení správného zobrazování uživatelů a skupin

Výše uvedené nastavení idmapd.conf bude zobrazovat správně pouze uživatele a skupiny uvedené v /etc/passwd a /etc/group a navíc jen, když skupina nebo uživatel bude z domény META.

Tzv. cross realm mapování uživatelů je možné dodatečným nastavením. Je potřeba nastavit mapování NFSv4 identit na číselnou reprezentaci a je potřeba nastavit mapování číselné reprezentace na jména.

Nastavení cross realm mapování NFSv4 identit na číselnou reprezentaci

Pro podporu mapování v cross realm prostředí je nutné získat mapovací soubory pro uživatele a skupiny:

http://meta.cesnet.cz/nfs4/passwd-nfs4 http://meta.cesnet.cz/nfs4/group-nfs4

Tyto soubry je potřeba uložit do /etc/passwd-nfs4 a /etc/group-nfs4.

Dále je potřeba z NFS stáhnout a nainstalovat novou verzi knihovny libnfsidmap. Je umístěna v /storage/software/libnfsidmap, kde jsou jak samotné knihovny pro IA32 i X86_64 (lib32 a lib64), tak i balíčky pro Debian (pro i386 a AMD64).

Pro tento způsob mapování je zapotřebí napřed nastavit jednoduchý způsob popsaný výše, získat balíčky a pak lze zkoušet tento pokročilejší způsob.

Po nainstalování nové verze libnfsidmap a získání mapovacích souborů změníme nastavení idmapd.conf:

[Translation]

Method = mnsswitch

V konfiguračním souboru již obdobné nastavení mohlo být, nové nastavení má text mnsswitch namísto nsswitch. Nastavení Domain = META ponecháme.

Zrestartujeme službu idmapd. Debian: /etc/init.d/nfs-common restart, opensuse /etc/init.d/idmapd restart nebo /etc/init.d/nfs restart

Tímto máme cross realmové mapování identit NFSv4 na číselnou reprezentaci pro POSIX rozhraní.

Nastavení cross realm mapování číselné reprezentace na jména

Jedná se o nastavení nsswitch mechanismu překladu jmen.

Z NFS /storage/software/nsswitch si stahneme knihovnu libnss-nfs4.so.2 a umístíme ji do adresáře /lib. Na NFS jsou opět umístěné verze pro debian i386 a X86_64. Protože se jedná o jediný soubor, nejsou vyrobeny balíčky.

Konfiguraci /etc/nsswitch.conf změníme následovně:

passwd:         compat nfs4
group:          compat nfs4

Tedy k řádkům s passwd a group přidáme nakonec slova nfs4 (jde o stejné jméno jako má knihovna libnss-jméno.so.2).

V tomto případě není nutné nic restartovat, nové mapování by mělo fungovat ihned.

Implicitně se vypisují jména i s doménou. Nechmeme-li nějakou doménu neustále vypisovat, lze exportovat proměnnou prostředí NFS4DOMAIN. Například: export NFS4DOMAIN=META, pak se ve výpisu jmen budou zobrazovat jména z domény META bez této domény.

Kerberos identity

Uživatelé používající jednu identitu by si měli vystačit se standardními NFS nástroji jejich distribuce. Pokud chcete používat více identit najednou na svém systému, typicky xhejtman@META, xhejtman@ADMIN.META, xhejtman@ICS.MUNI.CZ, je nutné použít opravený rpc.gssd program. Opravený program je obsažen v NFS utils verze 1.1.3. Oprava pro starší verzi není úplně triviální, v tomto případě je nejlepší nás kontaktovat a vyrobíme vám opravený balíček.

Připojení svazku

Připojení svazku je nutné provádět s root oprávněními. Ujistěte se, že máte správný /etc/krb5.keytab nebo vytvořený uživatelský lístek pod rootem, ujistěte se, že vám běží portmap a nfs-common (nfs-utils). Lze ověřit pomocí: ps ax | grep rpc.gssd, ps ax | grep portmap.

Připojení provedeme pomocí:

mount -t nfs4 smaug1.ics.muni.cz:/ /storage -o sec=krb5

Místo /storage je možno zadat jakýkoliv jiný lokální adresář, kam chceme NFS svazek připojit. Uvedeme-li místo sec=krb5 volbu sec=krb5i bude při přenosech kontrolována integrita dat, uvedeme-li sec=krb5p budou data přenášena šifrovaně.

Kerberos lísky

Lístek v /etc/krb5.keytab je implicitně použit puze pro mountování svazku. Lze se domluvit tak, že lístek lze použít i pro přístup k úložišti - explicitní domluva je nutná. Tento lístek platí dokud ho správce kerberos serveru nezruší. Tedy případný přístup pomocí lístku je "navždy".

Uživatelský lístek (obvykle /tmp/krb5cc_cislo) lze použít pro mountování (pustíme-li rpc.gssd s volbou -n) i pro přístup. Tento lístek ma zpravidla omezenou platnost.

Instalační postup pro Gentoo

Potřebujete nainstalované balíčky net-nds/portmap a net-fs/nfs-utils. Zkontrolujte, že nfs-utils jsou kompilovány s kerberem.

Skripty pro start nfs v Gentoo jsou poněkud nešťastné, zejména míchají nastavení serveru a klienta. Nastavení nfs-utils je v souboru /etc/conf.d/nfs, ve kterém potřebujete měnit nejvýše volbu "OPTS_RPC_GSSD" na hodnotu " -- -n " v případě, že používáte vlastní klíč a nikoli keytab stroje.

Dále se přesvědčte, že máte natažené moduly nfs a rpcsec_gss_krb5 a zařiďte, ať se po bootu natahují (vaším oblíbeným způsobem). Skripty je neumí natáhnout samy.

Nakonfigurujte /etc/idmapd.conf, jak je popsáno výše, typicky stačí přepsat Domain na META ve vzorovém souboru, a vraťte se opět na toto místo návodu.

Potřebujete spustit služby rpc.gssd a rpc.idmapd, například /etc/init.d/rpc.gssd start, a zařídit, aby se spouštěly po startu (rc-add default rpc.gssd a podobně pro rpc.idmapd).

Do /etc/fstab přidejte smaug1.ics.muni.cz:/ /storage nfs4 sec=krb5

a spusťte službu /etc/init.d/nfsmount. Svazek by se měl připojit.