[완료] PHP에서 ip를 변경하려고 합니다.

ONLYLOVE의 이미지

우분투 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에서 패스워드 묻는 부분을 제거해주시면 됩니다.

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

PHP를 사용하는 웹서버가 루트 권한으로 돌고 있나요?
그렇지 않다면, 해당 명령을 실행할 권한이 없어서 실행이 안되는 것이겠죠.

---8< 서명 -----------------
애니메이션 감상 기록 http://animeta.net/

ONLYLOVE의 이미지

그런데 웹서버, 쉘스크립트 및 모든 권한이 루트로 돌고있습니다.

헌대 데몬 재시작이나 리눅스 재부팅(reboot) 같은 명령이 php에서만 안먹힙니다.

----------------------------------------------------
I can do everthing through him who give me strength.

choboadmin의 이미지

아파치는 루트권한으로 돌고 있지만..

정작 아파치에서 쉘크스립트를 실행하는 유저는 루트권한이 없죠..^^

ONLYLOVE의 이미지

그래서..쉘 스크립트를 실행할때 루트권한(sudo)을 주고 암호를 묻는 부분을 뺐습니다.

혹시 이것말고도 제가 놓치고 있는 부분이 있는지요?

PHP에서 아무리 system("sudo ./sh/ip.sh"); 를 하고..

쉘스크립트 안에서도 sudo를 주어도 안되고 있습니다..

----------------------------------------------------
I can do everthing through him who give me strength.

danskesb의 이미지

암호를 묻는 부분을 뺐다면, PHP 및 웹 서버가 도는 사용자를 sudoers 파일에 추가시켜 줬다는 건가요? 아니면 다른 방법을 사용했나요?

---- 절취선 ----
http://blog.peremen.name

ONLYLOVE의 이미지

PHP 및 웹 서버가 도는 사용자를..

sudoers 파일에 추가시켜주었습니다.

----------------------------------------------------
I can do everthing through him who give me strength.

구라파덕의 이미지

권한땜에 그렇습니다.

가장 간단한 방법은, 스크립트를 root소유에 4777 권한을 주고, 내부에서 sudo 명령어로 수행하시는게 편합니다만, 보안이 좀..

ONLYLOVE의 이미지

너무 안되는거 같아서 4777로 권한을 주고도 해봤는데 안되더라구요..

검색결과 PHP에서 시스템명령을 보안상 수행할수 없다는 내용이 있기도한데..

안되면 다른방법을 간구해야겠어요..

----------------------------------------------------
I can do everthing through him who give me strength.

ironiris의 이미지

제가 한다면 특정 파일명을 모니터링하는 프로그램을 만들어서
root 권한으로 실행해놓고
php에서는 해당 파일에 바꾸고 싶은 ip 를 넣어두지 않을까 싶습니다.
그리고 스크립트에는 suid 줘도 반영안되지 않나요?

ONLYLOVE의 이미지

미처 그 생각을 못했는데..

특정파일(/etc/networks/interfaces) 파일을 감시하면 되겠네요..^^

조금 로드가 많이 걸리겠지만..

일단 한번 해볼만 하겠습니다.

감사합니다.

----------------------------------------------------
I can do everthing through him who give me strength.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.