Величезному додатку потрібно за один конкретний час виконати невелику кількість записів у файл, який потребує кореневих прав. Це насправді не файл, а апаратний інтерфейс, який піддається Linux як файл.
Щоб уникнути надання кореневих привілеїв всій програмі, я написав сценарій bash, який виконує найважливіші завдання. Наприклад, наступний сценарій включить порт 17 апаратного інтерфейсу як вихід:
echo "17" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio17/direction
Однак, оскільки suid
в моїй системі відключено для bash-скриптів, мені цікаво, який найкращий спосіб досягти цього.
Скористайтеся деяким вирішенням, представленим тут
Зателефонуйте за скриптом із
sudo
основної програми та відредагуйте список судорів відповідно, щоб уникнути необхідності пароля під час виклику сценарію. Мені трохи незручно надавати привілеї судоecho
.Просто напишіть програму C з
fprintf
, і встановіть її на suid root. Увімкніть рядки та назви файлів і переконайтесь, що лише root може редагувати їх. Або читайте рядки з текстового файлу, аналогічно переконуючись, що ніхто не може редагувати файл.Якесь інше рішення, яке мені не прийшло в голову і є більш безпечним чи простим, ніж представлене вище?