Можно ли задать различные права пользователя и java приложения в Linux?
Я пишу графическое java (javaFX) приложение которое является чем-то вроде оболочки над операционной системой. На данный момент я использую java 8 (jdk corretto 8.402), Debian 12 и Xfce. Проблема в том, что моё джава приложение выполняет многие команды и скрипты с sudo. Эти команды прописаны в sudoers как NOPASSWD. Получается так, что пользователь сможет и сам запускать все эти команды с sudo без пароля, что не безопасно.
Грубо говоря, мне нужно сделать так, чтобы при включении ПК автоматически входил пользователь и автоматически запускалось приложение. При этом всё должно быть безопасно, у пользователя должен быть очень ограниченный набор прав и он не должен иметь возможность выполнять команды, которые может выполнять java приложение.
Я не очень силён в Linux, поэтому хотелось бы выслушать ваши предложения.
Я пробовал сделать ещё одного пользователя. То есть root, user1 и guest. Идея была в том, чтобы сессия была от имени guest, а приложение было запущено от имени user1.
В /etc/lightdm/lightdm.conf настроил автологин для guets и в приложении "xfce4-session-settings" настроил автозапуск скрипта для запуска джава приложения от имени другого пользователя примерно так:
sudo -S -u user1 java -jar /path/to/my.jar
Я хочу чтобы это запускалось без требования пароля, но тогда /usr/bin/java нужно добавлять в sudoers как NOPASSWD. И тогда получается что пользователь guest сможет запускать любые java приложения с sudo и делать через них всё что захочет.
сергей кузьмин, Как один из сценариев - обновление или установка аддонов для приложения. Соответственно вызываются всякие apt remove, purge, install и тд. Вопрос как обойтись без судо?
Грубо говоря, мне нужно сделать так, чтобы при включении ПК автоматически входил пользователь и автоматически запускалось приложение. При этом всё должно быть безопасно, у пользователя должен быть очень ограниченный набор прав и он не должен иметь возможность выполнять команды, которые может выполнять java приложение.
Возможно, в этом случае вам и вовсе не нужен Desktop Environment? Запускайте своё приложение единственным на весь экран (режим киоска), пользователь будет ограничен только его функциями.
Возможно, в этом случае вам и вовсе не нужен Desktop Environment? Запускайте своё приложение единственным на весь экран (режим киоска), пользователь будет ограничен только его функциями.
В случае каки-то ошибок хотелось бы иметь возможность подключиться к пользователю удалённо через RustDesk и полазить по системе, логи почитать. Возможно в kiosk mode с этим будут проблемы.