Команда Java Process sh с корневыми учетными данными - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь создать метод 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"};
...