- Modifié
Bonjour à tous,
Je viens vous voir aujourd'hui car j'ai un petit soucis de droit par rapport à l'exécution de scripts.
J'explique, j'ai créer deux petits scripts perl, l'un pour modifier les paramètres de la machine (Hostname, adresse IP, etc...) et un autre pour générer un certificat pour mes connexions SSL.
Les données sont saisie dans un formulaire PHP, puis lorsque j'appuie sur l'un ou l'autre des boutons, j'exécute un des scripts perl via la commande :
J'ai essayer de passer mes script sous propriétaire root puis de mettre le SUID dessus, mais bien sur, ça ne fonctionne pas (Ça aurait été trop simple :/).
Je me tourne donc vers vous pour savoir si vous ne connaîtriez pas un moyen d’exécuter ces deux scripts en tant que root mais sans donner trop de droits sur mon système et que toutes les commandes système fonctionnent.
Merci d'avance.
Je viens vous voir aujourd'hui car j'ai un petit soucis de droit par rapport à l'exécution de scripts.
J'explique, j'ai créer deux petits scripts perl, l'un pour modifier les paramètres de la machine (Hostname, adresse IP, etc...) et un autre pour générer un certificat pour mes connexions SSL.
Les données sont saisie dans un formulaire PHP, puis lorsque j'appuie sur l'un ou l'autre des boutons, j'exécute un des scripts perl via la commande :
exec("sudo perl /chemin/vers/mon/script");
Jusqu'à maintenant en tout cas, car pour faire ça, j'avais modifier mon fichier sudoers et rajouté une ligne pour donner les droits a l'utilisateur apache sur l'éxécution de perl :www-data ALL= (root) NOPASSWD:/usr/bin/perl
Le soucis, c'est que comme faille de sécurité, je trouve ça pas mal puisque n'importe qui se faisant passer pour mon user apache peut exécuter n'importe quel script perl.J'ai essayer de passer mes script sous propriétaire root puis de mettre le SUID dessus, mais bien sur, ça ne fonctionne pas (Ça aurait été trop simple :/).
chown root:root mon_script
chmod 4755 mon_script
J'ai également essayer de modifier le sudoers pour n'exécuter que mes deux scripts :# User privilege specification
root ALL=(ALL:ALL) ALL
www-data ALL=(ALL) NOPASSWD: /var/www/apps/scripts/gen_cert.pl
www-data ALL=(ALL) NOPASSWD: /var/www/apps/scripts/modif.pl
Ou comme çaCmnd_Alias GENCERT = /var/www/apps/scripts/gen_cert.pl
Cmnd_Alias MODIF = /var/www/apps/scripts/modif.pl
# User privilege specification
root ALL=(ALL:ALL) ALL
www-data ALL=(ALL) NOPASSWD: GENCERT
www-data ALL=(ALL) NOPASSWD: MODIF
Ça ne fonctionne pas non plus. Enfin pas totalement, les commandes de génération de certificat fonctionne mais pas le "mv" sur les fichiers de conf apache pour modifier le certificat utiliser.Je me tourne donc vers vous pour savoir si vous ne connaîtriez pas un moyen d’exécuter ces deux scripts en tant que root mais sans donner trop de droits sur mon système et que toutes les commandes système fonctionnent.
Merci d'avance.