RUTA extraña cuando se usan sudoers a través de ldap

RUTA extraña cuando se usan sudoers a través de ldap

Tengo un entorno de autenticación LDAP que funciona. El servidor LDAP está en la máquina ubuntu 12.04, mientras que los clientes son todas máquinas centos 6.4. Recientemente configuro sudoers en LDAP siguiendo este artículohttp://www.malaya-digital.org/configure-ldap-for-sudo-support-in-ubuntu-server-11-04-64-bit/

Todo funciona bien excepto que la RUTA es extraña cuando se usa sudo para ejecutar el comando.

Aquí está la RUTA de sudo

# sudo printenv PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Parece que todos los comandos enumerados en la RUTA que se muestra arriba se pueden ejecutar, excepto los que están en /bin. Por ejemplo

# 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

Sin embargo, cuando se utiliza la ruta completa para ejecutar el comando en/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    

he leídoProblemas con sudo en el caminoySolución de problemas de sudoers a través de ldap, pero no encuentra ninguna pista de lo que está mal.

La entrada LDAP con la configuración PATH es la siguiente:

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"

Respuesta1

Llegué al mismo problema hoy y creo que la solución es simplemente eliminar las comillas dobles de la secure_pathopción:

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

Al rodearlo entre comillas, como puede ver en el resultado de sudo printenv PATH, PATHcontiene las comillas mismas. Esto parece corresponder a una ruta larga y divertida, en la que los nombres de los directorios contienen dos puntos, no es lo que quieres...

Su respuesta parece evitar el problema, probablemente porque los dos puntos al final tienen el significado especial de agregar alguna ruta predeterminada. Intente sudo printenv PATHver qué está pasando; en mi caso no funcionó.

Con el LDIF que propongo arriba, lo que obtienes es lo correcto PATH:

$ sudo printenv PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Respuesta2

Yo mismo encontré la solución, aunque no sé exactamente por qué.

Es bastante simple: agregar ":" al final de la ruta_segura en la entrada LDAP solucionó todo el problema.

secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:"

información relacionada