J'ai besoin de modifier à /etc/sudoers
partir d'un script pour ajouter / supprimer des éléments des listes blanches.
En supposant que j'ai une commande qui fonctionnerait sur un fichier normal, comment puis-je l'appliquer /etc/sudoers
?
Puis-je le copier et le modifier, puis faire visudo
remplacer l'original par la copie modifiée? En fournissant mon propre script dans $EDITOR
?
Ou puis-je simplement utiliser les mêmes verrous et cp
?
La question concerne davantage les problèmes potentiels que la simple recherche de quelque chose qui fonctionne.
echo "$USER ALL=NOPASSWD:/usr/bin/rsync" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/rsync')
.echo "$CONFIGLINE" | (EDITOR="tee -a" visudo)
-a
drapeau àEDITOR="tee"
: il ajoutera une ligne au fichier, non seulement écrasera la première ligne. Je n'ai pas compris le différent au début et je ne pouvais pas trouver le moyen d'ajouter. J'espère pouvoir trouver des gens quelque temps en le pointant directement ;-)Utilisez visudo pour cela avec un éditeur personnalisé. Cela résout toutes les conditions de course et les problèmes de "hack" avec la solution de Brian.
Ce script ajoutera la ligne "# Dummy change to sudoers" à la fin de sudoers. Pas de hacks et pas de conditions de course.
Version annotée qui explique comment cela fonctionne réellement:
la source
--enable-env-editor
, sinon il utilisera uniquement le respect de la variable de l'éditeur si elle fait partie d'un petit ensemble de valeurs connues.sudo -E
de la première commande.Vous devez apporter vos modifications à un fichier temporaire, puis utilisez visudo -c -f sudoers.temp pour confirmer que les modifications sont valides, puis copiez-le au-dessus de / etc / sudoers
la source
Sur Debian et ses dérivés, vous pouvez insérer un script personnalisé dans le
/etc/sudoers.d/
répertoire, avec des droits0440
- pour plus d'informations, voir /etc/sudoers.d/README .Cela pourrait aider.
la source
visudo est censé être l'interface humaine pour l'édition
/etc/sudoers
. Vous pouvez réaliser la même chose en remplaçant directement le fichier, mais vous devez vous occuper de l'édition simultanée et de la validation de la syntaxe. Attention auxr--r-----
autorisations.la source
Si vous
sudo
autorisez l'ajout d'entrées/etc/sudoers.d
, vous pouvez utiliser cette réponse de @ dragon788:https://superuser.com/a/1027257/26022
Fondamentalement, vous utilisez
visudo
pour vérifier le fichier avant de le copier/etc/sudoers.d
, vous pouvez donc être sûr de ne cassersudo
pour personne.Cela le vérifie et renvoie success (0) s'il est valide, vous pouvez donc l'utiliser avec
if
,&&
et d'autres opérations booléennes de script. Une fois que vous avez validé, copiez-le simplement/etc/sudoers.d
et cela devrait fonctionner. Assurez-vous qu'il appartient à root et qu'il n'est pas accessible en écriture par d'autres.la source
Configurez un éditeur personnalisé. Fondamentalement, ce sera un script qui accepte le nom de fichier (dans ce cas /etc/sudoers.tmp), et le modifie et l'enregistre en place. Vous pouvez donc simplement écrire dans ce fichier. Lorsque vous avez terminé, quittez le script et visudo se chargera de modifier le fichier sudoers pour vous.
la source
#!/bin/sh; echo "# my changes to sudoers" >> $1; exit 0
Il semble fonctionner pour moi.Beaucoup de réponses, travaillaient avec sudo pour yonks mais n'avaient pas besoin d'automatiser la configuration d'installation jusqu'à présent. J'ai utilisé un mélange de certaines des réponses ci-dessus, en écrivant ma ligne de configuration à l'emplacement /etc/sudoers.d include afin de ne pas avoir à modifier le fichier sudoers principal, puis j'ai vérifié la syntaxe de ce fichier, exemple simple ci-dessous:
Écrivez votre ligne dans un fichier d'inclusion sudoers:
Vérifiez que vos sudoers include file passé les vérifications de syntaxe visudo:
la source
Juste pour ajouter une option supplémentaire aux réponses ci-dessus, si la condition de concurrence n'est pas une préoccupation majeure, la commande suivante peut être utilisée pour éviter de copier manuellement un fichier modifié dans
/etc/sudoers
Cela garantira que le nouveau fichier est validé et installé correctement avec la mise à jour des autorisations.
Notez que s'il y a une erreur dans le
/tmp/sudoers.new
fichier, ilvisudo
demandera une entrée utilisateur, il est donc conseillé de le vérifier d'visudo -c -f /tmp/sudoers.new
abord.la source
Je pense que la solution la plus simple consiste à:
Créer un script addudoers.sh
et appelez-le avec les utilisateurs que vous souhaitez ajouter comme:
Pour une explication complète, voir cette réponse: Ajout d'utilisateurs aux sudoers via un script shell
Cordialement!
la source
Essayez de lui faire écho. Vous devez cependant l'exécuter dans un sous-shell. Exemple:
sudo sh -c "echo \"group ALL=(user) NOPASSWD: ALL\" >> /etc/sudoers"
la source
Cela a fonctionné pour moi en fonction de ce que d'autres ont publié ici. Quand j'utilisais le script d'autres personnes, cela ouvrait visudo pour moi mais ne ferait pas l'édition. Cela a rendu la modification nécessaire pour permettre à tous les utilisateurs, y compris les utilisateurs standard, d'installer java 7u17 pour safari / firefox.
Cela a ajouté le% tout le monde bla bla bla au bas du fichier sudoers. J'ai dû exécuter le script comme ça.
Bonne chance: D
la source