Ajouter une ligne sous la ligne xxx

Fermé
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 - 4 juil. 2014 à 22:46
imer33 Messages postés 2 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 1 août 2014 - 1 août 2014 à 10:51
Bonjour,

Avec un script bash, je voudrais ajouter la ligne :
serveur ALL=NOPASSWD:

Juste en dessous de la ligne :
root    ALL=(ALL) ALL

du fichier /etc/sudoers

Comment dois je procéder ?

Merci.


5 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 408
4 juil. 2014 à 22:58
Salut,

sed -i.bak '/root    ALL=(ALL) ALL/a\serveur ALL=NOPASSWD:' /etc/sudoers
0
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
5 juil. 2014 à 00:34
Bonsoir,

J'ai fait :
root@debian:/home/serveur# sed -i.bak '/root    ALL=(ALL:ALL) ALL/a\serveur ALL=(root) ALL' /etc/sudoers
root@debian:/home/serveur#

Mais ça marche pas ?
root@debian:/home/serveur# cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults timestamp_timeout=0
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
root@debian:/home/serveur#

Merci.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 408
5 juil. 2014 à 07:57
Mais ça marche pas ?
Normal ;-\

# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
0
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
Modifié par xunil2003 le 5/07/2014 à 09:21
Bonjour,

Il n'existe pas ce fichier .
root@debian:/home/serveur# ls  /etc/sudoers.d/
README
root@debian:/home/serveur#


root@debian:/home/serveur# sed -i.bak '/root    ALL=(ALL:ALL) ALL/a\serveur ALL=(root) ALL'  /etc/sudoers.d
sed: impossible d'éditer /etc/sudoers.d: ce n'est pas un fichier régulier
root@debian:/home/serveur#



Quand je modifie le fichier /etc/sudoers avec nano ça marche.
Mais pas avec votre solution ?
Même en super-utilisateur ça marche pas.

Là je n'ai pas compris pourquoi il est dit :
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.

Le but pour moi est de réaliser un script bash d'auto-configuration .

Merci.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 408
5 juil. 2014 à 09:58
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 408
Modifié par zipe31 le 5/07/2014 à 14:00
Je t'invite aussi à lire la section "Including other files from within sudoers" de
man 5 sudoers
.

man -P 'less -p "^   Including other files"' 5 sudoers
0
xunil2003 Messages postés 761 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 24 mars 2024 14
Modifié par xunil2003 le 7/07/2014 à 22:04
Bonjour,

Finalement j'ai fait comme ceci pour mon serveur arm Debian Wheezy 3.0.4 :

cp -v /etc/sudoers /etc/sudoers.bak
echo
touch /tmp/sudoers.new
echo '
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults timestamp_timeout=0
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root ALL=(ALL:ALL) ALL
serveur ALL=(root) ALL # sudo avec un mot de passe demandé
#serveur ALL=NOPASSWD: ALL # sudo sans mot de passe demandé

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d' > /tmp/sudoers.new
cp -v /tmp/sudoers.new /etc/sudoers
rm -v /tmp/sudoers.new

Merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
imer33 Messages postés 2 Date d'inscription vendredi 1 août 2014 Statut Membre Dernière intervention 1 août 2014
1 août 2014 à 10:51
Bonjour,

Je te propose cette solution. Le script doit être exécuté en root :

# On récupére le n° de position de la ligne "root    ALL=(ALL) ALL" dans le fichier
noLigne=$(cat /etc/sudoers | grep -n ^root | grep ALL=\(ALL:ALL\)\ ALL | cut -d':' -f 1)
# Le premier grep récupére toutes les lignes qui commencent par root
# Le 2° grep filtre sur le reste de la chaine
# Le cut filtre la sortie pour ne garder que le n° de ligne
#
# Maintenant on utiliser sed pour ajouter la ligne aprés :
nouvelleLIGNE="serveur ALL=NOPASSWD:"
/bin/sed -i "${noLigne}a${nouvelleLIGNE}" /etc/sudoers
# Si on avait voulu insérer une ligne avant on aurait utiliser :
# /bin/sed -i "${noLigne}i${nouvelleLIGNE}" /etc/sudoers
#


J'ai testé sur ma machine et ca fonctionne.

:)
0