2014-12-26 5 views
1

이 코드에서 .sh 파일을 루트로 실행하는 방법은 무엇입니까? 메인 섹션의 은 내 .sh 파일을 원하는 디렉토리에서 실행합니다. 하지만 내가 달릴 때 허락을받지 못했습니다. 간단하게 .sh 코드를 루트로 실행하고 싶습니다. 어떤 방법이 있습니까? 자바 코드에서 쉘 스크립트를 루트로 실행

import java.io.IOException; 
 
    import org.apache.commons.exec.CommandLine; 
 
    import org.apache.commons.exec.DefaultExecutor; 
 
    import org.apache.commons.exec.ExecuteException; 
 

 
    public class TestScript { 
 
     int iExitValue; 
 
     String sCommandString; 
 

 
     public void runScript(String command){ 
 
      sCommandString = command; 
 
      CommandLine oCmdLine = CommandLine.parse(sCommandString); 
 
      DefaultExecutor oDefaultExecutor = new DefaultExecutor(); 
 
      oDefaultExecutor.setExitValue(0); 
 
      try { 
 
       iExitValue = oDefaultExecutor.execute(oCmdLine); 
 
      } catch (ExecuteException e) { 
 
       // TODO Auto-generated catch block 
 
       System.err.println("Execution failed."); 
 
       e.printStackTrace(); 
 
      } catch (IOException e) { 
 
       // TODO Auto-generated catch block 
 
       System.err.println("permission denied."); 
 
       e.printStackTrace(); 
 
      } 
 
     } 
 

 
     public static void main(String args[]){ 
 
      TestScript testScript = new TestScript(); 
 
      testScript.runScript("sh /home/deepak/Desktop/ftpusers.sh"); 
 
     } 
 
    }

답변

1

Java 응용 프로그램을 루트로 실행하거나 킹을 사용하여 ftpusers.sh을 실행해야합니다. 응용 프로그램이 X 서버와 함께 시작되는 경우

  1. , 당신은 gksudo, kdesudo 또는 유사한을 사용하여 ftpusers.sh를 호출 할 수 있습니다 - 그것은 사용자에게 메시지를 표시합니다 그는 루트로 응용 프로그램을 실행 확인하는 경우 : 여기 두 가지 옵션을 볼 수 있습니다 암호를 물어보십시오.
  2. 응용 프로그램이 콘솔 한 경우,이 방법 모두에서 작동하지 않습니다 유의하시기 바랍니다

응용 프로그램의 IO이 명령에서 IO를 sudo 명령을 사용하여 수동으로 리디렉션해야합니다 예를 들어 sudo를 사용할 수 없을 수도 있습니다. 따라서 "permission denied." 메시지를 "Application foor must be started as root"과 같이 변경하고 사용자에게 적절한 권한으로 Java 응용 프로그램을 실행하도록 요청하십시오.

+0

netbeans를 사용하고 있습니다. 지금 구현하는 방법은 무엇입니까? 제발 도와주세요 –

+0

@ DeepakKr.Karn는 다음과 같이 시도합니다 : _testScript.runScript ("gksudo sh /home/deepak/Desktop/ftpusers.sh");_ – bedrin

+0

나는 .. .. –

0

어느 루트로 자바 프로그램을 실행하거나 권한을 상승하는 setuid 스크립트를 실행합니다. 후자의 경우 승인되지 않은 사용자가 스크립트에 액세스 할 수 없도록하십시오.

+0

위의 코드를 실행하기 위해 netbeans를 사용하고 있습니다. 그리고 당신이 말한 것을 얻지 못했습니다. 제발 설명해주세요. –

관련 문제