#1 Le 09/03/2008, à 20:26
- casimir
lancer un script avec sudo à l'interrieur
Bonjour, ca doit etre trés simple j'ai un script
#!/bin/bash
sudo /etc/init.d/apache stop
j'ai mis le script dans /usr/bin/stopapache.sh
puis
sudo chown root:root /usr/bin/stopapache.sh
open: Permission denied
* Stopping web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
httpd (pid 6572?) not running
open: Permission denied
ou j'ai essayer
sudo chown moi:moi /usr/bin/stopapache.sh
mais une fenetre terminal s'affiche et me demande de taper mon mot de passe,
c'est ce que je veux eviter.
si j'enleve le sudo dans le script ca me donne pas acces à l'arret d'appache.
Hors ligne
#2 Le 09/03/2008, à 22:14
- schaars
Re : lancer un script avec sudo à l'interrieur
Bonsoir
Pour ne plus avoir à taper le mot de passe quand tu tapes sudo /etc/init.d/apache stop la meilleure solution est d'éditer le fichier /etc/sudoers (avec visudo) pour qu'il ressemble à ça :
# Cmnd alias specification
Cmnd_Alias APACHE=/etc/init.d/apache
(...)
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL, NOPASSWD:APACHE
Grâce à cela l'utilisateur autorisé à taper sudo (membre du groupe admin) n'aura plus besoin de taper son mot de passe à chaque fois
Le linux des uns est l'OS/2 des autres (Thom E. Gemcity)
Hors ligne
#3 Le 09/03/2008, à 22:44
- casimir
Re : lancer un script avec sudo à l'interrieur
quand je valide j'ai ce message
Warning: undeclared Cmnd_Alias `APACHE2' referenced near line 24
What now? e
Warning: undeclared Cmnd_Alias `APACHE2' referenced near line 21
voici ce que donne visudo
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
# Host alias specification# User alias specification
# Cmnd alias specification
Cmnd_Alias APACHE=/etc/init.d/apache2
# DefaultsDefaults !lecture,tty_tickets,!fqdn
# User privilege specification
root ALL=(ALL) ALL# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
%admin ALL=(ALL) ALL, NOPASSWD:APACHE2
Dernière modification par casimir (Le 09/03/2008, à 22:44)
Hors ligne
#4 Le 09/03/2008, à 22:47
- schaars
Re : lancer un script avec sudo à l'interrieur
Tu as mis APACHE dans Cmnd_Alias et APACHE2 tout en bas !!!
Et il ne faut pas répeter la ligne %admin ALL=(ALL) ALL (du moins ça ne sert à rien) : la dernière suffit.
Le linux des uns est l'OS/2 des autres (Thom E. Gemcity)
Hors ligne
#5 Le 09/03/2008, à 23:06
- casimir
Re : lancer un script avec sudo à l'interrieur
pas bon le resultat
open: Permission denied
* Stopping web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
httpd (pid 24966?) not running
open: Permission denied
visudo
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
# Host alias specification# User alias specification
# Cmnd alias specification
Cmnd_Alias APACHE=/etc/init.d/apache2
# DefaultsDefaults !lecture,tty_tickets,!fqdn
# User privilege specification
root ALL=(ALL) ALL# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL, NOPASSWD:APACHE
si je met apache2 sur les deux ligne cmnd et %admin j'ai le message suivant lors de la validation visudo
Warning: undeclared Cmnd_Alias `APACHE2' referenced near line 20
Dernière modification par casimir (Le 09/03/2008, à 23:07)
Hors ligne
#6 Le 09/03/2008, à 23:11
- casimir
Re : lancer un script avec sudo à l'interrieur
il faut que je donne une action a apache dans la commande ? J'essaie.
Hors ligne
#7 Le 09/03/2008, à 23:33
- U-topic
Re : lancer un script avec sudo à l'interrieur
casimir ALL = NOPASSWD: /etc/init.d/apache2
Plutot nan?
Hors ligne
#8 Le 10/03/2008, à 01:41
- frafa
Re : lancer un script avec sudo à l'interrieur
lo
moi en general je fait ouvrir avec gksudo ce genre de choses...
#!/bin/bash
#_______________________________________________________________________________________________
#___________________________________________gksudo______________________________________________
if ! which gksudo >/dev/null 2>&1; then
echo -e "\033[1;47;31m Erreur: gksudo n'est pas installé. \033[0m" ;
exit 0
elif ! which xterm >/dev/null 2>&1; then
echo -e "\033[1;47;31m Erreur: xterm n'est pas installé. \033[0m" ;
exit 0
elif [[ ! "$SUDO_USER" || "$USER" != "root" ]]; then
echo -e "\033[1;47;31m Réouvrir en root. \033[0m" ;
xterm -title 'apache stop' -e "gksudo -w -l -k $0"
exit 0
else
echo -e '\E[37;44m'"\033[1m PWD:$PWD - HOME:$HOME - SUDO_USER:$SUDO_USER - USER:$USER - $0 \033[0m"
fi
#_______________________________________________________________________________________________
/etc/init.d/apache stop
Hors ligne
#9 Le 10/03/2008, à 02:37
- casimir
Re : lancer un script avec sudo à l'interrieur
pas de chance pour moi maintenant
sudo visudo
[sudo] password for justclo:
Sorry, user justclo is not allowed to execute '/usr/sbin/visudo' as root on justclo.
aie !
en mode rescue pour reparer, je pense que c'a va etre laseule solution.
Hors ligne
#10 Le 10/03/2008, à 11:46
- casimir
Re : lancer un script avec sudo à l'interrieur
J'ai essayer en mode rescue, j'ai bien acces a visudo
je modifie la ligne puis [ech] w
ca me met "recording" mais je n'arrive pas a quiter donc je reboot,
mais le fichier n'a pas été modifié,
dans visudo en mode text resue les touches ont des fonctionnalitées différentes c'est pas aussi facile que je pensait.
comment dois-je m'y prendre.
Hors ligne
#11 Le 10/03/2008, à 18:15
- U-topic
Re : lancer un script avec sudo à l'interrieur
passe pas par visudo...(si tu n'es pas a l'aise avec vim cest pas pratique...)
prend nano par exemple :
nano /etc/sudoers
Ou alors pour quitter dans vim tu tapes (apres ta modif)
ctrl+c puis :x
Hors ligne
#12 Le 10/03/2008, à 18:28
- Peat.hagore
Re : lancer un script avec sudo à l'interrieur
( Ce sujet m'interresse, je suis sous fluxbox, et pour eteindre directement ma machine, je suis obligé de passer par Sudo, donc je fais un petit UP pour l'avoir dans mes messages)
Hors ligne
#13 Le 10/03/2008, à 19:23
- schaars
Re : lancer un script avec sudo à l'interrieur
Voici un sudoers tout propre :
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults
Defaults !lecture,tty_tickets,!fqdn
# User privilege specification
root ALL=(ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
Normalement pour ne plus avoir à taper le mot de passe pour une certaine commande il suffit de créer un alias ALIAS dans lequel on met la liste des commandes et de mettre à la fin NOPASSWD:ALIAS .
casimir ALL= NOPASSWD:/etc/init.d/apache2
Plutot nan?
On doit pouvoir faire ça aussi mais c'est plus propre avec l'alias.
Voici mon sudoers qui, en plus de m'insulter lorsque je n'entre pas le bon mot de passe (avec l'option insults), me permet de taper sudo dhclient, sudo ifconfig et sudo iwconfig sans avoir beso
Le linux des uns est l'OS/2 des autres (Thom E. Gemcity)
Hors ligne
#14 Le 10/03/2008, à 19:24
- schaars
Re : lancer un script avec sudo à l'interrieur
Voici un sudoers tout propre :
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults
Defaults !lecture,tty_tickets,!fqdn
# User privilege specification
root ALL=(ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
Normalement pour ne plus avoir à taper le mot de passe pour une certaine commande il suffit de créer un alias ALIAS dans lequel on met la liste des commandes et de mettre à la fin NOPASSWD:ALIAS .
casimir ALL= NOPASSWD:/etc/init.d/apache2
Plutot nan?
On doit pouvoir faire ça aussi mais c'est plus propre avec l'alias.
Voici mon sudoers qui, en plus de m'insulter lorsque je n'entre pas le bon mot de passe (avec l'option insults), me permet de taper sudo dhclient, sudo ifconfig et sudo iwconfig sans avoir besoin de mettre mon mot de passe (pour changer des trucs sur ma connexion, pas pour afficher la liste des réseaux ) :
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
# Host alias specification
# User alias specification
# Cmnd alias specification
Cmnd_Alias NETWORK=/sbin/ifconfig, /sbin/iwconfig, /sbin/dhclient
# Defaults
Defaults !lecture,tty_tickets,!fqdn,insults
# User privilege specification
root ALL=(ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL, NOPASSWD:NETWORK
Enfin, l'ajout dans sudoers ne dispense pas de lancer la commande avec sudo !
Le linux des uns est l'OS/2 des autres (Thom E. Gemcity)
Hors ligne
#15 Le 10/03/2008, à 19:30
- Peat.hagore
Re : lancer un script avec sudo à l'interrieur
J'ai pas encore eu le temps de rellement comprendre toute cette histoire.
Mais si je comprends bien
on peut faire:
halt now - reboot -shutdown
sans passer par sudo?
Techniquement c'est similaire? ou avec des commandes de ce style, il y a des restrictions ?
En tous les cas, sujet tres interressant.
bonne soirée.
Dernière modification par Peat.hagore (Le 10/03/2008, à 19:33)
Hors ligne
#16 Le 10/03/2008, à 19:39
- schaars
Re : lancer un script avec sudo à l'interrieur
Non il faut encore utiliser sudo, sinon comment il pourra savoir que tu es autorisé à le faire, et dans ton cas il faut que tu mettes Cmnd_Alias ALIAS=/sbin/halt puis NOPASSWD:ALIAS .
Pour arrêter l'ordi tu tapes sudo halt now - reboot -shutdown et cette fois il ne te demandera plus ton mot de passe !
Ça marche sans restriction vu que c'est l'admin ("l'ami de root" sous ubuntu : le premier compte créé) qui modifie le fichier et qu'il peut faire ce qu'il veut.
Le linux des uns est l'OS/2 des autres (Thom E. Gemcity)
Hors ligne
#17 Le 10/03/2008, à 21:19
- casimir
Re : lancer un script avec sudo à l'interrieur
Bon c'est réparer, il fallait pour enregistrer et quiter
:wq
c'est écrit partout mais je faisait pas le
:
c'est bete ca !
bon faut que je remonte au début du post pour savoir quesque je voulait faire avec ca.
Ah c'est vu je veux pas que apache2 démmare au boot donc je fait deux lanceur un qui lance et un qui stop, sans qu'il me demande un mot de passe en console ou en graphique avec gksudo. maintenat que je sais réparer mn /etc/sudoers ca devrait allez.
Hors ligne
#18 Le 14/03/2008, à 13:08
- slyfog
Re : lancer un script avec sudo à l'interrieur
Bonjour,
dans la continuité : j'ai appliqué avec succès la technique du Cmnd_Alias sur des commandes normales, parcontre j'ai essayé de faire pareil avec une commande que j'ai dans /usr/local/bin qui est un lien symbolique vers un executable situé ailleurs, résultat :
myprog: dynamic-link.h:57: elf_get_dynamic_info: Assertion `! "bad dynamic tag"' failed.
BUG! Assertion failed, cleaning up.
Une idée de ce problème ?
Hors ligne
#19 Le 14/03/2008, à 20:08
- U-topic
Re : lancer un script avec sudo à l'interrieur
Pourquoi tu le fais pointer sur le lien symbolique et pas sur l'executable ?!
Hors ligne