그런데 쉘 안에 명령어가 root 권한으로만 가능합니다. 그래서 php에서 쉘을 실행하면 권한 에러가 나고 말죠..
이것을 실행시키려면 어떻게 해줘야 할까요?
질문에 대해서 가능한쪽으로 생각하면
setuid가 있겠군요..
쉘권한을 chmod 4755 하시면
실행은 되지 않을까 쉽네요..
4755인 권한의 파일은 시작 -> 종료
기간동안 해당 파일 Owner의 권한으로 작동합니다..
그러니 쉘파일의 owner를 root로 해주시고 4755로 해주시면..
원하시는것이 가능하겠습니다..
단,
보안상 suid의 권한을 가진녀석들은.. 공격대상자이니..
조심 조심 조심.. 하셔서.. 보안에 신경쓰셔서 작업하시길바랍니다..
' 형식이 내용을 규정한다. '
역시나 퍼미션 에러나는데요? 모가 문제죠??
어떤작업을하시다 퍼미션 에러가 나는건지
조금 감이 오질 않네요 좀더 자세히 상황을
말씀해주시면.. 좋은답변을 얻으실듯..
앗 퇴근시간이라서 ^^
이걸 안하셨나해서 혹시나해서 답글남기고 갑니다..
-r-sr-xr-x 2 root wheel 32824 4 3 2003 /usr/bin/passwd
이런식으로 s 비트와 실행비트가 켜져있고..
owner가 root인지 확인해보시길 바랍니다.. 그래도 실행중
권한에러가난다면. 조금 다른문제가아닐까 생각해봅니다..
위구문 생략
/etc/rc.d/init.d/named restart /usr/local/apache/bin/apachectl restart /etc/rc.d/init.d/httpd restart
위 서버 리스타트 시키는데가 권한에러에요..ㅠ,ㅠ 제가 물어본건 이 명령어가 권한에러 난다는거였는데..흑흑
안녕하세요.. 제가 오늘 테스트를 해보게됐네용..
죄송하단 말씀부터 드릴께요 제가 테스트도 안해보구..
착각한거같네요 지금 테스트해보니 안되는게 맞습니다..
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
로하시고요 그실행파일을 사용하시면 될것같습니다..
이건 테스트 해본겁니다.. 또 착각하면 클날꺼같아서 죄송..
[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") 를 하게 한 테스트였습니당.. 그럼..
전 c프로그램도 없는데요?
c프로그램이라면 gcc가 없으시단 말씀이신가요?
사용하시는 계정에서 gcc라고 한번 쳐보시겠어요?
gcc가 있으시면 위에 말한대로 하시면되고요..
안깔리셨다면 다른 방안을 한번 찾아봐야할듯 ..
gcc잇나 한번 보셔요..
gcc 가 없네요?
으음 구굴선생님과 얘기를 해본결과..
쉘에서는 setuid를 할수없다는 결론이..
바이너리를 만드는게 정답 인듯 하네요..
조금 불편하시더라도.. 다른곳에서 컴파일하셔서
가져오시는게 나을듯합니다..
꼭 바이너리를 안쓰시고.. 하고싶으시다면 권한을 루트와
동급으로 하시면되겠지만 비추천입니다..
그럼..
저의 우매함이 부끄럽습니다..
맨날 무언갈 배워도 근래 써먹느거 빼곤 자꾸 까먹거나 잊어버리는
저의 우둔한.. 머리가 참으로 밉네요 ㅜ.ㅜ
좀 벗어난 얘기지만, sudo를 쓰는 편이 훨씬 낫지 않을까요? root 패스워드를 여러명이 알 필요도 없고, 부적절한 시도가 있을시에는 로그도 남으니 말입니다. 그냥 디바이스 제어할 수 있는 프로그램을 만들어 놓고, sudo 로 실행시킵니다. 권한이 없을 경우에는 Permission denied 등등이 나오겠죠. ifconfig 를 사용하여 interface의 어드레스를 바꾼다거나 할 때와 같은 경우라고 생각됩니다.
이것은 다른 질문에 대한 sangwoo님의 답글을 인용하였습니다..
sudo로 하면.. 보안상문제도 해결되고 퍼미션 문제도 해결 가능 할것같습니다..
참조:http://www.aplawrence.com/Basics/sudo.html
텍스트 포맷에 대한 자세한 정보
<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]
질문에 대해서 가능한쪽으로 생각하면setuid가 있겠군요..
질문에 대해서 가능한쪽으로 생각하면
setuid가 있겠군요..
쉘권한을 chmod 4755 하시면
실행은 되지 않을까 쉽네요..
4755인 권한의 파일은 시작 -> 종료
기간동안 해당 파일 Owner의 권한으로 작동합니다..
그러니 쉘파일의 owner를 root로 해주시고 4755로 해주시면..
원하시는것이 가능하겠습니다..
단,
보안상 suid의 권한을 가진녀석들은.. 공격대상자이니..
조심 조심 조심.. 하셔서.. 보안에 신경쓰셔서 작업하시길바랍니다..
' 형식이 내용을 규정한다. '
역시나 퍼미션 에러나는데요? 모가 문제죠??
역시나 퍼미션 에러나는데요? 모가 문제죠??
어떤작업을하시다 퍼미션 에러가 나는건지 조금 감이 오질 않네요 좀
어떤작업을하시다 퍼미션 에러가 나는건지
조금 감이 오질 않네요 좀더 자세히 상황을
말씀해주시면.. 좋은답변을 얻으실듯..
' 형식이 내용을 규정한다. '
앗 퇴근시간이라서 ^^이걸 안하셨나해서 혹시나해서 답글남기고 갑니
앗 퇴근시간이라서 ^^
이걸 안하셨나해서 혹시나해서 답글남기고 갑니다..
-r-sr-xr-x 2 root wheel 32824 4 3 2003 /usr/bin/passwd
이런식으로 s 비트와 실행비트가 켜져있고..
owner가 root인지 확인해보시길 바랍니다.. 그래도 실행중
권한에러가난다면. 조금 다른문제가아닐까 생각해봅니다..
' 형식이 내용을 규정한다. '
제 쉘파일내용은 이렇습니다
위구문 생략
/etc/rc.d/init.d/named restart
/usr/local/apache/bin/apachectl restart
/etc/rc.d/init.d/httpd restart
위 서버 리스타트 시키는데가 권한에러에요..ㅠ,ㅠ
제가 물어본건 이 명령어가 권한에러 난다는거였는데..흑흑
안녕하세요.. 제가 오늘 테스트를 해보게됐네용..죄송하단 말씀부터
안녕하세요.. 제가 오늘 테스트를 해보게됐네용..
죄송하단 말씀부터 드릴께요 제가 테스트도 안해보구..
착각한거같네요 지금 테스트해보니 안되는게 맞습니다..
suid 설정되잇는데오 스크립트인경우에는 스크립트
가 내용을 로드해서 실행하는거같네요 스크립트 파일의
권한은 조금 무의미한거같네요.. trace로 확인안해봤지만..
일단은 안먹는게 맞네요...
꼭 sh 스크립트로 해야되는게 아니라면 c언어로 하나 올리겠습니다..
로하시고요 그실행파일을 사용하시면 될것같습니다..
이건 테스트 해본겁니다.. 또 착각하면 클날꺼같아서 죄송..
system("id") 를 하게 한 테스트였습니당..
그럼..
' 형식이 내용을 규정한다. '
전 c프로그램도 없는데요?
전 c프로그램도 없는데요?
c프로그램이라면 gcc가 없으시단 말씀이신가요?사용하시는 계정에서
c프로그램이라면 gcc가 없으시단 말씀이신가요?
사용하시는 계정에서 gcc라고 한번 쳐보시겠어요?
gcc가 있으시면 위에 말한대로 하시면되고요..
안깔리셨다면 다른 방안을 한번 찾아봐야할듯 ..
gcc잇나 한번 보셔요..
' 형식이 내용을 규정한다. '
gcc 가 없네요?
gcc 가 없네요?
으음 구굴선생님과 얘기를 해본결과..쉘에서는 setuid를 할수없
으음 구굴선생님과 얘기를 해본결과..
쉘에서는 setuid를 할수없다는 결론이..
바이너리를 만드는게 정답 인듯 하네요..
조금 불편하시더라도.. 다른곳에서 컴파일하셔서
가져오시는게 나을듯합니다..
꼭 바이너리를 안쓰시고.. 하고싶으시다면 권한을 루트와
동급으로 하시면되겠지만 비추천입니다..
그럼..
' 형식이 내용을 규정한다. '
저의 우매함이 부끄럽습니다..맨날 무언갈 배워도 근래 써먹느거 빼
저의 우매함이 부끄럽습니다..
맨날 무언갈 배워도 근래 써먹느거 빼곤 자꾸 까먹거나 잊어버리는
저의 우둔한.. 머리가 참으로 밉네요 ㅜ.ㅜ
이것은 다른 질문에 대한 sangwoo님의 답글을 인용하였습니다..
sudo로 하면.. 보안상문제도 해결되고 퍼미션 문제도 해결 가능 할것같습니다..
참조:
http://www.aplawrence.com/Basics/sudo.html
' 형식이 내용을 규정한다. '
댓글 달기