저는 Ubuntu 11.04를 실행하고 있습니다.Ubuntu에서 setuid를 사용하여 C에서 Java exec
Java 프로그램을 실행하기 위해 "C"execlp 프로그램을 사용하려고하는데 Java 프로그램이 루트로 실행될 수 있도록 "C"프로그램에서 setuid를 원합니다. 여기의 예입니다 :
http://www.coderanch.com/t/110254/Linux-UNIX/setuid
내가 대신 바람둥이 사용자가되는 것을 제외하고 문자로 예를 따라, 나는 루트를 사용했다.
루트는 Java 프로그램을 실행하는 "C"프로그램을 실행할 수 있습니다. root 권한을 부여하기 전에 User (me)는 Java 프로그램을 실행하는 "C"프로그램을 실행할 수 있습니다. 하지만 setuid를 사용하기 위해 일단 설정을하면 사용자는 프로그램을 실행하려고 시도합니다. 자바 : 나는 오류의 LD_LIBRARY_PATH 유형 것으로 보인다 것을 얻을 오류가 공유 라이브러리를로드하는 동안 : libjli.so : 공유 객체 파일을 열 수 없습니다 :
가 libjli.so 파일은 아래에있는 해당 파일이나 디렉토리를 자바 JRE. User와 Root 모두 개별적으로 실행될 때이 파일을 볼 수 있습니다. 그러나 root에게 setuid가 수행 된 후 사용자가 프로그램을 실행할 때이를 볼 수 없습니다.
setuid 프로그램을 실행할 때 root의 LD_LIBRARY_PATH가 설정되는 방식이 있습니까? 이것은 대화식 대 비 대화식 문제입니까?
아이디어가 있으십니까? 미리 감사드립니다.
바로 지금 Java 프로그램을 래핑하는 C 프로그램이 있습니다. Java 프로그램을 래핑하는 C 프로그램을 래핑하는 스크립트를 사용 하시겠습니까? 아니면 뭔가 다른 것을 의미 했습니까? 나는 그것이 무엇이든지 시도하려고합니다. 설명해주십시오. 감사. –
넵 - 스크립트 나 다른 C 프로그램으로,'LD_LIBRARY_PATH'를 적절하게 설정하고 C 프로그램을 exec()합니다. – duskwuff
나는 이것이 효과가 있다고 생각하지 않는다. 링커는 프로세스의 EUID와 RUID에서 setuid 비트를 감지하며,이 값은'exec'에서 보존됩니다. –