Я написал собственный апплет панели GNOME на Python, который должен записывать в некоторые файлы, принадлежащие root. Есть ли способ заставить его запускаться с правами root без использования suid?
Вы должны разделить процедуры, требующие root-доступа, в отдельную программу на Python и запустить ее с помощью gksudo
.
Лучшее решение: не запускать весь апплет с правами root. Поместите все возможное в апплет, который работает с обычными правами пользователя. Создайте отдельную программу, которая изменяет необходимые файлы, и запустите ее через sudo
(или suid).
Для конфигурации sudoers запустите visudo
. Попробуйте что-то вроде
yourusername ALL=(ALL) NOPASSWD: /usr/local/bin/your_command.py
, чтобы разрешить запуск определенных команд с правами root.
Другой способ: добавить файл acl в эти файлы, принадлежащие корню, чтобы разрешить изменения для вашего пользователя.
См. man setfacl
для получения дополнительной информации (из пакета acl
).
Вы можете сделать это с помощью PolicyKit .