Eu tenho um ambiente de autenticação LDAP funcional. O servidor LDAP está na máquina ubuntu 12.04, enquanto o cliente são todas máquinas centos 6.4. Recentemente eu configurei sudoers no LDAP seguindo este artigohttp://www.malaya-digital.org/configure-ldap-for-sudo-support-in-ubuntu-server-11-04-64-bit/
Tudo funciona bem, exceto que o PATH fica estranho ao usar o sudo para executar o comando.
Aqui está o PATH do sudo
# sudo printenv PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Parece que todos os comandos listados no PATH mostrado acima podem ser executados, exceto os que estão em /bin . Por exemplo
# sudo which node
/usr/local/bin/node
# sudo which zip
/usr/bin/zip
# sudo which ip
/sbin/ip
# sudo which ls
which: no ls in ("/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin") #WTF??
# sudo ls /
sudo: ls: command not found
No entanto, ao usar o caminho completo para executar o comando em/bin, funciona.
# sudo /bin/ls /
bin boot dev etc home lib lib64 lost+found media mnt NFS opt proc root sbin selinux srv sys tmp usr var
eu liProblemas com sudo no caminhoeSolução de problemas de sudoers via ldap, mas não encontre nenhuma pista do que está errado.
A entrada LDAP com configuração PATH é a seguinte:
dn: cn=defaults,ou=SUDOers,dc=example.dc=com
objectClass: top
objectClass: sudoRole
cn: defaults
description: Default sudoOption's go here
sudoOrder: 1
sudoOption: env_reset
sudoOption: secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Responder1
Cheguei ao mesmo problema hoje e acredito que a solução é simplesmente retirar as aspas duplas da secure_path
opção:
dn: cn=defaults,ou=SUDOers,dc=example.dc=com
objectClass: top
objectClass: sudoRole
cn: defaults
description: Default sudoOption's go here
sudoOrder: 1
sudoOption: env_reset
sudoOption: secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Ao colocá-lo entre aspas, como você pode ver no resultado de sudo printenv PATH
, o PATH
contém as próprias aspas. Isso parece corresponder a um caminho longo e engraçado, no qual os nomes dos diretórios contêm dois pontos --- não o que você deseja ...
Sua resposta parece contornar o problema, provavelmente porque os dois pontos no final têm o significado especial de anexar algum caminho padrão. Tente sudo printenv PATH
ver o que está acontecendo --- não funcionou no meu caso.
Com o LDIF que proponho acima, o que você ganha é o certo PATH
:
$ sudo printenv PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Responder2
Eu mesmo encontrei a solução, embora não saiba exatamente por quê.
É bastante simples, adicionar ":" ao final do secure_path na entrada LDAP corrigiu todo o problema.
secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:"