
У меня есть рабочая среда аутентификации 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 в pathиУстранение неполадок 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"
решение1
Сегодня я столкнулся с той же проблемой и считаю, что решение — просто убрать двойные кавычки из 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
решение2
Я сам нашел решение, хотя и не знаю точно, почему.
Это довольно просто: добавьте «:» в конец secure_path в записи LDAP, и все проблемы будут решены.
secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:"