Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
script avec permission root
Envoyé par: Zeurkk

Bonjour à tous.
Je voudrais creer un script que j'executerais en tant que simple utilisateur mais qui lancerais des commandes en tant que root.
Mais je ne vois pas comment faire.
J'ai creer le script en tant que root, mais en l'executant en tant que simple utilisateur, ça me met permision non accordés ( normal me dirait vous )
Alors comment je dois faire ?
Merce de vos reponses

Poste le Tuesday 29 March 2005 19:51:00
Répondre     Citer    
Re: script avec permission root
Envoyé par: Sve@r

Citation
Zeurkk
Bonjour à tous.
Je voudrais creer un script que j'executerais en
tant que simple utilisateur mais qui lancerais des
commandes en tant que root.
Mais je ne vois pas comment faire.
J'ai creer le script en tant que root, mais en
l'executant en tant que simple utilisateur, ça me
met permision non accordés ( normal me dirait vous
)
Alors comment je dois faire ?
Merce de vos reponses

Déjà, c'est tout à fait normal que le script que tu lances prenne tes droits et non les droits du propriétaire du script. Si cela n'était pas, les permissions n'auraient plus aucun sens. N'importe qui pourrait lancer "/bin/sh" qui appartient à root et il aurait un shell sous root.

Ensuite, il t'es possible de faire en sorte qu'un programme (pas un script, un programme compilé) soit lancé avec d'autres droits. C'est le cas du programme "/bin/passwd" qui se lance avec les droits de root pour pouvoir modifier ton mot de passe.
Pour ça, il faut donner le "setuid" au programme.
=> chmod 4111 prog (oui, 4 chiffres). Ce 4° chiffre placé en première position correspond aux droits spéciaux.
Une fois que c'est fais, quand tu fais "ls -l prog" tu vois "--s--x--x". Ce petit "s" signifie que le setuid est positionné. Avec ce setuid, quiconque lance "prog" lancera ce programme non pas en étant lui-même mais en étant le propriétaire du programme. Si ce propriétaire est "root", ben le programme sera lancé avec les droits de root.

Mais s'il t'es possible d'exécuter un programme en tant que "root" il ne t'es pas possible d'exécuter un script. C'est parce qu'un script n'est pas réellement exécuté, il n'est qu'interprété par le shell et le shell n'a pas les droits de root (CQFD).

Donc, pour que tu puisses lancer ton script avec les droits de root, faut que tu écrives un programme en C qui lance ce script... puis que tu compiles ce programme et que :
1) tu rends "root" propriétaire de l'exécutable
2) tu lui mets le setuid

Ce programme n'est vraiment pas compliqué
#include <unistd.h>
main(int argc, char *argv[], char *envp[])
{
// On modifie le nom du programme pour que le script ait la bonne valeur
// C'est pas vraiment propre mais ça marche
argv[0]="chemin/script.sh";

// On lance le script avec les arguments et l'environnement local
execve("chemin/script", argv, envp);
}

Une fois compilé, tu peux lancer le programme avec des paramètres. Ceux-ci seront transmis au script ainsi que l'environnement dans lequel tu évolues.

Voila.


Poste le Tuesday 29 March 2005 20:33:24
Répondre     Citer    
Re: script avec permission root
Envoyé par: Zeurkk

Merci beaucoup Sve@r :-)
Je vais voir avec ça

Poste le Tuesday 29 March 2005 20:42:03
Répondre     Citer    
Re: script avec permission root

Il existe aussi une solution qui utilise sudo qui permet de ne pas jouer la sécurité du système l'access et les droits d'un fichier.


Poste le Tuesday 29 March 2005 21:07:36
Répondre     Citer    
Re: script avec permission root
Envoyé par: Zeurkk

Je n'arrive pas a faire fonctionner le programme de Sve@r, il marche bien mais seulement quand je l'execute en tant que root. Pourtant j'ai bien positioné le setuid.
Sinon, comment marche "sudo" ?

Poste le Thursday 31 March 2005 19:45:28
Répondre     Citer    
Re: script avec permission root
Envoyé par: mute

pour sudo [lea-linux.org]

Poste le Thursday 31 March 2005 21:26:47
Répondre     Citer    
Re: script avec permission root
Envoyé par: Zeurkk

Merci beaucoup, ça marche nikel avec sudo !

Poste le Friday 1 April 2005 13:29:01
Répondre     Citer    
Re: script avec permission root
Envoyé par: Sve@r

Ben zut ... Normallement mon idée aurait du marcher.
En fait, mon idée était une copie (en moins bon) de "sudo"

Pour que mon idée marche bien, il faut
1) donner l'exécutable à "root"
2) lui mettre le setuid
Tout ça dans cet ordre (parce que, quand on donne l'exécutable à qqun le setuid disparait)

Mais c'est juste pour dire que ma solution est fonctionnelle même si elle est moins bonne que "sudo" !

Poste le Friday 1 April 2005 21:34:27
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
script avec permission root
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons