2017-09-14 8 views
0

나는 루트 권한으로 실행해서는 안되는 프로그램을 가지고 있는데, 이는 다른 것들 중에서도 사용자 이름을 기반으로하는 일을하기 때문입니다. 그러나 루트로 쓰기 만 가능한 파일을 작성해야 할 가능성이 있습니다.루트로 실행되지 않는 프로그램에서 파일로 파일을 쓰는 방법은 무엇입니까?

내가 할 수는 있지만,하지 말고, 파일을 임시 파일에 쓰고, 그 다음에 (system "sudo mv /tmp/myfile /destination/myfile"). sudo는 패스워드를 요구하고, 루트로 파일을 옮기고, 프로그램은 일반 사용자로 계속 실행됩니다. 사용자가 sudo을 사용할 수 없다면 프로그램을 사용해서는 안되기 때문에 별 문제가되지 않습니다.

임시 파일이 없어도 프로그램에서 파일을 쓸 수 있기를 원하지만이 방법이 있습니까?

답변

0

setuid 실행 파일을주의 깊게 읽으십시오 (sudo 또는 su 또는 login의 작동 방식입니다). credentials(7), capabilities(7), execve(2), setreuid(2)을 읽어보십시오. Advanced Linux Programming도 읽으십시오.

하지만주의하십시오. 보안 구멍 또는 vulnerabilities을 소개 할 수 있습니다.

BTW, sudo (또는 super)은 암호를 묻지 않도록 구성 할 수 있습니다 (하지만 그렇게하는 것은 현명하지 않을 수도 있음).