Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 wink


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
# 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
%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
# 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, 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 .

U-topic a écrit :

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 .

U-topic a écrit :

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 wink) :

# /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