openvpn 스크립트 내에서 루트 명령을 실행할 수 없습니다


2

클라이언트가 연결할 때 openvpn 옵션 client-connect를 사용하여 스크립트를 실행하고 있습니다.

간단한 명령을 사용하면 스크립트가 제대로 작동하지만 루트 권한이 필요한 명령을 추가하면 작동하지 않으며 클라이언트가 VPN 서버에 연결할 수 없습니다.

예를 들어 여기에 내가 실행하려고하는 명령이 있습니다.

bgpctl reload

route add -net $ifconfig_pool_remote_ip/30 -interface $dev -static.

명령이 테스트되고 올바르게 작동합니다. freeBSD를 사용하고 있습니다.

문제를 해결하는 방법에 대한 아이디어가 있습니까?

감사합니다!

최신 정보

실제로 권한 문제는 없었습니다. 스크립트는 명령을 실행할 수 없습니다 bgpctlroute그것을 인식하지 수 있기 때문이다.

명령의 전체 경로를 지정하여 문제를 해결할 수 있습니다.

/usr/local/sbin/bgpctl reload

/sbin/route add -net $ifconfig_pool_remote_ip/30 -interface $dev -static

이제 작동합니다.

감사합니다 roaima.

답변:


1

--client-connect스크립트에 의해 지정된 권한이없는 OpenVPN을 사용자로 실행되는 --user매개 변수입니다.

--client-connect파일 의 맨 위에이 줄을 추가 /tmp/ov.log하고 성공적인 연결 후 작성된 출력을 검토하여 이를 확인할 수 있습니다.

#!/bin/bash
exec >>/tmp/ov.log 2>&1
chmod 666 /tmp/ov.log 2>/dev/null
echo
date
id
echo "PATH=$PATH"

# Payload
bgpctl reload
route add -net "$ifconfig_pool_remote_ip/30" -interface "$dev" -static

# All done
true

내 시스템에서 --user nobodyand --group nogroup지시문을 사용 하여이 출력을 얻습니다.

Tue Jun  9 15:00:45 BST 2015
uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
...

이것을 root사용자와 wheel그룹 으로 얻었으므로 --useror --group지시문을 사용하지 않는 것 같습니다 .

또한 PATH실행하려는 명령에 필요한 디렉토리 가 포함되어 있는지 확인해야합니다 .


이것은 client-connect 스크립트에서 실행 된 id 명령의 출력입니다 uid=0(root) gid=0(wheel) groups=0(wheel). 루트 사용자 인 것 같습니다.
HaTiMuX

여전히 같은 문제가 있습니다. 사실 나는 당신의 아이디어를 얻지 못했습니다. 단 하나의 정보 인 OpenVPN은 루트로 실행됩니다.
HaTiMuX

@HaTiMuX OpenVPN을 루트로 시작해야하지만 가능한 빨리 권한을 다운 그레이드하는 것이 좋습니다. 실패한 명령의 예와 출력 (해당되는 경우)을 제공하려면 질문을 업데이트하십시오.
roaima

문제는 모든 루트 명령에 있다고 생각합니다. 어쨌든 여기에 내가 실행하려고하는 명령이 있습니다 : bgpctl reloadroute add -net $ifconfig_pool_remote_ip/30 -interface $dev -static. 명령이 테스트되고 올바르게 작동합니다.
HaTiMuX 2016 년

1
문제는 명령 경로에있었습니다. 대단히 감사합니다. 질문을 업데이트하고 나중에 해결책을 설명하겠습니다.
HaTiMuX 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.