web-dev-qa-db-fra.com

Ajout d'utilisateurs à des sudoers via un script shell

Est-il possible d'ajouter des utilisateurs au fichier sudoers via un script Shell? J'ai regardé autour de moi, je ne trouve toujours rien.

23
nickw444

Vous pouvez simplement echo (avec des privilèges élevés, bien sûr) directement dans le fichier /etc/sudoers:

Sudo -i
echo 'nickw444  ALL=(ALL:ALL) ALL' >> /etc/sudoers
#             ^^
#             tab

(notez le caractère de tabulation entre le nom d'utilisateur et la première ALL)

Ou, pour un script:

#!/bin/bash
# Run me with superuser privileges
echo 'nickw444  ALL=(ALL:ALL) ALL' >> /etc/sudoers

Enregistrez ensuite dans somefile.sh, chmod a+rx et exécutez Sudo ./somefile.sh à partir d'une fenêtre de terminal.

Pour ajouter plusieurs utilisateurs, remplacez le script par ceci;

#!/bin/bash

while [[ -n $1 ]]; do
    echo "$1    ALL=(ALL:ALL) ALL" >> /etc/sudoers;
    shift # shift all parameters;
done

Ensuite, exécutez le script comme ceci (en supposant que vous l’ayez sauvegardé sous le nom addsudousers.sh):

Sudo ./addsudousers.sh bob joe jeff

c'est-à-dire séparés par un espace.

Pour lire les noms d'un fichier:

nickw444@laptop ~ $ Sudo ./addsudousers.sh `cat listofusers.txt`

listofusers.txt devrait également être séparé par des espaces.

Edit: Jappie Kirk indique à juste titre que vous ne pouvez pas appeler directement Sudo echo ... >> /etc/sudoers car la redirection >> est gérée par le shell, qui a déjà supprimé les privilèges de superutilisateur. Cependant, si vous exécutez un script contenant echo ... >> /etc/sudoers et que le script lui-même dispose des privilèges de superutilisateur, tout devrait bien fonctionner.

41
wchargin

Il y a aussi le groupe Sudo, et vous pouvez y ajouter des utilisateurs (pour les configurations courantes de /etc/sudoers)

6

sur RedHat Based Distributions use:

su - root

et entrez votre mot de passe, puis:

echo 'YOURUSERNAME ALL=(ALL:ALL) ALL' >> /etc/sudoers

ajouter l'utilisateur dans le fichier sudoers.

1
Mahdi Rashidi

Connectez-vous en tant que root à votre machine. L'utilisateur root est le seul à avoir le privilège d'ajouter un nouvel utilisateur.

Une fois que vous êtes connecté, vous pouvez maintenant essayer les commandes suivantes ci-dessous:

  1. Créez un nouvel utilisateur.

    adduser [nom d'utilisateur]

  2. Ajouter un mot de passe à l'utilisateur

    passwd [nom d'utilisateur]

  3. Accordez les privilèges root à l’utilisateur Modifiez le fichier visudo en tapant simplement

    entrez le code ici

Recherchez la ligne de code suivante: Root ALL = (ALL) ALL

Puis ajoutez ce code ci-dessous:

[username] ALL=(ALL) ALL

Le message original trouvera sur ce lien Centos 6 - Créer un utilisateur sudoers

0
Jur P

Une seule ligne pour créer un utilisateur avec mot de passe et dans le groupe Sudo.

useradd -p $ (openssl passwd -1MOT DE PASSE)NOM D'UTILISATEUR-s/bin/bash -G Sudo

0
Syed Abdul Qadeer

D'autres réponses, telles que la création d'un sous-shell, fonctionneront, mais risquent de ne pas fonctionner si vous souhaitez utiliser des vars environnementaux. Une alternative que j'ai trouvée a vraiment bien joué pour moi:

echo "%<user>      ALL=(ALL) ALL" | Sudo tee -a /etc/sudoers > /dev/null

Ceci étant dit, le recul est de 20/20 ... Si vous modifiez les sudoers via un script et non via visudo, je recommanderais sérieusement de créer une sauvegarde avec les droits et les fichiers appropriés, car vous pouvez perdre l’accès à tous les droits Sudo sans accès ou redémarrage etc.

Sudo cp /etc/sudoers /etc/sudoers.bak
0
Luke Exton