본문 바로가기

기타 개발팁

PHP에서 python 스크립트 실행하기 (permission 문제해결)

물론 flask 등으로 python서버를 구동하고 흔한 방법으로 .py 파일을 구동할 수 있겠지만,

 

PHP에서도 shell_exec 나 exec 또는 system 등의 명령어로 서버 명령어를 실행할 경우가 있고,

 

그 중에서 .py 파일을 구동하는 것도 가능하기 때문에 특정 파이썬 라이브러리만 쉽게 쓰고 싶은데

 

전체 웹개발은 php로 이루어져있는 경우 등

 

어쨌든 그런 니즈가 발생할 경우 그냥 하면 되는데

 

가끔 .py 의 내용에 따라서는 permissions denied 에러가 발생하는 경우가 있다.

 

그럴 때는 

 

$ sudo vi /etc/sudoers  등의 명령어로

www-data 의 권한을 설정해 주면 되는데

www-data ALL=NOPASSWD: ALL

같은 식으로 모든 명령어에 대해서 웹실행이 가능하도록 해도 되겠지만,

뭔가 보안적으로 꺼림칙하고 좋지 않을 것 같다.

 

그럴때 www-data All=NOPASSWD: /usr/bin/파이썬 

같은 식으로 파이썬만 실행이 가능하도록 할 수도 있는데

여전히 python 이 웹에서 무방비로 실행하는게 좀 걱정될 수 있다.

그러면 간단히 

cp python secretpython 같은 식으로 파이썬 실행파일의 이름을 다르게 복사하고

/etc/sudoers 파일에

www-data ALL=NOPASSWD: /usr/bin/secretpython 

같은식으로 한줄 추가함으로써 보안을 아주 조금 신경써 줄 수 있다.

 

stackoverflow 같은데도 유사한 질문들이 많은데 이렇게 대답을 해준곳은 의외로 없었다.