Как запустить.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");
}
}
Вы должны либо запустить приложение Java в качестве корня, либо выполнить ftpusers.sh
с помощью команды king of sudo. Я вижу два возможных варианта:
ftpusers.sh
с помощью gksudo
, kdesudo
или аналогичного - он kdesudo
пользователю, нормально ли он запускать приложение с правами root и, возможно, запрашивает пароль.sudo
и вручную перенаправить IO из этой команды в IO вашего приложения Обратите внимание, что этот подход не будет работать во всех средах (например, sudo может быть недоступен), поэтому я просто изменил бы "permission denied."
сообщение на что-то вроде "Application foor must be started as root"
и попросить пользователя запустить приложение Java с надлежащими разрешениями
Либо запустите свою java-программу как root, либо запустите скрипт setuid, чтобы повысить ваши права. Если последнее, убедитесь, что у неавторизованных пользователей нет доступа к скрипту.