Ogromna aplikacja musi w tym samym czasie wykonać niewielką liczbę zapisów do pliku wymagającego uprawnień administratora. To nie jest tak naprawdę plik, ale interfejs sprzętowy, który jest udostępniany Linuksowi jako plik.
Aby uniknąć nadawania uprawnień roota całej aplikacji, napisałem skrypt bash, który wykonuje najważniejsze zadania. Na przykład poniższy skrypt włączy wyjście 17 interfejsu sprzętowego jako dane wyjściowe:
echo "17" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio17/direction
Jednakże, ponieważ suid
jest wyłączone dla skryptów bash w moim systemie, zastanawiam się, jaki jest najlepszy sposób na osiągnięcie tego.
Skorzystaj z przedstawionego tutaj obejścia
Wywołaj skrypt za pomocą
sudo
z głównej aplikacji i odpowiednio edytuj listę sudoers, aby uniknąć konieczności podawania hasła podczas wywoływania skryptu. Nie czuję się komfortowo, aby dać przywileje sudoecho
.Po prostu napisz program w C
fprintf
i ustaw na suid root. Koduj ciągi i nazwy plików i upewnij się, że tylko root może je edytować. Lub przeczytaj ciągi z pliku tekstowego, podobnie upewniając się, że nikt nie może edytować pliku.Jakieś inne rozwiązanie, które nie przyszło mi do głowy i jest bezpieczniejsze lub prostsze niż te przedstawione powyżej?