Ich habe eine funktionierende LDAP-Authentifizierungsumgebung. Der LDAP-Server befindet sich auf einem Ubuntu 12.04-Rechner, während die Clients alle CentOS 6.4-Rechner sind. Vor kurzem habe ich Sudoers in LDAP konfiguriert, indem ich diesem Artikel gefolgt binhttp://www.malaya-digital.org/configure-ldap-for-sudo-support-in-ubuntu-server-11-04-64-bit/
Alles funktioniert einwandfrei, außer dass der Pfad seltsam ist, wenn zum Ausführen eines Befehls sudo verwendet wird.
Hier ist der Pfad von sudo
# sudo printenv PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Es scheint, dass alle im oben gezeigten PATH aufgeführten Befehle ausgeführt werden können, außer denen in /bin . Zum Beispiel
# 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
Wenn Sie jedoch den vollständigen Pfad zum Ausführen des Befehls in /bin verwenden, funktioniert es.
# 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
ich habe gelesenProbleme mit sudo im PfadUndFehlerbehebung bei Sudoers über LDAP, finde aber keine Ahnung, was falsch ist.
Der LDAP-Eintrag mit PATH-Einstellung lautet wie folgt:
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"
Antwort1
Ich bin heute auf dasselbe Problem gestoßen und glaube, dass die Lösung einfach darin besteht, die Anführungszeichen aus der secure_path
Option zu entfernen:
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
Indem Sie es in Anführungszeichen setzen, wie Sie im Ergebnis von sehen können sudo printenv PATH
, enthält es PATH
die Anführungszeichen selbst. Dies scheint einem merkwürdig langen Pfad zu entsprechen, in dem Verzeichnisnamen Doppelpunkte enthalten – nicht das, was Sie wollen …
Ihre Antwort scheint das Problem zu umgehen, wahrscheinlich weil der Doppelpunkt am Ende die besondere Bedeutung hat, einen Standardpfad anzuhängen. Versuchen Sie sudo printenv PATH
herauszufinden, was los ist – in meinem Fall hat es nicht funktioniert.
Mit dem LDIF, das ich oben vorschlage, erhalten Sie Folgendes PATH
:
$ sudo printenv PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Antwort2
Ich habe die Lösung selbst gefunden, weiß aber nicht genau, warum.
Es ist ganz einfach: Fügen Sie am Ende des sicheren Pfads im LDAP-Eintrag ein „:“ hinzu, und schon ist das gesamte Problem behoben.
secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:"