Une énorme application doit, à un moment donné, effectuer un petit nombre d'écritures dans un fichier nécessitant des autorisations root. Ce n'est pas vraiment un fichier, mais une interface matérielle exposée à Linux sous forme de fichier.
Pour éviter de donner des privilèges root à l'ensemble de l'application, j'ai écrit un script bash qui effectue les tâches critiques. Par exemple, le script suivant activera le port 17 de l'interface matérielle en sortie:
echo "17" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio17/direction
Cependant, comme il suid
est désactivé pour les scripts bash sur mon système, je me demande quel est le meilleur moyen d'y parvenir.
Utilisez les solutions de contournement présentées ici
Appelez le script
sudo
depuis l'application principale et modifiez la liste des sudoers en conséquence, pour éviter de demander un mot de passe lors de l'appel du script. Je suis un peu mal à l'aise de donner des privilèges à Sudoecho
.Il suffit d’écrire un programme C, avec
fprintf
, et de le définir sur suid root. Hardcode les chaînes et les noms de fichiers et assurez-vous que seul root peut le modifier. Ou lisez les chaînes d'un fichier texte, tout en vous assurant que personne ne peut éditer le fichier.Une autre solution qui ne m'est pas venue à l'esprit et qui est plus sûre ou plus simple que celles présentées ci-dessus?