Ldap
通過 ldap 使用 sudoers 時出現奇怪的 PATH
我有一個有效的 LDAP 身份驗證環境。LDAP 伺服器在 ubuntu 12.04 機器上,而客戶端都是 centos 6.4 機器。最近我按照這篇文章http://www.malaya-digital.org/configure-ldap-for-sudo-support-in-ubuntu-server-11-04-64-bit/在 LDAP 中配置 sudoers
一切正常,除了使用 sudo 執行命令時 PATH 很奇怪。
這是 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 問題和通過 ldap 對 sudoers 進行故障排除,但沒有發現有什麼問題的線索。
帶有 PATH 設置的 LDAP 條目如下:
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