LDAP를 통해 sudoer를 사용할 때 이상한 경로

LDAP를 통해 sudoer를 사용할 때 이상한 경로

작동 중인 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:"

관련 정보