Dans le message <news:ciea6k$cg9$, *C. Tobini* tapota sur f.c.o.l.configuration :
Bonjour,
Bonjour,
J'ai écrit un petit script Perl pour connecter ma carte PCMCIA à ma borne Internet WiFi.
Le script est setuid root et j'ai mis $ENV{'PATH'} = '/sbin' car j'utilise :
- modprobe (opur charger le module ndiswrapper) - cardctl (pour vérifier le status de la carte) - iwconfig
Pour modprobe et cardctl, il n'y a pas de problème.
La configuration de la connexion se trouve dans une fonction init_card, et le script me demande en revanche les droits root pour utiliser iwconfig.
Vu que le script est suid root il s'exécute en root (?) et je ne devrais normalement pas avoir de problème sur iwconfig.
Vous auriez une idée là-dessus ?
Si vous utilisez l'interpréteur '/usr/bin/perl', alors votre script ne peut pas être setuid et s'exécuter avec les droits root. Il faut alors utiliser l'interpréteur '/usr/bin/suidperl'. Vous pouvez vérifier à tout moment dans votre script les droits réels dont vous disposez avec les variables perl $< (real user id) et $> (effective user id), par exemple en insérant ces lignes de debug :
print "UID = $<n"; print "EUID = $>n";
Sinon, il vous reste la solution sudo.
Merci.
De rien.
-- TiChou
Dans le message <news:ciea6k$cg9$1@news-reader2.wanadoo.fr>,
*C. Tobini* tapota sur f.c.o.l.configuration :
Bonjour,
Bonjour,
J'ai écrit un petit script Perl pour connecter ma carte PCMCIA à ma
borne Internet WiFi.
Le script est setuid root et j'ai mis $ENV{'PATH'} = '/sbin' car
j'utilise :
- modprobe (opur charger le module ndiswrapper)
- cardctl (pour vérifier le status de la carte)
- iwconfig
Pour modprobe et cardctl, il n'y a pas de problème.
La configuration de la connexion se trouve dans une fonction init_card,
et le script me demande en revanche les droits root pour utiliser
iwconfig.
Vu que le script est suid root il s'exécute en root (?) et je ne devrais
normalement pas avoir de problème sur iwconfig.
Vous auriez une idée là-dessus ?
Si vous utilisez l'interpréteur '/usr/bin/perl', alors votre script ne peut
pas être setuid et s'exécuter avec les droits root. Il faut alors utiliser
l'interpréteur '/usr/bin/suidperl'.
Vous pouvez vérifier à tout moment dans votre script les droits réels dont
vous disposez avec les variables perl $< (real user id) et $> (effective
user id), par exemple en insérant ces lignes de debug :
Dans le message <news:ciea6k$cg9$, *C. Tobini* tapota sur f.c.o.l.configuration :
Bonjour,
Bonjour,
J'ai écrit un petit script Perl pour connecter ma carte PCMCIA à ma borne Internet WiFi.
Le script est setuid root et j'ai mis $ENV{'PATH'} = '/sbin' car j'utilise :
- modprobe (opur charger le module ndiswrapper) - cardctl (pour vérifier le status de la carte) - iwconfig
Pour modprobe et cardctl, il n'y a pas de problème.
La configuration de la connexion se trouve dans une fonction init_card, et le script me demande en revanche les droits root pour utiliser iwconfig.
Vu que le script est suid root il s'exécute en root (?) et je ne devrais normalement pas avoir de problème sur iwconfig.
Vous auriez une idée là-dessus ?
Si vous utilisez l'interpréteur '/usr/bin/perl', alors votre script ne peut pas être setuid et s'exécuter avec les droits root. Il faut alors utiliser l'interpréteur '/usr/bin/suidperl'. Vous pouvez vérifier à tout moment dans votre script les droits réels dont vous disposez avec les variables perl $< (real user id) et $> (effective user id), par exemple en insérant ces lignes de debug :
print "UID = $<n"; print "EUID = $>n";
Sinon, il vous reste la solution sudo.
Merci.
De rien.
-- TiChou
C. Tobini
TiChou wrote: [] par exemple en insérant ces lignes de debug :
print "UID = $<n"; print "EUID = $>n";
Bonjour et merci de la réponse.
J'ai le même résultat en invoquant suidperl, j'ai introduit les lignes ci-dessus dans mon script (au niveau du script principal et de la fonction invoquant iwconfig. Dans les 2 cas, j'ai 501 pour l'UID et 0 pour l'UID effectif, le script s'exécute bien en root apparement.
Je ne comprend alors pas la raison pour laquelle j'ai 'Operation not permitted' à chaque apppel de iwconfig...
TiChou wrote:
[] par exemple en insérant ces lignes de debug :
print "UID = $<n";
print "EUID = $>n";
Bonjour et merci de la réponse.
J'ai le même résultat en invoquant suidperl, j'ai introduit les lignes
ci-dessus dans mon script (au niveau du script principal et de la
fonction invoquant iwconfig. Dans les 2 cas, j'ai 501 pour l'UID et 0
pour l'UID effectif, le script s'exécute bien en root apparement.
Je ne comprend alors pas la raison pour laquelle j'ai 'Operation not
permitted' à chaque apppel de iwconfig...
TiChou wrote: [] par exemple en insérant ces lignes de debug :
print "UID = $<n"; print "EUID = $>n";
Bonjour et merci de la réponse.
J'ai le même résultat en invoquant suidperl, j'ai introduit les lignes ci-dessus dans mon script (au niveau du script principal et de la fonction invoquant iwconfig. Dans les 2 cas, j'ai 501 pour l'UID et 0 pour l'UID effectif, le script s'exécute bien en root apparement.
Je ne comprend alors pas la raison pour laquelle j'ai 'Operation not permitted' à chaque apppel de iwconfig...
Nicolas George
"C. Tobini" wrote in message <cieslr$3hp$:
Je ne comprend alors pas la raison pour laquelle j'ai 'Operation not permitted' à chaque apppel de iwconfig...
Comment appelles-tu cet iwconfig, exactement ?
"C. Tobini" wrote in message <cieslr$3hp$1@news-reader1.wanadoo.fr>:
Je ne comprend alors pas la raison pour laquelle j'ai 'Operation not
permitted' à chaque apppel de iwconfig...
Je ne comprend alors pas la raison pour laquelle j'ai 'Operation not permitted' à chaque apppel de iwconfig...
Comment appelles-tu cet iwconfig, exactement ?
En faisant un appel :
system ( 'iwconfig wlan0 mode Managed' );
Pour la première ligne de configuration par exemple.
Nicolas George
"C. Tobini" wrote in message <cih1lq$r1t$:
En faisant un appel :
system ( 'iwconfig wlan0 mode Managed' );
Hum. Dans ce cas, il n'y a pas de shell invoqué, donc mon hypothèse (bash qui laisse tomber ses droits) tombe à l'eau.
Essaie de faire « $< = $>; » à tout hasard avant. Sinon, tu peux essayer d'ajouter un « system "id"; » un peu avant pour chercher où tu perds les droits.
"C. Tobini" wrote in message <cih1lq$r1t$1@news-reader4.wanadoo.fr>:
En faisant un appel :
system ( 'iwconfig wlan0 mode Managed' );
Hum. Dans ce cas, il n'y a pas de shell invoqué, donc mon hypothèse (bash
qui laisse tomber ses droits) tombe à l'eau.
Essaie de faire « $< = $>; » à tout hasard avant. Sinon, tu peux essayer
d'ajouter un « system "id"; » un peu avant pour chercher où tu perds les
droits.
Hum. Dans ce cas, il n'y a pas de shell invoqué, donc mon hypothèse (bash qui laisse tomber ses droits) tombe à l'eau.
Essaie de faire « $< = $>; » à tout hasard avant. Sinon, tu peux essayer d'ajouter un « system "id"; » un peu avant pour chercher où tu perds les droits.
C. Tobini
Nicolas George wrote:
"C. Tobini" wrote in message <cih1lq$r1t$:
En faisant un appel :
system ( 'iwconfig wlan0 mode Managed' );
Hum. Dans ce cas, il n'y a pas de shell invoqué, donc mon hypothèse (bash qui laisse tomber ses droits) tombe à l'eau.
Essaie de faire « $< = $>; » à tout hasard avant. Sinon, tu peux essayer d'ajouter un « system "id"; » un peu avant pour chercher où tu perds les droits.
Pour $> et $< c'est fait, dans le script principal et la fonction appelant iwconfig et dans les 2 cas, je suis en UID root et EUID utilisateur.
Nicolas George wrote:
"C. Tobini" wrote in message <cih1lq$r1t$1@news-reader4.wanadoo.fr>:
En faisant un appel :
system ( 'iwconfig wlan0 mode Managed' );
Hum. Dans ce cas, il n'y a pas de shell invoqué, donc mon hypothèse (bash
qui laisse tomber ses droits) tombe à l'eau.
Essaie de faire « $< = $>; » à tout hasard avant. Sinon, tu peux essayer
d'ajouter un « system "id"; » un peu avant pour chercher où tu perds les
droits.
Pour $> et $< c'est fait, dans le script principal et la fonction
appelant iwconfig et dans les 2 cas, je suis en UID root et EUID
utilisateur.
Hum. Dans ce cas, il n'y a pas de shell invoqué, donc mon hypothèse (bash qui laisse tomber ses droits) tombe à l'eau.
Essaie de faire « $< = $>; » à tout hasard avant. Sinon, tu peux essayer d'ajouter un « system "id"; » un peu avant pour chercher où tu perds les droits.
Pour $> et $< c'est fait, dans le script principal et la fonction appelant iwconfig et dans les 2 cas, je suis en UID root et EUID utilisateur.
TiChou
Dans le message <news:cih76c$nj9$, *C. Tobini* tapota sur f.c.o.l.configuration :
Nicolas George wrote:
Essaie de faire « $< = $>; » à tout hasard avant. Sinon, tu peux essayer d'ajouter un « system "id"; » un peu avant pour chercher où tu perds les droits.
Pour $> et $< c'est fait, dans le script principal et la fonction appelant iwconfig et dans les 2 cas, je suis en UID root et EUID utilisateur.
Relisez ce que vous a dit Nicolas George... Il vous dit de placer dans votre script :
$< = $>;
et aussi de tester ce que retourne la ligne :
system "id";
-- TiChou
Dans le message <news:cih76c$nj9$2@news-reader2.wanadoo.fr>,
*C. Tobini* tapota sur f.c.o.l.configuration :
Nicolas George wrote:
Essaie de faire « $< = $>; » à tout hasard avant. Sinon, tu peux essayer
d'ajouter un « system "id"; » un peu avant pour chercher où tu perds les
droits.
Pour $> et $< c'est fait, dans le script principal et la fonction
appelant iwconfig et dans les 2 cas, je suis en UID root et EUID
utilisateur.
Relisez ce que vous a dit Nicolas George... Il vous dit de placer dans votre
script :
Dans le message <news:cih76c$nj9$, *C. Tobini* tapota sur f.c.o.l.configuration :
Nicolas George wrote:
Essaie de faire « $< = $>; » à tout hasard avant. Sinon, tu peux essayer d'ajouter un « system "id"; » un peu avant pour chercher où tu perds les droits.
Pour $> et $< c'est fait, dans le script principal et la fonction appelant iwconfig et dans les 2 cas, je suis en UID root et EUID utilisateur.
Relisez ce que vous a dit Nicolas George... Il vous dit de placer dans votre script :
$< = $>;
et aussi de tester ce que retourne la ligne :
system "id";
-- TiChou
Hugues
Ce cher "C. Tobini" a dit :
Nicolas George wrote:
"C. Tobini" wrote in message <cih1lq$r1t$:
En faisant un appel :
system ( 'iwconfig wlan0 mode Managed' ); Hum. Dans ce cas, il n'y a pas de shell invoqué, donc mon hypothèse
(bash qui laisse tomber ses droits) tombe à l'eau. Essaie de faire « $< = $>; » à tout hasard avant. Sinon, tu peux essayer d'ajouter un « system "id"; » un peu avant pour chercher où tu perds les droits.
Pour $> et $< c'est fait, dans le script principal et la fonction appelant iwconfig et dans les 2 cas, je suis en UID root et EUID utilisateur.
(désolé, mais je n'ai pas pu suivre le début de la conversation, je n'arrive pas à repêcher le début du thread. Je vous prie donc de m'excuser si je suis à côté de la plaque)
En fait si je comprends bien, tu cherches à exécuter un programme en tant qu'utilisateur normal, mais ce programme a besoin d'être en tant que root pour fonctionner. Et tu cherches à faire ça à partir d'un shellscript.
Ça n'est pas possible.
D'après ce que j'ai lu sur une excellente page explicative : http://lea-linux.org/dev/suid_scripts.html
Il te faut passer par un programme écrit en C, afin de faire appel aux routines système qui vont bien, et qui vont réellement te donner les droits root pour l'exécution du programme voulu.
Encore une fois, toutes mes excuses si je suis à côté de la plaque (et je vais tenter de changer de fournisseur nntp afin d'accéder aux archives qui me manquent)
-- Hugues - Linux Addict
Ce cher "C. Tobini" <ctemp2@free.fr> a dit :
Nicolas George wrote:
"C. Tobini" wrote in message <cih1lq$r1t$1@news-reader4.wanadoo.fr>:
En faisant un appel :
system ( 'iwconfig wlan0 mode Managed' );
Hum. Dans ce cas, il n'y a pas de shell invoqué, donc mon hypothèse
(bash
qui laisse tomber ses droits) tombe à l'eau.
Essaie de faire « $< = $>; » à tout hasard avant. Sinon, tu peux
essayer
d'ajouter un « system "id"; » un peu avant pour chercher où tu perds les
droits.
Pour $> et $< c'est fait, dans le script principal et la fonction
appelant iwconfig et dans les 2 cas, je suis en UID root et EUID
utilisateur.
(désolé, mais je n'ai pas pu suivre le début de la conversation, je
n'arrive pas à repêcher le début du thread. Je vous prie donc de
m'excuser si je suis à côté de la plaque)
En fait si je comprends bien, tu cherches à exécuter un programme en
tant qu'utilisateur normal, mais ce programme a besoin d'être en tant
que root pour fonctionner.
Et tu cherches à faire ça à partir d'un shellscript.
Ça n'est pas possible.
D'après ce que j'ai lu sur une excellente page explicative :
http://lea-linux.org/dev/suid_scripts.html
Il te faut passer par un programme écrit en C, afin de faire appel aux
routines système qui vont bien, et qui vont réellement te donner les
droits root pour l'exécution du programme voulu.
Encore une fois, toutes mes excuses si je suis à côté de la plaque (et
je vais tenter de changer de fournisseur nntp afin d'accéder aux
archives qui me manquent)
system ( 'iwconfig wlan0 mode Managed' ); Hum. Dans ce cas, il n'y a pas de shell invoqué, donc mon hypothèse
(bash qui laisse tomber ses droits) tombe à l'eau. Essaie de faire « $< = $>; » à tout hasard avant. Sinon, tu peux essayer d'ajouter un « system "id"; » un peu avant pour chercher où tu perds les droits.
Pour $> et $< c'est fait, dans le script principal et la fonction appelant iwconfig et dans les 2 cas, je suis en UID root et EUID utilisateur.
(désolé, mais je n'ai pas pu suivre le début de la conversation, je n'arrive pas à repêcher le début du thread. Je vous prie donc de m'excuser si je suis à côté de la plaque)
En fait si je comprends bien, tu cherches à exécuter un programme en tant qu'utilisateur normal, mais ce programme a besoin d'être en tant que root pour fonctionner. Et tu cherches à faire ça à partir d'un shellscript.
Ça n'est pas possible.
D'après ce que j'ai lu sur une excellente page explicative : http://lea-linux.org/dev/suid_scripts.html
Il te faut passer par un programme écrit en C, afin de faire appel aux routines système qui vont bien, et qui vont réellement te donner les droits root pour l'exécution du programme voulu.
Encore une fois, toutes mes excuses si je suis à côté de la plaque (et je vais tenter de changer de fournisseur nntp afin d'accéder aux archives qui me manquent)
-- Hugues - Linux Addict
C. Tobini
TiChou wrote:
Relisez ce que vous a dit Nicolas George... Il vous dit de placer dans votre script :
$< = $>;
et aussi de tester ce que retourne la ligne :
system "id";
OK j'avais lu trop vite :-)
L'égalité fait que je suis en UID root dans tout le script.
La commande system 'id' retourne -1.
TiChou wrote:
Relisez ce que vous a dit Nicolas George... Il vous dit de placer dans votre
script :
$< = $>;
et aussi de tester ce que retourne la ligne :
system "id";
OK j'avais lu trop vite :-)
L'égalité fait que je suis en UID root dans tout le script.
Relisez ce que vous a dit Nicolas George... Il vous dit de placer dans votre script :
$< = $>;
et aussi de tester ce que retourne la ligne :
system "id";
OK j'avais lu trop vite :-)
L'égalité fait que je suis en UID root dans tout le script.
La commande system 'id' retourne -1.
C. Tobini
Hugues wrote:
En fait si je comprends bien, tu cherches à exécuter un programme en tant qu'utilisateur normal, mais ce programme a besoin d'être en tant que root pour fonctionner. Et tu cherches à faire ça à partir d'un shellscript.
Bonjour et merci de ton intervention.
J'essaie d'exécuter un script Perl avec un suid. Normalement ça ne devarit pas poser de problème, mais là il y en a un :-)
Encore une fois, toutes mes excuses si je suis à côté de la plaque
C'est pas grave, tu m'as appris qu'il faut éventuellement des routines C pour les droit root et également l'adresse d'un très bon tutoriel :-)
Hugues wrote:
En fait si je comprends bien, tu cherches à exécuter un programme en
tant qu'utilisateur normal, mais ce programme a besoin d'être en tant
que root pour fonctionner.
Et tu cherches à faire ça à partir d'un shellscript.
Bonjour et merci de ton intervention.
J'essaie d'exécuter un script Perl avec un suid. Normalement ça ne
devarit pas poser de problème, mais là il y en a un :-)
Encore une fois, toutes mes excuses si je suis à côté de la plaque
C'est pas grave, tu m'as appris qu'il faut éventuellement des routines C
pour les droit root et également l'adresse d'un très bon tutoriel :-)
En fait si je comprends bien, tu cherches à exécuter un programme en tant qu'utilisateur normal, mais ce programme a besoin d'être en tant que root pour fonctionner. Et tu cherches à faire ça à partir d'un shellscript.
Bonjour et merci de ton intervention.
J'essaie d'exécuter un script Perl avec un suid. Normalement ça ne devarit pas poser de problème, mais là il y en a un :-)
Encore une fois, toutes mes excuses si je suis à côté de la plaque
C'est pas grave, tu m'as appris qu'il faut éventuellement des routines C pour les droit root et également l'adresse d'un très bon tutoriel :-)