У меня есть рабочая среда аутентификации LDAP. Сервер LDAP находится на машине ubuntu 12.04, а клиент - все машины centos 6.4. Недавно я настроил sudoers в LDAP, следуя этой статье http://www.malaya-digital.org/configure-ldap-for-sudo-support-in-ubuntu-server-11-04-64-bit/
Все работает нормально, за исключением того, что PATH странный при использовании sudo для выполнения команды.
Вот ПУТЬ sudo
# sudo printenv PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Кажется, что все команды, перечисленные в PATH, показанном выше, могут быть выполнены, кроме тех, которые находятся в / bin. Например
# 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
Однако при использовании полного пути для выполнения команды в / bin он работает.
# 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
я прочитал Проблемы с sudo в пути и Устранение неполадок sudoers через ldap, но не поймешь, что не так.
Запись LDAP с настройкой PATH выглядит следующим образом:
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"
Сегодня я столкнулся с той же проблемой, и я считаю, что решение - просто удалить двойные кавычки из secure_path
вариант:
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
Заключив его в кавычки, как вы можете видеть в результате sudo printenv PATH
, то PATH
содержит сами цитаты. Кажется, это соответствует одному забавному длинному пути, в котором имена каталогов содержат двоеточия - не то, что вам нужно ...
Ваш ответ, кажется, позволяет обойти проблему, вероятно, потому, что двоеточие в конце имеет особое значение добавления некоторого пути по умолчанию. Пытаться sudo printenv PATH
чтобы посмотреть, что происходит --- в моем случае это не сработало.
С LDIF, который я предлагаю выше, вы получаете правильный PATH
:
$ sudo printenv PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Я сам нашел решение, хотя не знаю, почему.
Это довольно просто, добавив ":" в конец secure_path в записи LDAP, проблема решена.
secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:"