PATH estranho ao usar sudoers via ldap

PATH estranho ao usar sudoers via ldap

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_pathopçã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 PATHconté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 PATHver 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:"

informação relacionada