Как запустить скрипт в пользовательском режиме внутри исполняемого файла jar, который выполняется от имени пользователя root?

Я хочу запустить следующий скрипт в исполняемом jar-файле Java на Raspberry Pi.

скрипт (= stream.sh):

     #!/bin/sh
     raspivid -fps 25 -w 640 -h 360 -vf -n -o - -t 999999 |cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/cam.sdp,rtcp-mux}' :demux=h264

код Java:

       Runtime.getRuntime().exec("sh stream.sh"));

Проблема в том, что jar должен быть запущен с помощью sudo, а команда vlc не принимает sudo. Ни скрипт, ни код Java не содержат sudo, но, поскольку jar выполняется как sudo, vlc по-прежнему выдает ошибку "VLC не должен запускаться от имени root...".

Как проще всего запустить скрипт в пользовательском режиме внутри банки?

2 ответа

Я хотел бы использовать su -l $LOGIN -c $CMD или же sudo -u $LOGIN $CMD,

Runtime.getRuntime().exec("sudo -u myuser sh stream.sh"));

У man sudoers есть вся необходимая информация.

Вам нужно изменить /etc/sudoers

Другие вопросы по тегам