CentOS 6 + LDAP + NFS. A propriedade do arquivo está bloqueada em "ninguém"

11

Estou tentando obter a autenticação LDAP e os diretórios pessoais exportados pelo NFS no CentOS 6 há alguns dias. Cheguei ao ponto em que agora posso efetuar login na máquina cliente usando o nome de usuário e a senha no LDAP. No cliente, / home e / opt são montados no fstab sobre NFS. No entanto, todos os arquivos em / opt e / home pertencem a nobody:nobody(uid: 99, gid: 99) no cliente.

No entanto, meu uid e gid parecem estar definidos corretamente:

-bash-4.1$ id
uid=3000(myusername) gid=3000(employees) groups=3000(employees)

O que mais posso verificar? Aqui estão alguns arquivos de configuração no meu cliente:

/etc/nsswitch.conf

passwd:     files sss
shadow:     files sss
group:      files sss

hosts:      files dns

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

netgroup:   files sss

publickey:  nisplus

automount:  files ldap
aliases:    files nisplus

/etc/sssd/sssd.conf

[sssd]
config_file_version = 2
services = nss, pam

domains = default
[nss]

[pam]


[domain/default]
auth_provider = ldap
ldap_id_use_start_tls = True
chpass_provider = ldap
cache_credentials = True
krb5_realm = EXAMPLE.COM
ldap_search_base = dc=mycompany,dc=com
id_provider = ldap
ldap_uri = ldaps://server.subdomain.mycompany.com
krb5_kdcip = kerberos.example.com
ldap_tls_cacertdir = /etc/openldap/cacerts

# Configure client certificate auth.
ldap_tls_cert = /etc/openldap/cacerts/client.pem
ldap_tls_key = /etc/openldap/cacerts/client.pem
ldap_tls_reqcert = demand

/ etc / fstab

/dev/mapper/vg_main-lv_root /                       ext4    defaults        1 1
UUID=4e43a15d-4dc0-4836-8fa6-c3445fde756c /boot                   ext4    defaults        1 2
/dev/mapper/vg_main-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
storage1:/nas/home  /home  nfs   soft,intr,rsize=8192,wsize=8192
storage1:/nas/opt  /opt  nfs   soft,intr,rsize=8192,wsize=8192

Saída authconfig:

[root@test1 ~]# authconfig --test
caching is disabled
nss_files is always enabled
nss_compat is disabled
nss_db is disabled
nss_hesiod is disabled
 hesiod LHS = ""
 hesiod RHS = ""
nss_ldap is enabled
 LDAP+TLS is enabled
 LDAP server = "ldaps://server.subdomain.mycompany.com"
 LDAP base DN = "dc=mycompany,dc=com"
nss_nis is disabled
 NIS server = ""
 NIS domain = ""
nss_nisplus is disabled
nss_winbind is disabled
 SMB workgroup = ""
 SMB servers = ""
 SMB security = "user"
 SMB realm = ""
 Winbind template shell = "/bin/false"
 SMB idmap uid = "16777216-33554431"
 SMB idmap gid = "16777216-33554431"
nss_sss is disabled by default
nss_wins is disabled
nss_mdns4_minimal is disabled
DNS preference over NSS or WINS is disabled
pam_unix is always enabled
 shadow passwords are enabled
 password hashing algorithm is sha512
pam_krb5 is disabled
 krb5 realm = "EXAMPLE.COM"
 krb5 realm via dns is disabled
 krb5 kdc = "kerberos.example.com"
 krb5 kdc via dns is disabled
 krb5 admin server = "kerberos.example.com"
pam_ldap is enabled
 LDAP+TLS is enabled
 LDAP server = "ldaps://server.subdomain.mycompany.com"
 LDAP base DN = "dc=mycompany,dc=com"
 LDAP schema = "rfc2307"
pam_pkcs11 is disabled
 use only smartcard for login is disabled
 smartcard module = ""
 smartcard removal action = ""
pam_fprintd is enabled
pam_winbind is disabled
 SMB workgroup = ""
 SMB servers = ""
 SMB security = "user"
 SMB realm = ""
pam_sss is disabled by default
 credential caching in SSSD is enabled
 SSSD use instead of legacy services if possible is enabled
pam_cracklib is enabled (try_first_pass retry=3 type=)
pam_passwdqc is disabled ()
pam_access is disabled ()
pam_mkhomedir or pam_oddjob_mkhomedir is enabled ()
Always authorize local users is enabled ()
Authenticate system accounts against network services is disabled
jamieb
fonte
Você não precisa conectar seu NAS ao LDAP também, se deseja que ele veja os mesmos IDs que seus convidados?
Yanick Girouard
Yanick, obrigado pela resposta. Minha unidade NAS é na verdade apenas outra caixa do CentOS executando um daemon NFS. Ele está configurado da mesma forma que meus outros clientes LDAP e tem o mesmo problema "ninguém".
28712 Jamieb

Respostas:

22

Uma observação a ser adicionada aos pesquisadores do Google - tivemos o mesmo problema: não importa o que fizemos, a montagem nfs não mapeia os IDs do usuário corretamente.

O problema foi que o idmapd armazenou em cache os IDs incorretos da configuração defeituosa, e nenhuma correção da configuração o classificaria.

O comando no centos para corrigir isso foi nfsidmap -c (limpar cache).

Espero que isso ajude algum pesquisador desesperado ..

Sam
fonte
18

Resolvido!

Por acaso, observei essa linha no /var/log/messagesmeu servidor NFS quando estava tentando montar uma exportação do cliente remoto:

Feb 28 15:54:02 storage1 rpc.idmapd[1651]: nss_getpwnam: name 'nobody' does not map into domain 'localdomain'

Isso me levou a olhar para as primeiras linhas de /etc/idmapd.conf:

[General]
#Verbosity = 0
# The following should be set to the local NFSv4 domain name
# The default is the host's DNS domain name.
#Domain = local.domain.edu

Eu então adicionei Domain=subdomain.mycompany.comna linha "Domínio" comentada. Salvo, saiu e, em seguida, correu /etc/init.d/rpcidmapd restarte /etc/init.d/nfs restart.

jamieb
fonte
Isso me ajudou. Observarei que tive que fazer essa alteração no servidor e em todos os clientes.
Michael Hampton
0

Seu servidor NFS está executando o Centos / RHEL 5 por acaso?

Nesse caso, está exportando NFSv3. Agora o NFSv4 é o padrão para o Centos6 (e variantes recentes do Ubuntu).

A solução rápida é adicionar "vers = 3" nas opções de montagem em / etc / fstab.

por exemplo

//10.0.0.1:/home / home nfs padrões, vers = 3, rw, noatime 0 0

NcA
fonte
Obrigado pela sugestão. O servidor LDAP, o cliente e o servidor NFS estão todos executando o CentOS 6.2. Recebo um erro de permissão negada no cliente quando tento montá-lo com a opção da versão 3.
28712 Jamieb
Você está testando isso como o usuário root? Algumas leituras leves úteis linuxtopia.org/online_books/rhel6/rhel_6_storage_admin/… . Pode valer a pena ativar no_root_squash no servidor NFS.
NCA
Resolvido (veja a resposta abaixo)! Obrigado por me fazer pensar mais sobre o NFS, pois eu estava olhando principalmente para o LDAP.
28812 jamieb
0

Tudo o que está sendo mapeado para "ninguém" parece que all_squash está ativado.

Dê uma olhada em:

http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-nfs-server-config-exports.html

e verifique se o arquivo / etc / export do servidor NFS não esmaga acidentalmente os UIDs. "no_all_squash" deveria ser o padrão, mas você pode tentar explicitamente configurá-lo e ver o que acontece.

cjc
fonte
1
Sem sorte, infelizmente. Mas, curiosamente, mount storage1:/nas/opt /mnt/testno cliente autônomo ainda me dá o problema "ninguém", mas o mesmo comando no servidor NFS funciona sem problemas. Eu gostaria de saber se este era um problema NFS ou SSSD / NSS.
28712 Jamieb
0

A correção para mim é garantir que o registro DNS exista para a máquina local. Também ajuda se o registro de pesquisa inversa também existir. Como resultado, o usuário e o grupo ninguém foram substituídos pela raiz. Quão simples é isso?!? PS lembre-se de reiniciar a máquina local depois que os registros DNS forem criados.

user242020
fonte