выполнить сценарий оболочки от имени пользователя root в коде Java

1

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

    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");
        }
    }
Теги:

2 ответа

1
Лучший ответ

Вы должны либо запустить приложение Java в качестве корня, либо выполнить ftpusers.sh с помощью команды king of sudo. Я вижу два возможных варианта:

  1. Если ваше приложение запущено с X-сервером, вы можете вызвать ftpusers.sh с помощью gksudo, kdesudo или аналогичного - он kdesudo пользователю, нормально ли он запускать приложение с правами root и, возможно, запрашивает пароль.
  2. Если ваше приложение является консольным, вам придется использовать команду sudo и вручную перенаправить IO из этой команды в 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");
Показать ещё 4 комментария
0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню