3 votes

Meilleur moyen d'exécuter une commande SSH distante nécessitant l'utilisateur root, mais pas en tant que root

J'ai du mal à exécuter la commande suivante :

 ssh someuser@lab-test "sudo /usr/local/scripts/user.sh add tstt7777 177700007 \"Test User 06\" "

Pour faire court, j'ai besoin d'exécuter le script user.sh script avec des privilèges ROOT en tant qu'utilisateur depuis une machine distante. Cependant, je ne veux pas que someuser puisse exécuter TOUTES les autres commandes, ouvrir un script ou avoir accès au système. L'utilisateur doit seulement exécuter ce script avec de multiples arguments dynamiques.

J'ai déjà géré l'échange de clés publiques, et j'ai ajouté des privilèges dans sudo :

#Sudo
someuser  ALL = NOPASSWD: /usr/local/scripts/user.sh

Mais je reçois l'erreur suivante :

sudo: sorry, you must have a tty to run sudo

J'ai examiné la fonction "Command=" de ssh, mais je crois comprendre qu'elle n'exécute que la commande spécifiée et ne permet pas de passer des arguments comme indiqué dans mon invocation.

Y a-t-il quelque chose que je manque pour que ma méthode fonctionne via sudo ?

Existe-t-il une meilleure méthode que je n'ai pas envisagée dans SSH ou BASH ?

5voto

CyberSkull Points 1445

Exécutez visudo et commentez comme ci-dessous :

#Default requiretty

1voto

SparX Points 1914

Il suffit d'ajouter le -t ( pseudo-tty )avec la commande ssh.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X