OpenVPN의 "--up"옵션은 일반적으로 라우팅 등에 사용됩니다. 따라서 OpenVPN이 루트 권한을 삭제하여 아무도 실행하지 않기 전에 처리됩니다. 그러나 권한이없는 사용자로 실행 해야하는 쉘 스크립트를 호출하고 있습니다.
어떻게해야합니까? 나는 공부 드롭 프로세스 권한 , 특히 다항식의 및 tylerl의 대답을하지만, 내가 구현하는 방법을 이해하지 않습니다. Centos 6.5에서 작업 중이며 "chmod u + s"및 "setuid ()"로 suid가 차단되었습니다.
"--down"옵션으로 호출 된 스크립트를 루트로 실행할 수있는 OpenVPN 플러그인 ( "openvpn-down-root.so")이 있습니다. "openvpn-up-user.so"와 같은 해당 항목이있을 수 있지만 찾지 못했습니다.
편집 0
Nikola Kotur의 답변에 따라 Ian Meyer의 runit-rpm을 설치했습니다 . chpst 명령은 터미널에서 작동하지만 up 스크립트에서는 "command not found"로 실패합니다. 작동하는 것은 "sudo chpst"와 적절한 디스플레이 및 언어 설정입니다. 터미널이 유니 코드 문자를 올바르게 출력하지 않는 이유를 참조하십시오 . 이를 감안하면 up 스크립트에는 다음 네 줄이 필요합니다.
LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo chpst -u user -U user /home/user/unprivileged.sh &
편집 1
0xC0000022L의 의견에 따르면 "sudo -u user"는 "sudo chpst -u user -U user"와 같이 작동합니다.
LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo -u user /home/user/unprivileged.sh &
나는 남자 sudoers를 공부하고 sudo가 혼자 일할 때 업데이트 할 것입니다.