Le contexte
J'aime travailler en public sur mon ordinateur portable, mais j'aime aussi utiliser sudo sans mot de passe. Sur la base de ce que je sais maintenant, j'utiliserais l' NOPASSWD
option dans mon sudoers
fichier, mais bien sûr, n'importe qui pourrait utiliser sudo comme bon lui semble.
Une pensée importante qui me vient à l'esprit est que des programmes de verrouillage existent. Cependant, je préférerais utiliser un lecteur flash (et l'utiliser uniquement pour sudo) parce que (1) il est plus rapide, (2) plus facile que d'entrer mon mot de passe, et (3) je ne me soucie pas que les gens accèdent à mon contenu ni fassent du mal choses: l'ordinateur portable serait en public autour d'autres personnes, et la seule propriété intellectuelle sur mon ordinateur portable est un projet Angular très basique.
De plus, moi-même et d'autres personnes souhaiterons peut-être empêcher l'utilisation abusive de sudo sur un ordinateur qui ne fonctionne pas dans un environnement X ou Wayland. Mon travail actuel nécessite un navigateur Web moderne, mais si jamais j'ai la chance de ne pas utiliser X et simplement d'utiliser un multiplexeur, je le fais - mon ordinateur portable est un peu vieux et lent.
Question
Ce que je voudrais faire, c'est mettre un fichier clé sur un lecteur flash, et simplement brancher le lecteur flash lorsque je suis à l'ordinateur portable, et le retirer lorsque je m'éloigne de lui.
Voici donc mes trois questions dérivées de ce problème:
- Est-ce possible avec sudo tel quel?
- Sinon, pourrais-je écrire un programme qui me permette de le faire?
- Si oui, quelle langue serait la meilleure pour écrire ce programme?
(4. [Peut-être une question étrangère] Ce package pourrait-il être séparé ou devrait-il être un fork de sudo?)
Remarque
Si cela est pertinent, ma configuration est Arch Linux avec bspwm, aucun environnement de bureau. La plupart de mon travail est le développement web dans urxvt / vim et le contrôle avec Chrome.
rootpw
indicateur dans les/etc/sudoers
fichiers et en configurantpam_usb
la connexion root.Réponses:
Je ne suis pas sûr de comprendre pourquoi l'
NOPASSWD
option ne satisfait pas à elle seule vos exigences, mais si vous voulez exiger la présence du lecteur flash, je peux penser à quelque chose qui pourrait presque faire ce que vous recherchez.Il s'agit plus d'une solution de contournement, mais vous pouvez créer un utilisateur administratif local, par exemple
superuser
, et lui accorder dessudo
droits sans mot de passe , c'est-à-dire ajouter la ligne suivante à votre/etc/sudoers
fichier:Vous pouvez ensuite désactiver la connexion par mot de passe et configurer l'authentification SSH clé uniquement pour cet utilisateur, c'est-à-dire exécuter
passwd -l superuser
et ajouter la strophe suivante à votre/etc/ssh/sshd_config
:Créez ensuite une paire de clés SSH pour cet utilisateur. Ajoutez la clé publique à
/home/superuser/.ssh/authorized_keys
et mettez la clé privée sur votre lecteur flash. Ensuite, lorsque vous souhaitez utiliser lesuperuser
compte, branchez votre lecteur flash et ssh dans lesuperuser
compte à l'aide de votre clé privée. Et voilà! Vous avez maintenant sans motsudo
de passe pour votre utilisateur. Bien sûr, vous devrez toujours quitter vos sessions shell lorsque vous aurez terminé - débrancher le lecteur flash ne sera pas suffisant. Bien que je suppose que vous pouvez également configurer un crochet de précommande pour vérifier la clé privée et quitter automatiquement si elle n'est pas présente (ou si elle n'est pas valide).la source