Pages : 1
#1 Le 05/12/2007, à 18:23
- romano.07
[Résolu] problème avec setuid
Bonjour,
Afin de permettre à tout les utilisateurs de mon pc de relancer les services réseau, j'ai fait le script restart_reseau.sh ci dessous :
echo redemarrage \du réseau :
/etc/init.d/networking restart
echo resultat : $?
Comme il faut etre root pour executer networking, j'ai rajouté le droit setuid au script, qui appartient à root :
romain@rom-desk:~/Desktop$ ls -l
-rwsrwsrwx 1 root root 502 2007-12-05 17:50 restart_reseau.sh
Par contre, je ne comprends pas trop pourquoi ca ne fonctionne pas :
Si je lance le script avec l'utilisateur root, ca fonctionne :
root@rom-desk:~/Desktop$ ./restart_reseau.sh
redemarrage du réseau :
* Reconfiguring network interfaces... * Stopping the Firestarter firewall...
...done.
...etc.....
* Starting the Firestarter firewall...
...done.
[ OK ]
resultat : 0
mais si je le lance sous un autre utilisateur, il me dit qu'il n'a pas les droits, comme si le setuid n'était pas pris en compte :
romain@rom-desk:~/Desktop$ ./restart_reseau.sh
redemarrage du réseau :
open: Permission denied
* Reconfiguring network interfaces... ifdown: failed to open statefile /var/run/network/ifstate: Permission denied
ifup: failed to open statefile /var/run/network/ifstate: Permission denied
open: Permission denied
[fail]
resultat : 0
Je ne comprends pas trop pourquoi mon script ne se lance pas en root. Est que quelqu'un aurait une idée?
Question subsidiaire, pourquoi est ce que le $? me retourne un code 0 dans le second cas, alors qu'on a une erreur d'authentification?
Merci!
Romain
Dernière modification par romano.07 (Le 06/12/2007, à 18:19)
Hors ligne
#2 Le 05/12/2007, à 18:33
- figaro
Re : [Résolu] problème avec setuid
Qu'est-ce que tu veux dire par "j'ai rajouté le droit setuid au script" ?
Le blog de figaro (astuces diverses et tutos Samba pour débutants)
Le blog de cep (astuces Linux avancées)
Debian Lenny 6.0.1, Ubuntu 10.04.2, Ubuntu Remix 9.10, Ubuntu Netbook 10.04
Hors ligne
#3 Le 05/12/2007, à 18:43
- romano.07
Re : [Résolu] problème avec setuid
J'ai fais :
sudo chmod +s restart_reseau.sh
Hors ligne
#4 Le 05/12/2007, à 19:27
- figaro
Re : [Résolu] problème avec setuid
Oui mais là tu as mis le setuid sur ton script pas sur le script networking qui donc ne s'exécute pas puisque tu n'es pas root. CQFD.
Dernière modification par figaro (Le 05/12/2007, à 19:30)
Le blog de figaro (astuces diverses et tutos Samba pour débutants)
Le blog de cep (astuces Linux avancées)
Debian Lenny 6.0.1, Ubuntu 10.04.2, Ubuntu Remix 9.10, Ubuntu Netbook 10.04
Hors ligne
#5 Le 06/12/2007, à 18:14
- romano.07
Re : [Résolu] problème avec setuid
En fait c'est un peu plus compliquer que ca! ca ne marche pas non plus en mettant le setuid sur le script networking. En recherchant un peu plus sur internet, j'ai compris pourquoi : le setuid est ignoré lorsque l'executable est un script, à priori pour des raisons de sécurité. C'est par exemple expliqué sur un autre forum :
http://www.candiulb.be/forum/index.php?showtopic=26995
Par contre le setuid fonctionne bien sur les binaires executables (comme par exemple un programme c compilé).
Hors ligne
#6 Le 06/12/2007, à 18:41
- figaro
Re : [Résolu] problème avec setuid
Plus que prudents les gars du kernel !
Il faut dire qu'il ne m'est jamais venu à l'idée de mettre un setuid sur un script.
Dernière modification par figaro (Le 06/12/2007, à 18:42)
Le blog de figaro (astuces diverses et tutos Samba pour débutants)
Le blog de cep (astuces Linux avancées)
Debian Lenny 6.0.1, Ubuntu 10.04.2, Ubuntu Remix 9.10, Ubuntu Netbook 10.04
Hors ligne
Pages : 1