Я пытаюсь создать метод java для выполнения команды 'sh' на терминале, используя класс Process.Это выглядит так:
Process p;
String[] cmd = { "sh", "/dir/file.sh"};
p = Runtime.getRuntime().exec(cmd);
После настройки некоторых разрешений я могу запустить команду вручную через консоль без учетных данных sudo, и она выполнит свою работу, но Java запускается из tomcat на сервере, а пользователь tomcat некажется, что он не получает разрешения, даже если целевому файлу sh были заданы флаги -rwxr-xr-x.
Мне было интересно, как можно установить такую же строку cmd String [], чтобы она выполнялась как rootпользователь, что-то вроде:
echo "password" | sudo -S sh /dir/file.sh
Я пробовал это, но это не сработало:
String[] cmd = { "echo 'password' |", "sudo -S", "sh", "/dir/file.sh"};