Modifier /etc/sudoers pour exécution d'un script

Bonjour.

J’ai écrit un script qui permet d’établir une connexion avec un modem ADSL usb fast 800 sur un abonnement wanadoo limité en temps de connexion. Le sujet se trouve ici : modem-sagem-fast-800-usb-t37506.html
Sur mon ordinateur il y a trois comptes. Il faut que ce script puisse être lancé depuis n’importe lequel des trois comptes (dont un compte est un compte pour le public de la bibliothèque dans laquelle je travaille) sans avoir à entrer de mot de passe. Je sais qu’il faut que je modifie le fichier /etc/sudoers mais pas exactement comment.

Voici le script :

#!/bin/bash

sudo br2684ctl -b -c 0 -a 8.35 
sudo ifconfig nas0 up 
sudo pppoe -A -I nas0
sudo pon dsl-provider

et aussi la commande

sudo poff -a

Merci de vos conseils.

Salut,

%privilegie ALL=NOPASSWD: /usr/local/bin/mon_script

En plaçant ton script en /usr/local/bin exécutable par le groupe “privilegie” cela devrait le faire :slightly_smiling:

Salut.

J’ai modifié le fichier sudoers

%connexion ALL=NOPASSWD: /usr/local/bin/mon_script

(j’ai appelé le groupe connexion)

# cat /etc/group
connexion:x:1004:laguespa,public,benevoles

J’ai placé mon script en /usr/local/bin et je l’ai rendu exécutable par le groupe “connexion”.

$ ls -l /usr/local/bin/activer_modem_fast800 
-rwxrwxrwx 1 laguespa connexion 110 19 févr. 18:35 /usr/local/bin/activer_modem_fast800

J’arrive à le lancer depuis tous le comptes mais la connexion ne se fait que s’il est lancé depuis mon compte (laguespa) qui en est le propriétaire.

Re,

Il faut également que les membres du groupe connexion aient les droits d’exécution des commandes contenues dans le script :slightly_smiling:

Quelque chose m’échappe.

lorsque je modifie /etc/sudoers de cette manière

# User privilege specification
root	ALL=(ALL) ALL
laguespa	ALL=(ALL) ALL
benevoles	ALL=(ALL) ALL
public ALL=(ALL) ALL

je peux me connecter avec mot de passe utilisateur et depuis tous les comptes, tandis qu’en modifiant le sudoers de cette manière c’est à dire en autorisant l’exécution des commandes écrites dans mon script sans mot de passe et pour mon compte…

# User privilege specification
root	ALL=(ALL) ALL
# laguespa	ALL=(ALL) ALL
# benevoles	ALL=(ALL) ALL
# public	ALL=(ALL) ALL

laguespa ALL=NOPASSWD: sudo br2684ctl -b -c 0 -a 8.35
laguespa ALL=NOPASSWD: sudo ifconfig nas0 up
laguespa ALL=NOPASSWD: sudo ifconfig nas0 up
laguespa ALL=NOPASSWD: sudo pon dsl-provider
laguespa ALL=NOPASSWD: sudo poff -a

je ne peux même plus activer la connexion depuis mon compte et j’ai (quand je lance le script en terminal) des retours d’erreurs de syntaxe qui correspondent aux lignes que j’ai ajoutées pour l’utilisateur laguespa.

$ /home/laguespa/Documents/bin/activer_modem_fast800 
>>> /etc/sudoers: syntax error near line 19 <<<
>>> /etc/sudoers: syntax error near line 20 <<<
>>> /etc/sudoers: syntax error near line 21 <<<
>>> /etc/sudoers: syntax error near line 22 <<<
>>> /etc/sudoers: syntax error near line 23 <<<
sudo: parse error in /etc/sudoers near line 19
sudo: no valid sudoers sources found, quitting
>>> /etc/sudoers: syntax error near line 19 <<<
>>> /etc/sudoers: syntax error near line 20 <<<
>>> /etc/sudoers: syntax error near line 21 <<<
>>> /etc/sudoers: syntax error near line 22 <<<
>>> /etc/sudoers: syntax error near line 23 <<<
sudo: parse error in /etc/sudoers near line 19
sudo: no valid sudoers sources found, quitting
>>> /etc/sudoers: syntax error near line 19 <<<
>>> /etc/sudoers: syntax error near line 20 <<<
>>> /etc/sudoers: syntax error near line 21 <<<
>>> /etc/sudoers: syntax error near line 22 <<<
>>> /etc/sudoers: syntax error near line 23 <<<
sudo: parse error in /etc/sudoers near line 19
sudo: no valid sudoers sources found, quitting
>>> /etc/sudoers: syntax error near line 19 <<<
>>> /etc/sudoers: syntax error near line 20 <<<
>>> /etc/sudoers: syntax error near line 21 <<<
>>> /etc/sudoers: syntax error near line 22 <<<
>>> /etc/sudoers: syntax error near line 23 <<<
sudo: parse error in /etc/sudoers near line 19
sudo: no valid sudoers sources found, quitting

Une autre question. Est-il nécessaire de placer mon script dans /usr/local/bin et pourquoi ?

Salut,

[quote]
Une autre question. Est-il nécessaire de placer mon script dans /usr/local/bin et pourquoi ?[/quote]

Tu mets ton script où tu veux, du moment qu’il est dans le path de tout le monde :slightly_smiling:

Ta manière de coder sudoers est incompréhensible pour moi. Je te fais parvenir en MP les miennes.

Salut.

Pas la peine, j’ai réglé le truc.
Je donne ici le fichier sudoers qui marche

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

Defaults	env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root	ALL=(ALL) ALL

# Permet à tous les utilisateurs du groupe connexion d'activer et de désactiver la connexion avec le modem sagem fast800 usb
%connexion ALL = NOPASSWD: /home/laguespa/Documents/bin/activer_modem_fast800
%connexion ALL = NOPASSWD: /usr/sbin/br2684ctl -b -c 0 -a 8.35
%connexion ALL = NOPASSWD: /sbin/ifconfig nas0 up
%connexion ALL = NOPASSWD: /usr/sbin/pppoe -A -I nas0
%connexion ALL = NOPASSWD: /usr/bin/pon dsl-provider
%connexion ALL = NOPASSWD: /usr/bin/poff -a

# Allow members of group sudo to execute any command
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d

J’ai utilisé les chemins absolus et j’ai enlevé le sudo avant chaque commande. Par contre dans mon script le sudo est présent.

Voici mon script

#!/bin/bash

sudo br2684ctl -b -c 0 -a 8.35
sudo ifconfig nas0 up 
sudo pppoe -A -I nas0
sudo pon dsl-provider

Pour la commande poff -a j’ai juste mis un applet au tableau de bord.

Merci en tous cas pour votre soutien.

A+