2012-02-16 2 views
0

내 Linux 상자에서 루트 보호 된 응용 프로그램을 실행하기 위해 명령 줄 인수를 사용하는 Java 실행 파일이 있습니다. 우리는 하나의 자바 실행 파일을 실행하기 위해 sudo 액세스 권한이 부여 된 별도의 사용자 계정을 가지고 있습니다. 사용자는이 파일을 사용하여 루트 보호 된 응용 프로그램을 시작할 수 있습니다. sudo에 대한 나의 이해는 사용자가 단일 호출과 그 이후의 모든 호출 (즉, Java exec이 호출하는 호출) 동안 루트 '역할'을 가정한다는 것입니다. 대부분의 응용 프로그램에서 작동하지만 다른 응용 프로그램에서는 부분적으로 만 작동합니다. 특히 시작되는 외부 응용 프로그램이 제대로 작동하지 않고 파일을 열 수 없다는 오류를 출력하는 것처럼 보입니다 (모든 사용자가 액세스 할 수 있음). 실행 파일을 루트로 실행하면 실행 파일과 후속 앱이 모두 정상적으로 실행되므로 sudo를 사용하여 수행 할 작업이 있습니다.Java Wrapper 스크립트 (sudo가 작동하지 않음)

필자는 필요하다면 더 자세한 정보를 제공 할 수 있지만 sudo가 환경이나 런타임 문제를 변경하는지 알고있는 사람이 있는지 알고 싶습니다.

업데이트 :

구성 파일은 읽을 수있는 디렉터리에 있습니다. Java exec가 실행하려고 시도하는 바이너리를 모든 사람이 액세스 할 수있는 읽기 권한으로 만들 었는지 테스트합니다. 내 테스터 계정에서, 나는 자바 exec (w/o sudo)를 시작하고 앱이 잘 돌아 간다. 그때 나는 단지 바이너리 루트 보호 확인하고 sudo를 자바 간부를 실행하고 응용 프로그램 실행이 실패하고 같은 나에게 오류를 제공합니다

:

그 파일을 "기록 edtrecorder.cfg 열 수 없습니다"와 디렉토리는 모두 모두가 읽을 수 있습니다.

+0

Java 프로그램에서 액세스 할 수있는 디렉토리에서 읽으려는 파일이 있습니까? – Carlo

+0

자세한 내용을 제공해 주시겠습니까? 어떤 명령이 작동하고 어떤 명령은 작동하지 않습니까? 특별히 어떤 오류가 있습니까? sudo가 부르는 것은 무엇입니까? – Gray

답변

1

일부 배포판 (예 : 우분투)에서 sudo는 명령을 실행하는 사용자 쉘에 제한된 환경 (다른 검색 경로 사용)을 사용하여 프로그램을 실행합니다. 이는 보안 기능입니다. 예를 들어, 프로그램이 PATH를 변경하여 사용자가 명령을 입력 할 때 실제 프로그램 대신 실행되도록 할 수 있습니다. sudo에서는 심각한 프로그램입니다. 참조 sudo changes PATH - why?

+0

다른 곳에서 읽었지만 링크 된 게시물에서 sudo 테스트를 실행했습니다. sudo가 PATH를 변경하지 않는다. – sirmarlo

관련 문제