J'ai un serveur Linux (basé sur Debian) configuré pour autoriser la session SSH à l'utilisateur 'Admin', mais pas la "racine" de l'utilisateur. Ces deux comptes sont liés en quelque sorte parce qu'ils partagent le même mot de passe.
Lors d'une session SSH en tant qu'administrateur, "sudo" est nécessaire pour exécuter des commandes, à moins que je ne passe à la "racine" de l'utilisateur.
J'ai des services sur lesquels j'ai besoin de courir de temps en temps, ou même au démarrage du système. J'utilise actuellement un mécanisme de clé privé/public pour exécuter des commandes à distance sur le serveur. Certaines des commandes sont typées manuellement, d'autres sont des scripts shell que j'exécute. Actuellement, le serveur demande toujours un mot de passe lorsqu'une commande utilise sudo.
Question: Comment la télécommande peut-elle exécuter comme utilisateur 'admin' sans fournir le mot de passe? Est-il possible d'utiliser une clé privée/publique pour satisfaire sudo? Ou peut-être même un moyen de démarrer des scripts shell comme l'utilisateur 'root'?
Est-il même possible d'éviter de devoir taper le mot de passe à l'aide de sudo? Sinon, sont-ils d'autres alternatives pour la situation comme la mienne?
vous pouvez dire au sudo de sauter le mot de passe pour une commande.
par exemple. dans /etc/sudoers
archemar ALL = (www-data) NOPASSWD: /bin/rm -rf /var/www/log/upload.*
cela me permettez d'utiliser
Sudo -u www-data /bin/rm -rf /var/www/log/upload.*
comme Archemar sans mot de passe.
Noter que
Sudo -u www-data rm -rf /var/www/log/upload.*
ne fonctionnera pas (demandera un mot de passe) comme rm
diffère de /bin/rm
.
Assurez-vous de modifier /etc/sudoers
Utilisation de la commande visudo
.
Une fois que vous avez atteint le niveau avancé, vous risquez d'avoir vos propres fichiers sudo dans /etc/sudoers.d
.
Si les comptes sont liés d'une manière ou d'une autre, cela n'a aucun sens pour permettre à SSH pour un et non l'autre. Voici ce que je ferais à la place:
authorized_keys
de racine, de sorte que dès qu'une connexion est faite avec cette clé, la commande est lancée.Ceci est sécurisé car de cette façon, l'appelant ne peut pas avoir de shell ni exécuter aucune autre commande (même s'il en fournit un).
Vous pouvez voir un exemple ici: https://stackoverflow.com/questions/402615/how-to-raistrict-ssh-utilisateurs-a-a-predfinefine-se-of-commands-after-login = avec le command=
Syntaxe. Vous pouvez également faire la même chose en incorporant la commande dans le certificat si vous utilisez des certificats au lieu des clés ou le ferons globalement à l'aide de l'option de configuration ForceCommand
Voir http://larstobi.blogspot.com/2011/01/restrict-ssh-access-aoone-command-but.html Pour un autre exemple (ce qui montre que vous devez prendre en compte Paramètres de votre commande)
Pour ajouter à la réponse d'Archemar, Sudo
demande le mot de passe de l'utilisateur exécutant Sudo
_, pas l'utilisateur La commande sera exécutée en tant que. Vous dites que les comptes "administrateur" et "racine" sont "liés" et partagent le même mot de passe. Si vous êtes arrivé à cette conclusion sur la base de Sudo
Accepter le mot de passe du compte "admin" (et le mot de passe Sudo
accepte la modification de la modification du mot de passe "admin 'est modifié), c'est normal Comportement pour Sudo
.