Ajouter une ligne sous la ligne xxx

xunil2003 Messages postés 766 Date d'inscription   Statut Membre Dernière intervention   -  
imer33 Messages postés 2 Statut Membre -
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

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    sed -i.bak '/root    ALL=(ALL) ALL/a\serveur ALL=NOPASSWD:' /etc/sudoers
    0
  2. xunil2003 Messages postés 766 Date d'inscription   Statut Membre Dernière intervention   14
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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
  3. xunil2003 Messages postés 766 Date d'inscription   Statut Membre Dernière intervention   14
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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
  4. xunil2003 Messages postés 766 Date d'inscription   Statut Membre Dernière intervention   14
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. imer33 Messages postés 2 Statut Membre
     
    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