Seltsamer Pfad bei Verwendung von Sudoers über LDAP

Seltsamer Pfad bei Verwendung von Sudoers über LDAP

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_pathOption 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 PATHdie 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 PATHherauszufinden, 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:"

verwandte Informationen