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.
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.
Il y a aussi le groupe Sudo
, et vous pouvez y ajouter des utilisateurs (pour les configurations courantes de /etc/sudoers
)
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.
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:
Créez un nouvel utilisateur.
adduser [nom d'utilisateur]
Ajouter un mot de passe à l'utilisateur
passwd [nom d'utilisateur]
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
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
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