@Casil

Можно ли задать различные права пользователя и 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 и делать через них всё что захочет.
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ответы на вопрос 2
ValdikSS
@ValdikSS
Policykit позволит настроить правила доступа максимально гибко.
https://wiki.debian.org/PolicyKit

Грубо говоря, мне нужно сделать так, чтобы при включении ПК автоматически входил пользователь и автоматически запускалось приложение. При этом всё должно быть безопасно, у пользователя должен быть очень ограниченный набор прав и он не должен иметь возможность выполнять команды, которые может выполнять java приложение.
Возможно, в этом случае вам и вовсе не нужен Desktop Environment? Запускайте своё приложение единственным на весь экран (режим киоска), пользователь будет ограничен только его функциями.
Ответ написан
@pfg21
ex-турист
sudo оперирует не именем приложения, а полноразмерной строчкой запуска, с учетом параметррв запуска приложения.
т.е. если прописать
# test
pfg ALL=(ALL) NOPASSWD:  /usr/bin/id -Gn

то без пароля будет запускаться только sudo /usr/bin/id -Gn а иная строчка запуска попадать под это правило не будет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы