Script + droit root

Script + droit root - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 20-01-2004 à 22:41:01    

Bonjour
 
Je voudrais continué un script que j?ai déjà commence.
Je voudrais faire appel à une commande dans le script qui fait appel à root pour continuer le reste du script avec les pouvoirs root.
Mais le  problème une foi  le mot de passe root entré, le script s?arrête.
Et après être redevenu simple utilisateur avec la commande "exit" le script continue sans les pouvoirs de root.
Je voudrais faire le script sans sudo.
 
Un exemple :
 
# !/bin/sh
#  
 
su
apt-get update
apt-get upgrade
 
#  
 
Merci pour l'aide.


Message édité par gwadboy le 21-01-2004 à 15:26:17
Reply

Marsh Posté le 20-01-2004 à 22:41:01   

Reply

Marsh Posté le 20-01-2004 à 23:06:19    

utilise expect, tu regarde dans /usr/share/doc , il y a des examples bien documentés.
 
A+

Reply

Marsh Posté le 20-01-2004 à 23:12:51    

Je ne vois pas de quel exemple dont tu parles.

Reply

Marsh Posté le 21-01-2004 à 03:33:38    

C'est pas installé par défaut en général ; faut installer le packet. Sinon, sudo est peut-être une meilleure solution...
 
En fait pour ce que tu veux faire, autant rendre ton script setuid... A la la limite ça sera même plus sûr, au moins t'as pas de mot de passe en clair dedans.


Message édité par matafan le 21-01-2004 à 03:35:34
Reply

Marsh Posté le 21-01-2004 à 08:58:46    

S'il n'y a qu'un ou deux commandes à exécuter tu peux faire :
 
su -c "apt-get update ; apt-get upgrade "
 
S'il y a beaucoup plus de choses à faire, le mieux est de créer un nouveau script avec les commandes à exécuter sous root et de le lancer par :
 
su -c root_script
 
Si le script de login de root (.profile ou autre suivant le shell) doit être exécuté il faut ajouter l'option - à la commande su :
 
su - -c root_script

Reply

Marsh Posté le 21-01-2004 à 09:16:32    

matafan > un script shell ne peut pas être suid

Reply

Marsh Posté le 21-01-2004 à 09:34:17    

apt-get install sudo et man sudo :)


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 21-01-2004 à 09:36:34    

$ apt-cache show expect
Description: A program that "talks" to other programs
 Expect is a program that "talks" to other interactive programs
 according to a script.  Following the script, Expect knows what
 can be expected from a program and what the correct response
 should be.  An interpreted language provides branching and high-
 level control structures to direct the dialogue.  In addition,
 the user can take control and interact directly when desired,
 afterward returning control to the script.
 
A+

Reply

Marsh Posté le 21-01-2004 à 10:55:05    

aigles a écrit :

S'il n'y a qu'un ou deux commandes à exécuter tu peux faire :
 
su -c "apt-get update ; apt-get upgrade "
[...]


 
Enfin une réponse sensée :jap:

Reply

Marsh Posté le 21-01-2004 à 10:56:35    

j'aurais même dit :
 
su -c "apt-get update && apt-get upgrade" :D
 
voire eventuellement un petit -u dans le upgrade, j'aime bien verifier ce qui va etre fait :D

Reply

Marsh Posté le 21-01-2004 à 10:56:35   

Reply

Marsh Posté le 21-01-2004 à 12:05:26    

Grand merci
 
Cette commande fonctionne parfaitement :

Code :
  1. su -c "apt-get update && apt-get upgrade"


 
Voila un script pour la compilation de mon noyau 2.4.24, comme je compile accès régulièrement pour test les différentes options et modules.
Quelqu?un pourrait me dire s'il est correct ou s?il peut-être amélioré.
Je voulais faire ce script sans utilisé « sudo » et c?est fait avec la commande su ?c "commande".
Je viens de me lancer dans le langage script, je ne suis pas programmeur loin de la.
Je suis Admin réseau débutant, mais je pense avec ce langage je pourrais faire quelque truc sympa.
 

Code :
  1. #!/bin/sh
  2. # Compilation de mon noyau
  3. # En toto
  4. cd /usr/src/linux
  5. make dep clean bzImage modules
  6. # En root
  7. # Installation du nouveau noyau, plus création de lien etc...
  8. # Elle n?est pas trop grande la commande ?
  9. # $1=version_du_noyau
  10. su ?c "cd /usr/src/linux && make modules_install && cp arch/i386/boot/bzImage /boot/vmlinuz-$1 && cp System.map /boot/System.map-$1 && cp .config /boot/config-$1 && mv /vmlinuz /vmlinuz.old && ln -sf /boot/vmlinuz-$1 /vmlinuz"
  11. # En root
  12. #
  13. su ?c "update-modules && lilo"
  14. # Fin


Message édité par gwadboy le 21-01-2004 à 15:31:28
Reply

Marsh Posté le 21-01-2004 à 12:11:42    

tu pourrais passer le version du noyau en argument, ca t'eviterait d'editer le script a chaque fois

Reply

Marsh Posté le 21-01-2004 à 12:19:41    

Excuse, je n'ai pas compris « tu pourrais passer la version du noyau en argument, ça t'éviterait d'éditer le script a chaque fois »
 
C'est  pas que pour la compilation du noyau je voulais faire le script qui appel les droit root.
 
Comme j'ai trois machines plus les machines de l'école alors, je voulais faire un script qui automatise toutes les taches que j'ai l'habitudes de faire après l'installation d'une debian woody toute fraîche.

Reply

Marsh Posté le 21-01-2004 à 12:37:42    

ce que je voulais dire :  
dans ton script de compilation du noyau, au lieu de mettre en dur 2.4.24, tu pourrais mettre $1 qui contient le 1er argument avec lequel est appele ton script
 
donc au lieu de le lancer avec  

Code :
  1. ./compil


tu pourrais faire  

Code :
  1. ./compil 2.4.24


 
comme ca a chaque nouvelle version de noyau, tu n'aurais pas a editer ton script
je suis plus clair ?  
enfin c'etait juste un conseil :)

Reply

Marsh Posté le 21-01-2004 à 12:55:14    

kelus a écrit :

ce que je voulais dire :  
dans ton script de compilation du noyau, au lieu de mettre en dur 2.4.24, tu pourrais mettre $1 qui contient le 1er argument avec lequel est appele ton script
 
donc au lieu de le lancer avec  

Code :
  1. ./compil


tu pourrais faire  

Code :
  1. ./compil 2.4.24


 
comme ca a chaque nouvelle version de noyau, tu n'aurais pas a editer ton script
je suis plus clair ?  
enfin c'etait juste un conseil :)  


 
J'ai apporte des modifications

Reply

Marsh Posté le 21-01-2004 à 12:57:25    

:jap:

Reply

Marsh Posté le 21-01-2004 à 15:27:30    

:)  
 

Code :
  1. #!/bin/sh
  2. # Compilation de mon noyau
  3. # En toto
  4. cd /usr/src/linux
  5. make dep clean bzImage modules
  6. # En root
  7. # Installation du nouveau noyau, plus création de lien etc...
  8. # Elle n?est pas trop grande la commande ?
  9. # $1=version_du_noyau
  10. su ?c "cd /usr/src/linux && make modules_install && cp arch/i386/boot/bzImage /boot/vmlinuz-$1 && cp System.map /boot/System.map-$1 && cp .config /boot/config-$1 && mv /vmlinuz /vmlinuz.old && ln -sf /boot/vmlinuz-$1 /vmlinuz"
  11. # En root
  12. #
  13. su ?c "update-modules && lilo"
  14. # Fin


Message édité par gwadboy le 21-01-2004 à 15:33:31
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed