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


2

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

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

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

bgpctl reload 과

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

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

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

감사합니다!

최신 정보

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

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

/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 reload및 route 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.