Un'enorme applicazione deve, in un determinato momento, eseguire un piccolo numero di scritture su un file che richiede i permessi di root. Non è in realtà un file ma un'interfaccia hardware che è esposta a Linux come file.
Per evitare di dare i privilegi di root all'intera applicazione, ho scritto uno script bash che svolge i compiti critici. Ad esempio, il seguente script abiliterà la porta 17 dell'interfaccia hardware come output:
echo "17" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio17/direction
Tuttavia, poiché suid
è disabilitato per gli script bash sul mio sistema, mi chiedo quale sia il modo migliore per raggiungere questo obiettivo.
Usa una soluzione alternativa presentata qui
Chiamare lo script con
sudo
dall'applicazione principale e modificare di conseguenza l'elenco dei sudoers, per evitare di richiedere una password quando si chiama lo script. Sono un po 'a disagio a dare i privilegi di sudoecho
.Basta scrivere un programma C, con
fprintf
e impostarlo su suid root. Hardcode le stringhe e i nomi dei file e assicurarsi che solo root possa modificarlo. Oppure leggi le stringhe da un file di testo, allo stesso modo assicurandoti che nessuno possa modificare il file.Qualche altra soluzione che non mi è venuta in mente ed è più sicura o più semplice di quelle presentate sopra?