php에서 쉘 스크립트실행을 하려고 합니다. 그런데 문제가..

kurtof27의 이미지

그런데 쉘 안에 명령어가 root 권한으로만 가능합니다.
그래서 php에서 쉘을 실행하면 권한 에러가 나고 말죠..

이것을 실행시키려면 어떻게 해줘야 할까요?

liongo의 이미지

질문에 대해서 가능한쪽으로 생각하면

setuid가 있겠군요..

쉘권한을 chmod 4755 하시면

실행은 되지 않을까 쉽네요..

4755인 권한의 파일은 시작 -> 종료

기간동안 해당 파일 Owner의 권한으로 작동합니다..

그러니 쉘파일의 owner를 root로 해주시고 4755로 해주시면..

원하시는것이 가능하겠습니다..

단,

보안상 suid의 권한을 가진녀석들은.. 공격대상자이니..

조심 조심 조심.. 하셔서.. 보안에 신경쓰셔서 작업하시길바랍니다..

' 형식이 내용을 규정한다. '

kurtof27의 이미지

역시나 퍼미션 에러나는데요? 모가 문제죠??

liongo의 이미지

어떤작업을하시다 퍼미션 에러가 나는건지

조금 감이 오질 않네요 좀더 자세히 상황을

말씀해주시면.. 좋은답변을 얻으실듯..

' 형식이 내용을 규정한다. '

liongo의 이미지

앗 퇴근시간이라서 ^^

이걸 안하셨나해서 혹시나해서 답글남기고 갑니다..

-r-sr-xr-x 2 root wheel 32824 4 3 2003 /usr/bin/passwd

이런식으로 s 비트와 실행비트가 켜져있고..

owner가 root인지 확인해보시길 바랍니다.. 그래도 실행중

권한에러가난다면. 조금 다른문제가아닐까 생각해봅니다..

' 형식이 내용을 규정한다. '

kurtof27의 이미지

위구문 생략

/etc/rc.d/init.d/named restart
/usr/local/apache/bin/apachectl restart
/etc/rc.d/init.d/httpd restart

위 서버 리스타트 시키는데가 권한에러에요..ㅠ,ㅠ
제가 물어본건 이 명령어가 권한에러 난다는거였는데..흑흑

liongo의 이미지

안녕하세요.. 제가 오늘 테스트를 해보게됐네용..

죄송하단 말씀부터 드릴께요 제가 테스트도 안해보구..

착각한거같네요 지금 테스트해보니 안되는게 맞습니다..

suid 설정되잇는데오 스크립트인경우에는 스크립트

가 내용을 로드해서 실행하는거같네요 스크립트 파일의

권한은 조금 무의미한거같네요.. trace로 확인안해봤지만..

일단은 안먹는게 맞네요...

꼭 sh 스크립트로 해야되는게 아니라면 c언어로 하나 올리겠습니다..

#include <stdio.h>
#include <stdlib.h>


int main()
{
        setuid(0);
        system("/etc/rc.d/init.d/named restart");
        system("/usr/local/apache/bin/apachectl restart");
        system("/etc/rc.d/init.d/httpd restart");

        return 0;
}                                       

compile:
        >> gcc filename.c -o filename

suid set
        >> chmod 4755 filename

로하시고요 그실행파일을 사용하시면 될것같습니다..

이건 테스트 해본겁니다.. 또 착각하면 클날꺼같아서 죄송..

Quote:

[user@systems user]$ id
uid=514(user) gid=514(user) groups=514(user)
[user@systems user]$ ls -al suid
-rwsr-xr-x 1 root root 11691 May 14 10:55 suid
[user@systems user]$ ./suid
uid=0(root) gid=514(user) groups=514(user)

system("id") 를 하게 한 테스트였습니당..
그럼..

' 형식이 내용을 규정한다. '

kurtof27의 이미지

전 c프로그램도 없는데요?

liongo의 이미지

c프로그램이라면 gcc가 없으시단 말씀이신가요?

사용하시는 계정에서 gcc라고 한번 쳐보시겠어요?

gcc가 있으시면 위에 말한대로 하시면되고요..

안깔리셨다면 다른 방안을 한번 찾아봐야할듯 ..

gcc잇나 한번 보셔요..

' 형식이 내용을 규정한다. '

kurtof27의 이미지

gcc 가 없네요?

liongo의 이미지

으음 구굴선생님과 얘기를 해본결과..

쉘에서는 setuid를 할수없다는 결론이..

바이너리를 만드는게 정답 인듯 하네요..

조금 불편하시더라도.. 다른곳에서 컴파일하셔서

가져오시는게 나을듯합니다..

꼭 바이너리를 안쓰시고.. 하고싶으시다면 권한을 루트와

동급으로 하시면되겠지만 비추천입니다..

그럼..

' 형식이 내용을 규정한다. '

liongo의 이미지

저의 우매함이 부끄럽습니다..

맨날 무언갈 배워도 근래 써먹느거 빼곤 자꾸 까먹거나 잊어버리는

저의 우둔한.. 머리가 참으로 밉네요 ㅜ.ㅜ

Quote:
좀 벗어난 얘기지만, sudo를 쓰는 편이 훨씬 낫지 않을까요?
root 패스워드를 여러명이 알 필요도 없고, 부적절한 시도가 있을시에는
로그도 남으니 말입니다.
그냥 디바이스 제어할 수 있는 프로그램을 만들어 놓고, sudo 로 실행시킵니다.
권한이 없을 경우에는 Permission denied 등등이 나오겠죠.
ifconfig 를 사용하여 interface의 어드레스를 바꾼다거나 할 때와 같은 경우라고
생각됩니다.

이것은 다른 질문에 대한 sangwoo님의 답글을 인용하였습니다..

sudo로 하면.. 보안상문제도 해결되고 퍼미션 문제도 해결 가능 할것같습니다..

참조:
http://www.aplawrence.com/Basics/sudo.html

' 형식이 내용을 규정한다. '

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.