Como corrigir sudo: setreuid (ROOT_UID, user_uid): Erro de operação não permitida?

3

Estou usando a autenticação LDAP no meu servidor Ubuntu 11.10. Eu instalei a libpam-ldap e configurei as coisas de acordo. Ele funciona muito bem, exceto que recebo esse erro de vez em quando quando tento sudo:

sudo: setreuid(ROOT_UID, user_uid): Operation not permitted

Eu sei que tenho sudoers configurados corretamente, já que funciona na maioria das vezes. Não é apenas o meu login, outros têm o mesmo problema quando o tenho. Quando esse erro está ocorrendo, não consigo me conectar com o usuário regular do sistema. Quando eu entro diretamente, não consigo iniciar nenhum gnome-terminal.

Depois que eu reiniciar o servidor, o problema desaparece. Claro, isso não é uma solução, se fosse um servidor de prod, eu estaria em apuros.

Como corrijo isso?

Editar 01/03/12: Acabei de descobrir que, se parar e iniciar o serviço nscd, o problema desaparece.

service nscd stop
service nscd start

Não há muita solução, já que preciso estar logado diretamente no servidor, não via ssh.

    
por David R. 22.02.2012 / 20:00

2 respostas

5

Este é um bug conhecido que foi introduzido quando o Debian (e, portanto, o Ubuntu ) mudou de usar OpenSSL para GnuTLS com OpenLDAP devido às dificuldades de licenciamento com o OpenSSL . O problema está no modo libgcrypt (o atual back-end de criptografia para GnuTLS ) é inicializado. O problema existe desde o Ubuntu 9.10 e não foi realmente endereçado porque o GnuTLS está mudando de libgcrypt (que evidentemente tem outros problemas também) para libnettle . Até que essa alteração o torne downstream, há três possíveis contornos, todos enumerados no relatório de bug acima.

  1. Compile libgnutls26 da origem para use libnettle em vez de libgcrypt
  2. Compile libldap da origem para use openssl em vez de gnutls26
  3. Use libnss-ldapd em vez de libnss-ldap . Isso tem várias variações. Primeiro use libpam-ldap , que extrai libnns-ldap como uma dependência, o que torna a configuração complicada. Em segundo lugar, use libpam-ldapd , que não está completo. Ele carece especialmente de todas as configurações de pam _ * que permitem limitar os subconjuntos de usuários. A fim superar esta deficiência você poderia usar o overlay do nssov com o slapd, mas este não é incluído no slapd com Ubuntu (assim que você precisaria de compilar da fonte). libpam-ldapd usa o daemon nslcd para lidar com as pesquisas do ldap; Portanto, ele usa /etc/nslcd.conf em vez de /etc/ldap para configuração. Em particular, você pode usar o pam_authz_search para restringir a autorização. Veja man nslcd.conf para detalhes. Há também um bom howto aqui , e aqui se você precisar configurar o startTLS.

ATUALIZAÇÃO: Em 29/5/2012, uma correção de bug estava disponível no repositório proposto para Lucid , Natty e > Onírico . Isso corrigiu os problemas com logins LDAP; no entanto, a partir de 9/6/2012, este novo patch mostrou quebrar outros pacotes 1 e foi removido. Além disso, como documentado em este bug , a solução alternativa usando nscd, não funciona mais em todos. Esta é uma regressão infeliz e, pior, o problema não está realmente corrigido em Preciso e Quantal . Por fim, a única correção real é eliminar libgcrypt11 em favor de libnettle4 . O mais recente libgnutls28 em Preciso e Quantal já faz isso, mas libldap ainda usa libgnutls26 .

As instruções para compilar libgnutls26 de source são explicadas nos comentários 22 , 23 e 24 em este relatório de erros . Mas as instruções parecem funcionar apenas para Preciso .

    
por Chris 13.05.2012 / 18:45
0

Uma medida insegura: desabilite o SSL

    
por Fabio Feitosa 26.05.2015 / 20:03