web-dev-qa-db-fra.com

Comment puis-je exécuter une commande sudo comme sudo (!) Sans mot de passe? (CryPetSetUp doit être exécuté comme sudo afin d'utiliser le module de noyau 'Device-Mapper')

Résol

En plus de ne pas commenter la ligne #includedir dans/etc/sudoers, édition sudoers.d/myOverrides avec Sudo visudo -f /etc/sudoers.d/myOverrides, et utiliser la syntaxe que j'ai essayé d'abord, a fait le tour.

Et si vous ne voulez pas être un idiot comme moi, assurez-vous de remplacer le fichier en supprimant le fichier .tmp lorsque vous enregistrez Visudo et vous êtes sûr que votre syntaxe est correcte. Bien que ce n'était pas le problème ici, cela aurait pu être facilement ;-)


Je veux écrire un script shell qui doit démonter et fermer un conteneur Luks, en cours d'exécution Sudo cryptsetup luksClose XYZ.

Ce qui est spécial sur cryptsetup, est qu'il utilise le module de noyau device-mapper Pour gérer les conteneurs LUKS. Ce que je pourrais sortir du manuel est: il s'appuie sur ce module de noyau et il n'ya aucun moyen de contourner cela.

Cela signifie qu'il doit être exécuté en tant que sudo, le programme peut donc appeler ultérieurement le périphérique-mapper en tant que root. Mais vous pouvez également l'exécuter sans sudo sans erreurs, jusqu'à ce que le périphérique-mapper soit appelé.

J'ai essayé d'utiliser visudo pour arrêter le sudo à demander un PW, aussi longtemps Sudo cryptsetup est appelé.

D'abord en utilisant

user ALL=(ALL) NOPASSWD: /sbin/cryptsetup

mais j'ai réalisé que cela ne signifie pas que CryPetUp est dirigé comme sudo, mais cela ne nécessite plus que le sudo soit appelé. Que ce n'est pas en premier lieu.

Ensuite, j'ai essayé de le tromper en utilisant/sbin/crypsetup comme argument pour/bin/sudo

user ALL=(ALL) NOPASSWD:/bin/Sudo /sbin/cryptsetup

(À tout moment, la ligne a été annexée au bas du fichier sudoers pour en faire la dernière ligne interprétée)

Y a-t-il une autre façon de donner à mon compte d'utilisateur la permission d'exécuter "sudo cryptsttup lukscler xyz" tel quel, sans pw? (Ou quelque chose qui me manque dans le manuel CRYPETSEUP)

EDIT : J'utilise généralement PCMANFM pour gérer le conteneur, et cela ne nécessite pas de saisir un PW pour la fermeture d'un conteneur (juste pour le déchiffrement de l'OFC) Qu'est-ce que cette sorcellerie?

Edit 2 : S'il n'y a pas une réponse facile, je vais simplement exécuter le script en tant que root au démarrage et le faire attendre le clavier de l'utilisateur, au lieu d'utiliser des raccourcis clavier pour exécuter deux scripts ouverts/fermés séparés. Je suppose que cette façon, je n'ai rien à faire de Nopasswd du tout, ce qui est bon.

Mais j'aimerais savoir quand même.

Merci d'avance

1
hghtch

Votre première syntaxe pour l'utilisation sans mot de passe de CryPetUp est correcte. J'utilise cela pour un alias que j'ai créé pour suspendre le système:

me        ALL=(ALL:ALL) NOPASSWD: /bin/systemctl suspend

Je dois encore utiliser sudo dans mon alias: alias quit='Sudo systemctl suspend'

Je voudrais personnellement mettre la commande exacte que vous voulez, avec toutes les options, de sorte que vos privilèges de sudo soient limités à ce qui est nécessaire.

2
ajgringo619