OVH Cloud OVH Cloud

Linux : scripts Perl et setuid ?

2 réponses
Avatar
C. Tobini
Bonjour,

Je n'arrive pas à exécuter des scripts Perl appartenant à 'root' en
fixant un setuid.

J'ai diverses erreurs :

- sur #!
- ENV{PATH}
- path non sûr avec des appels dans le script comme `cardctl status`

Que faut-il faire pour remédier à celà ?

Je vous remercie.

C. Tobini

2 réponses

Avatar
Jérémy JUST
On Sat, 04 Sep 2004 01:26:03 +0200
"C. Tobini" wrote:

Je n'arrive pas à exécuter des scripts Perl appartenant à 'root' en
fixant un setuid.


Tu pourrais jeter un coup d'oeil à la perldoc perlsec.
Voilà ce qu'elle dit te concernant:


J'ai diverses erreurs :

- sur #!


Options Sur la Ligne "#!"

Quand vous rendez un script exécutable, de facon à pouvoir l'utiliser
comme une commande, le système passera des options à perl à partir de
la ligne #! du script. Perl vérifie que toutes les options de ligne
de commande données à un script setuid (ou setgid) correspondent
effectivement à celles placées sur la ligne #!.


- ENV{PATH}
- path non sûr avec des appels dans le script comme `cardctl status`


Nettoyer Votre Path

Pour les messages "Insecure $ENV{PATH}", vous avez besoin de fixer
$ENV{'PATH'} à une valeur connue, et chaque répertoire dans le path ne
doit pas être modifiable par d'autres que son propriétaire et son
groupe. Vous pourriez être surpris d'obtenir ce message même si le
chemin vers votre exécutable est complètement explicite. Ceci n'est
pas généré parce que vous n'avez pas fourni un chemin complet au
programme mais parce que vous n'avez jamais défini votre variable
d'environnement PATH, ou vous ne l'avez pas définie comme quelque
chose de sûr. Puisque Perl ne peut pas garantir que l'exécutable en
question n'est pas lui-même sur le point de se retourner pour exécuter
un autre programme qui dépend de votre PATH, il s'assure que vous avez
défini le PATH.


Que faut-il faire pour remédier à celà ?


Je me souviens aussi d'un exécutable « suidperl » qui doit avoir une
importance dans ton cas, mais c'est un peu flou dans mon esprit.

Autant que tu lises la page perlsec en entier. Elle est instructive.

--
Jérémy JUST

Avatar
C. Tobini
Bonjour et merci pour ta réponse, je vais consulter perlsec de suite.

C. Tobini



Jérémy JUST wrote:
On Sat, 04 Sep 2004 01:26:03 +0200
"C. Tobini" wrote:


Je n'arrive pas à exécuter des scripts Perl appartenant à 'root' en
fixant un setuid.



Tu pourrais jeter un coup d'oeil à la perldoc perlsec.
Voilà ce qu'elle dit te concernant:



J'ai diverses erreurs :

- sur #!



Options Sur la Ligne "#!"

Quand vous rendez un script exécutable, de facon à pouvoir l'utiliser
comme une commande, le système passera des options à perl à partir de
la ligne #! du script. Perl vérifie que toutes les options de ligne
de commande données à un script setuid (ou setgid) correspondent
effectivement à celles placées sur la ligne #!.



- ENV{PATH}
- path non sûr avec des appels dans le script comme `cardctl status`



Nettoyer Votre Path

Pour les messages "Insecure $ENV{PATH}", vous avez besoin de fixer
$ENV{'PATH'} à une valeur connue, et chaque répertoire dans le path ne
doit pas être modifiable par d'autres que son propriétaire et son
groupe. Vous pourriez être surpris d'obtenir ce message même si le
chemin vers votre exécutable est complètement explicite. Ceci n'est
pas généré parce que vous n'avez pas fourni un chemin complet au
programme mais parce que vous n'avez jamais défini votre variable
d'environnement PATH, ou vous ne l'avez pas définie comme quelque
chose de sûr. Puisque Perl ne peut pas garantir que l'exécutable en
question n'est pas lui-même sur le point de se retourner pour exécuter
un autre programme qui dépend de votre PATH, il s'assure que vous avez
défini le PATH.



Que faut-il faire pour remédier à celà ?



Je me souviens aussi d'un exécutable « suidperl » qui doit avoir une
importance dans ton cas, mais c'est un peu flou dans mon esprit.

Autant que tu lises la page perlsec en entier. Elle est instructive.