Собственно, что мне нужно добиться от Debian:
- есть графическое приложения, которому нужны права для изменения пары системных конфигов в /etc/;
- есть пользователь reader (по-сути, гостевой пользователь), права которого должны быть максимально ограничены;
- графическое приложение должно запускаться автоматически при входе пользователя reader.
Запуск графического приложения от root может быть избыточным, но приемлемым.
Запуск от отдельного пользователя и добавление ему прав на редактирование той пары системных конфигов -- кажется более оптимальным.
В любом случае, графическое приложение должно автоматически запускаться для гостевого пользователя по-умолчанию (максимально бесправного), но с правами другого пользователя.
Как это можно реализовать?
Буду рад советам по делу.
UPDATE
Создано два пользователя: reader и defender
Пользователь defender добавлен в группу root, а нужным конфигам изменены групповые права доступа.
Графическое приложение написано на "python gtk3". Как я понимаю, suid для запуска скриптовых файлов .py и .sh не подходит.
Обернул команду на запуск в bash-script:
cd /home/defender/thin-defender/thin_defender
/home/defender/thin-defender/.venv/bin/python3 /home/defender/thin-defender/thin_defender/manage.py run_app --config test
Добавил в sudoers до инклюда следующее правило:
reader ALL=(ALL:ALL) NOPASSWD:/home/defender/thin-defender/thin_defender/run.sh
Запуск через
sudo -u defender /home/defender/thin-defender/thin_defender/run.sh
...ожидаемо не работает:
No protocol specified
Unable to init server: Could not connect: Connection refused
No protocol specified
Unable to init server: Не удалось подключиться к: Connection refused
Segmentation fault
Запуск через
gksudo -u defender /home/defender/thin-defender/thin_defender/run.sh
Ничего не даёт.
Добавил ключик d, чтобы получить отладочную информацию:
No ask_pass set, using default!
xauth: /tmp/libgksu-4YNi0X/.Xauthority
STARTUP_ID: gksudo/|home|defender|thin-defender|thin_defender|run.sh/3546-0-default_TIME8935278
cmd[0]: /usr/bin/sudo
cmd[1]: -H
cmd[2]: -S
cmd[3]: -p
cmd[4]: GNOME_SUDO_PASS
cmd[5]: -u
cmd[6]: defender
cmd[7]: --
cmd[8]: /home/defender/thin-defender/thin_defender/run.sh
buffer: -No protocol specified-
buffer: -Unable to init server: Could not connect: Connection refused-
buffer: -No protocol specified-
buffer: -Unable to init server: Не удалось подключиться к: Connection refused-
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: -Segmentation fault-
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
buffer: --
brute force GNOME_SUDO_PASS ended...
No password prompt found; we'll assume we don't need a password.
xauth: /tmp/libgksu-4YNi0X/.Xauthority
xauth_env: /home/reader/.Xauthority
dir: /tmp/libgksu-4YNi0X
При использовании gksu с sudo в качестве бэкенда (ключ -S):
gksu -Sdu defender /home/defender/thin-defender/thin_defender/run.sh
Поведение аналогично, в отладке те же ошибки.
А вот gksu в обычном режиме (т.е. su в качестве бэкенда):
gksu -du defender /home/defender/thin-defender/thin_defender/run.sh
Приводит к запрашиванию пароля от пользователя defender, что в моём случае неприемлемо. Хотя приложение после ввода пароля запускается.
Где и какой конфиг править, чтобы сделать беспарольный вызов конкретного скрипта через gksu в обычном режиме (без использования бэкенда в виде sudo) не нагуглил.
Так же пробовал добавлять в bash-скрипт:
run xhost
export DISPLAY=":0.0"
xhost +
Но толку вроде не было.
Собственно, рабочее решения для запуска приложения от другого пользователя без пароля пока так и не нашёл.