Странный PATH при использовании sudoers через ldap

Странный PATH при использовании sudoers через ldap

У меня есть рабочая среда аутентификации 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:"

Связанный контент