Как всегда запускать программу с правами root

Если необходимо, чтобы программа всегда запускалась с правами root, даже если она запущена не от имени root, а обычным непривилешированным пользователем без использования sudo, то нужно использовать функционал setuid или setgid. Это означает, что программа будет запущена не от имени пользователя, который ее запускат, а от имени владельца исполняемого файла.
Установить признак setuid можно так:

sudo chown root:root ./program
sudo chmod a+s ./program

Всё. Теперь даже если процесс запущен непривилегированным пользователем, он всё равно получит привилегии владельца исполняемого файла, то есть - root

Автоматический запуск графических приложений с правами root

Однако, при попытке запустить GUI-приложение с признаком setuid я получил сообщение вида:

Gtk-WARNING **: 10:17:50.381: This process is currently running setuid or setgid.
This is not a supported use of GTK+. You must create a helper

В этому случае - можно сделать иначе.
Добавить в /etc/sudoers строку вида:

username    ALL=(ALL) NOPASSWD: /usr/local/bin/programmname

где username - имя непривилегированного пользователя, которому мы хотим дать прав запускать программу /usr/local/bin/programmname с правами root без ввода пароля.
А затем, я сделал скрипт-обертку:

#!/bin/bash
sudo /usr/local/bin/programmname &
exit 0

В итоге - при запуске скрипта-обертки GUI-программа /usr/local/bin/programmname стартует с правми root без ввода пароля.

Enter your comment. Wiki syntax is allowed:
W R​ Y G M
 
  • linux_faq/how_to_run_process_with_root_privileges_without_sudo.txt
  • Last modified: 2021/01/28 07:39
  • by admin