일반계정에서 돌아가는 프로그램이 루트권한 얻는방법은?

ultra76의 이미지

안녕하십니까?

리눅스 초보 프로그래머 입니다~

일반계정에서 돌아가는 프로그램이 있습니다.

프로그램이 실행중 어떤 입력이 들어오면

마운트 작업을 해줘야하는데요~

문제는 마운트/언마운트가 루트권한에서 실행된다는 겁니다.

일반계정->루트권한->마운트-> Working.... -> 언마운트 -> 일반계정복귀

이렇게 할수 있는 방법이 없을까요?

Setuid()함수를 쓸까 했더니 그것도 루트권한에서만 실행된다 하더군요..

고수님들 해결방법좀 알려주세요^^

수고하세요~

Munsen의 이미지

# chmod +s /bin/mount
이렇게 해두면 root권한으로 mount를 실행하게 됩니다. =_=
적당한 그룹을 만들고 그룹에 사용자를 추가한 뒤

chgrp [GROUP] /bin/mount
chmod g+s /bin/mount

이렇게 해두면 될거 같네요.

ultra76의 이미지

그 방법으로 일반계정에서 실행을 해보니

mount:only root can do that

이라는 메시지가 뜨는군요..

일시적으로 루트권한을 좀 얻어서 마운트를 할 수 있는 방법은 없을까요?

ymir의 이미지

sudo mount ..
;; blah blah
sudo umount ..

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

d3m3vilurr의 이미지

root소유 권한의 seteuid를 주는 프로그램을 만드시고, 파일 그룹에 사용자 그룹을 추가해보세요.

panda005의 이미지

setuid는 좀 거시기하고...
/dev 가서 mount하고자 하는 디바이스를 user 소유로 바꿔버리면 되지 않을까요?

당장은 테스트할만한 환경이 없어서 확인은 못 해봤습니다 ㅠㅠ