작동 중인 LDAP 인증 환경이 있습니다. LDAP 서버는 ubuntu 12.04 시스템에 있고 클라이언트는 모두 centos 6.4 시스템에 있습니다. 최근에 이 기사에 따라 LDAP에서 sudoer를 구성했습니다.http://www.malaya-digital.org/configure-ldap-for-sudo-support-in-ubuntu-server-11-04-64-bit/
sudo를 사용하여 명령을 실행할 때 PATH가 이상하다는 점을 제외하면 모든 것이 잘 작동합니다.
sudo의 경로는 다음과 같습니다.
# sudo printenv PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
/bin 에 있는 명령을 제외하고 위에 표시된 PATH에 나열된 모든 명령을 실행할 수 있는 것 같습니다. 예를 들어
# 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를 통한 sudoer 문제 해결, 그러나 무엇이 잘못되었는지에 대한 단서는 찾을 수 없습니다.
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"
답변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
해결책을 직접 찾았지만 정확한 이유는 모르겠습니다.
매우 간단합니다. LDAP 항목의 secure_path 끝에 ":"를 추가하면 모든 문제가 해결됩니다.
secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:"