[완료] PHP에서 ip를 변경하려고 합니다.
글쓴이: ONLYLOVE / 작성시간: 금, 2010/02/05 - 2:09오후
우분투 9.04를 사용하고 있습니다.
PHP에서 system()명령으로, 아래와 같이 쉘스크립트를 실행합니다.
system("./sh/ip.sh");
ip.sh 파일은 아래와 같이 네트워크 데몬을 재시작하는 명령을 담고 있습니다.
#! /bin/sh /etc/init.d/networking restart ls -al
헌데 터미널로 "ip.sh"를 실행시키면.. 재시작이 잘되는데..
PHP에서 system("./sh/ip.sh");를 실행하면..
ls -al에 대한 명령은 잘 수행하는데..
/etc/init.d/networking restart에 대한 명령을 실행하지 않습니다.
해결방법이 있는지 질문드립니다.
---------------------- 완료 ---------------------------------
2010. 02. 26 처리완료.
원하시는분이 계실까바 자료를 남깁니다.
일단 원인은 아파치에 소유자와 실행파일(sh)의 소유자가 달라서 생겼던 문제인것 같습니다.
(우분투기준)/etc/apache2/httpd.conf 파일에 아파치에 프로그램을 실행할 계정과 동일한
계정을 추가해줍니다.
예) User admin Group admin
그리고 실행파일(sh)에도 동일하게 변경해줍니다.
예) chown admin.admin *
그리고 나면 php에서도 시스템명령을 실행할 수 있습니다.
root 권한이 필요할 경우 sudo에서 패스워드 묻는 부분을 제거해주시면 됩니다.
Forums:
PHP를 사용하는
PHP를 사용하는 웹서버가 루트 권한으로 돌고 있나요?
그렇지 않다면, 해당 명령을 실행할 권한이 없어서 실행이 안되는 것이겠죠.
---8< 서명 -----------------
애니메이션 감상 기록 http://animeta.net/
답변 감사드립니다.
그런데 웹서버, 쉘스크립트 및 모든 권한이 루트로 돌고있습니다.
헌대 데몬 재시작이나 리눅스 재부팅(reboot) 같은 명령이 php에서만 안먹힙니다.
----------------------------------------------------
I can do everthing through him who give me strength.
웹서버가 아파치 같은데....
아파치는 루트권한으로 돌고 있지만..
정작 아파치에서 쉘크스립트를 실행하는 유저는 루트권한이 없죠..^^
답변 감사드려요..
그래서..쉘 스크립트를 실행할때 루트권한(sudo)을 주고 암호를 묻는 부분을 뺐습니다.
혹시 이것말고도 제가 놓치고 있는 부분이 있는지요?
PHP에서 아무리 system("sudo ./sh/ip.sh"); 를 하고..
쉘스크립트 안에서도 sudo를 주어도 안되고 있습니다..
----------------------------------------------------
I can do everthing through him who give me strength.
암호를 묻는 부분을
암호를 묻는 부분을 뺐다면, PHP 및 웹 서버가 도는 사용자를 sudoers 파일에 추가시켜 줬다는 건가요? 아니면 다른 방법을 사용했나요?
---- 절취선 ----
http://blog.peremen.name
네 맞습니다.
PHP 및 웹 서버가 도는 사용자를..
sudoers 파일에 추가시켜주었습니다.
----------------------------------------------------
I can do everthing through him who give me strength.
권한땜에
권한땜에 그렇습니다.
가장 간단한 방법은, 스크립트를 root소유에 4777 권한을 주고, 내부에서 sudo 명령어로 수행하시는게 편합니다만, 보안이 좀..
답변감사드렵니다.
너무 안되는거 같아서 4777로 권한을 주고도 해봤는데 안되더라구요..
검색결과 PHP에서 시스템명령을 보안상 수행할수 없다는 내용이 있기도한데..
안되면 다른방법을 간구해야겠어요..
----------------------------------------------------
I can do everthing through him who give me strength.
제가 한다면 특정
제가 한다면 특정 파일명을 모니터링하는 프로그램을 만들어서
root 권한으로 실행해놓고
php에서는 해당 파일에 바꾸고 싶은 ip 를 넣어두지 않을까 싶습니다.
그리고 스크립트에는 suid 줘도 반영안되지 않나요?
좋은 아이디어입니다.
미처 그 생각을 못했는데..
특정파일(/etc/networks/interfaces) 파일을 감시하면 되겠네요..^^
조금 로드가 많이 걸리겠지만..
일단 한번 해볼만 하겠습니다.
감사합니다.
----------------------------------------------------
I can do everthing through him who give me strength.
댓글 달기