루트가 소유한 권한의 파일을 수정하는 방법..

leolo의 이미지

일반 유저가 루트가 소유한 파일을 수정할 수 있나요.

간단하게 방법 좀 알려주세요.

제가 수정하고자 하는 파일은 ifcfg-eth0 입니다.

이놈은 오직 루트만이 rw 할 수 있습니다.

그리고, 루트권한을 가지고 system()명령을 수행하는 방법도 좀 알려주세요..

한가지 더 질문드립니다.

우리가 DNS 정보를 넣으면, 리눅스의 어느 파일에 들어가는 것인가요..
/etc/hosts 파일에 들어가나요..

bear의 이미지

첫번째 : 불가능 합니다.
가능 할려면 일반유저에게 쓰기 권한을 주면 되겠죠..

두번째 : /etc/reslov.conf 이파일 수정하시면 됩니다.

advanced의 이미지

프로그램을 작성하셔서

setuid 권한을 주시면 가능합니다

ulra의 이미지

일반 유저로 접속한 다음

setuid( 0 ); 이렇게 해서 루트 권한을 얻으려고 했는데 권한을 얻을수

없습니다.

이유가 뭔지 알고 싶습니다.

OTL 즐!!!! (좌절 금지!!!)

cdpark의 이미지

ulra wrote:
일반 유저로 접속한 다음

setuid( 0 ); 이렇게 해서 루트 권한을 얻으려고 했는데 권한을 얻을수

없습니다.

이유가 뭔지 알고 싶습니다.

아무나 setuid(0);를 수행할 수 있다면 보안은 물거품이게요? :(

ulra의 이미지

루트 패스를 알고있다면 프로그램 안에서 루트 권한을 갖게 할수 없나요?

OTL 즐!!!! (좌절 금지!!!)

cdpark의 이미지

ulra wrote:
루트 패스를 알고있다면 프로그램 안에서 루트 권한을 갖게 할수 없나요?

간단히 프로그램에 setuid bit를 걸어주면 됩니다. 단, 프로그램에 버그가 있을 경우에 보안 문제가 생길 수 있습니다.

ulra의 이미지

setuid bit 라는 것은 어떻게 설정하나요?

setuid 함수를 이용하라는 건가요? 만약 그렇다면 예제를 부탁드립니다.

제가 초보라서 잘 모르는게 많습니다.

OTL 즐!!!! (좌절 금지!!!)

rapzzard의 이미지

voronoi(rapzzard):~/tmp% cat a.c
#include <stdio.h>
#include <unistd.h>

int
main(void)
{
    setuid(0); // 뒤에 uid를 다른걸 적으시면 다른 녀석으로 바뀝니다..

    printf("UserName : %s\n", getlogin());
    printf("uid : %d\n", getuid());

    return 0;
}
voronoi(rapzzard):~/tmp% ls -l a.out
-rwxr--r--    1 rapzzard member        4910  8 10 16:38 a.out
voronoi(rapzzard):~/tmp% id
uid=1101(rapzzard) gid=1100(member) groups=1100(member), 0(wheel)
voronoi(rapzzard):~/tmp% a.out
UserName : rapzzard
uid : 1101
voronoi(rapzzard):~/tmp% su
Password:
voronoi# chown -R root:wheel a.out
voronoi# chmod 4755 a.out
voronoi# exit
voronoi(rapzzard):~/tmp% ls -l a.out
-rwsr-xr-x    1 root     wheel        4910  8 10 16:38 a.out*
voronoi(rapzzard):~/tmp% id
uid=1101(rapzzard) gid=1100(member) groups=1100(member), 0(wheel)
voronoi(rapzzard):~/tmp% a.out
UserName : rapzzard
uid : 0

자세한건 man페이지를 참조하세요..-_-)a
ulra의 이미지

감사합니다.

OTL 즐!!!! (좌절 금지!!!)