쉘스크립트로 어디까지 권한이 주어지는지?

bum8087의 이미지

php로 sendmail을 restart 해주고 newaliases 명령을 주고자 합니다.
쉘스크립트로 이것이 가능한지 알고 싶습니다.

pynoos의 이미지

php로 실행하려면, webserver가 root 권한으로 실행되거나 setuid 되어 있는 binary 를 php가 실행하는 것으로 가능할 것 같습니다.

script에 setuid 들어 있으면 대략 낭패가되기 쉽죠

bum8087의 이미지

setuid를 찾아봤습니다... 권한을 부여해주는것인가요?
perl에서 php각본을 불러서 사용하라고 되어있습니다그럼 setuid는 perl에서 사용하는것인가요?
조금더 상세하게 부탁드립니다. (- -)(_ _)

ggojang

susia의 이미지

음..
간단하게 설명하자면 setuid 가 붙어 있는 실행 프로그램은
해당 파일의 owner 의 권한으로 실행됩니다.
예를 들어

[susia@pthread susia]$ ls -l /usr/bin/passwd
16 -r-s--x--x 1 root root 15104 3 14 2002 /usr/bin/passwd*
[susia@pthread susia]$

위에서 보는 passwd 프로그램은 setuid 가 붙어 있으므로 일반 사용자가
passwd 라는 프로그램을 실행시에는 passwd 의 파일의 소유자인 root 의 권한을 가지게 됩니다.

그러므로 shellscript 안에 원하는 명령어를 적은 후에 해당 shellscript 의 권한을 setuid 로 변경( chmod 4755 xxx , 뭐 이런식으로 물론 소유는 root 가 되어야 root 의 권한으로 구동이 되겠지요.. ) 하면 됩니다.

물론 root setuid script 는 보안상 매우 ~~~~ 위험하기 때문에
신중하게 작성하셔야 될듯..

pynoos의 이미지

생각해 보니 복잡하군요..

너무 어렵게 간다 싶으면..

/etc/mail/aliases* 파일을 apache 실행 계정이 writable 하게 만들어 놓으시면 됩니다.