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_path
opció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
, PATH
contiene 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 PATH
ver 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:"