2014-12-26 2 views
1

Как запустить .sh-файл в качестве корня в этом коде? в главном разделе я запускаю свой .sh-файл из каталога желаний. Но когда я запускаю, я получил разрешение. Я просто хочу, чтобы мой код .sh выполнялся как root. Там в любом случае? выполнить сценарий оболочки как root в java-коде

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, используя команду king of sudo. Я вижу два возможных варианта здесь:

  1. Если приложение запускается с X Server, вы можете вызвать ftpusers.sh с помощью gksudo, kdesudo или подобное - это подскажет пользователю, если он в порядке, чтобы запустить приложение в качестве корня и, возможно, попросите пароль.
  2. Если ваше приложение консольное один, вы должны будете использовать команду sudo и вручную перенаправить ввод-вывод этой команды в IO вашего приложения

Пожалуйста, обратите внимание, что этот подход не будет работать на все (например, 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

Либо запустить Java программу с правами администратора, или запустить setuid сценарий, чтобы повысить свои права. Если последнее, убедитесь, что у неавторизованных пользователей нет доступа к скрипту.

+0

Я использую netbeans для запуска над кодом. И я не понял, что вы сказали. Пожалуйста, объясните .. –

Смежные вопросы