Problém
Připojení NFSv4 nesprávně zobrazuje všechny soubory s vlastnictvím jako „nobody:nobody “. Z klientského serveru má připojená sdílená složka NFSv4 vlastnictví pro všechny soubory a adresáře uvedené jako nikdo:nikdo namísto skutečného uživatele, který je vlastní na serveru NFSv4, nebo dokonce toho, kdo vytvořil nový soubor a adresář.
Také se zobrazí následující chyba v /var/log/messages:
nss_getpwnam: name ‘[email protected]’ does not map into domain 'localdomain'
Kořenová příčina
V NFSv3 je uživatelské jméno a název_skupiny mapováno z hodnoty UID/GID, UID/GID uživatele vytvářejícího zdroj se uloží na server. Když k němu klientské servery přistupují, zkontroluje se soubor /etc/passwd a /etc/gpasswd, aby se zjistilo, zda id existuje a pro kterého uživatele bude mapováno. Pokud existuje uživatel se stejným uid a gid, bude na tohoto uživatele namapován, jinak se zobrazí číselná hodnota.
V NFSv4 je koncept uživatel@název_domény, pokud neexistuje žádné centralizované mapování uživatelů, pak bude uživatel namapován na výchozího uživatele nikdo nebo jakýkoli uživatel, který byl nakonfigurován v /etc/idmapd.conf.
Nejprve zkontrolujte, zda není konfigurace souboru /etc/imapd.conf poškozena soubor. Pokud provedete změny v souboru idmapd.conf, na CentOS/RHEL 6.5 a novějších je příkaz k vyčištění starých mapování:
# nfsidmap -c
NFSv4 využívá mapování ID k zajištění správného nastavení oprávnění u exportovaných sdílených složek. Pokud se domény klientského serveru a nadřazeného serveru neshodují, pak jsou oprávnění mapována na none:nobody.
Řešení
1. Změňte /etc/idmapd.conf se správným plně kvalifikovaným názvem domény (FQDN) na klientském i nadřazeném serveru. V tomto příkladu je správná doména „example.com“, takže direktiva „Domain =“ v /etc/idmapd.conf by měla být upravena tak, aby zněla:
# vi /etc/idmapd.conf Domain = oracle.com
2. Aby se změny projevily, restartujte službu rpcidmapd a znovu připojte souborový systém NFSv4:
# service rpcidmapd restart # mount -o remount /nfs/mnt/pointPoznámka :Službu rpc.idmapd je nutné restartovat pouze na systémech, kde rpc.idmapd ve skutečnosti provádí mapování id. Na RHEL 6.3 a novějších NFS CLIENTS jsou mapy uloženy v klíčence jádra a samotné mapování id provádí program /sbin/nfsidmap. U starších KLIENTŮ NFS (RHEL 6.2 a starších) a také na všech SERVERech NFS se systémem RHEL se mapování id provádí pomocí rpc.idmapd. Ujistěte se, že klient a server mají odpovídající UID a GID. Je běžnou mylnou představou, že UID a GID se mohou při použití NFSv4 lišit. Účelem mapování id je namapovat id na jméno a naopak. Mapování ID není určeno jako náhrada za správu ID.
Na Red Hat Enterprise Linux 6, pokud byla použita výše uvedená nastavení a UID/GID se shodují na serveru a klientovi a uživatelé stále nejsou mapováni na nikoho:nikdo, pak může být vyžadováno vymazání mezipaměti idmapd.
# nfsidmap -cPoznámka :Výše uvedený příkaz je nutný pouze na systémech, které používají mapovač id založený na klíčence, např. KLIENTI NFS se systémem RHEL 6.3 a vyšším. U RHEL 6.2 a starších NFS KLIENTŮ a také všech NFS SERVERŮ, na kterých běží RHEL, se při restartování rpc.idmapd vymaže mezipaměť. Další kontrola, zda jsou nastavení passwd:, shadow:a group:správně nastavena v souboru /etc/nsswitch.conf na nadřazeném i klientském serveru.
Deaktivace mapování id
Klienti a servery NFS RHEL6.3 a novější klienti a servery NFS standardně zakazují idmapping při použití autentizace AUTH_SYS/UNIX povolením následujících booleovských příkazů:
klientský server NFS
# echo 'Y' > /sys/module/nfs/parameters/nfs4_disable_idmapping
NFS nadřazený server
# echo 'Y' > /sys/module/nfsd/parameters/nfs4_disable_idmapping
Odstraňování problémů
Pokud výše uvedený plán váš problém nevyřeší, proveďte prosím následující diagnostické kroky:
1. Ladění/upovídanost lze povolit úpravou /etc/sysconfig/nfs :
# vi /etc/sysconfig/nfs RPCIDMAPDARGS="-vvv"
2. Následující výstup se zobrazí v /var/log/messages, když je připojení dokončeno a systém ukazuje none:nobody jako uživatelská a skupinová oprávnění k adresářům a souborům:
Jul 3 00:23:18 node1 rpc.idmapd[1874]: nss_getpwnam: name ‘[email protected]’ does not map into domain ‘localdomain’ Jun 3 00:26:54 node1 rpc.idmapd[1874]: nss_getpwnam: name ‘[email protected]’ does not map into domain ‘localdomain’
3. Shromážděte tcpdump pokusu o připojení:
# tcpdump -s0 -i {INTERFACE} host {NFS.SERVER.IP} -w /tmp/{SR_number}-$(hostname)-$(date +”%Y-%m-%d-%H-%M-%S”).pcap &