Je sais que je peux devenir root (super utilisateur) par le biais de la fonction su
mais je dois l'autoriser après avoir entré les commandes. Existe-t-il un moyen de devenir root et de l'autoriser (avec un mot de passe) en une seule ligne ?
Réponses
Trop de publicités?Et bien, la seule chose à laquelle je pense est
echo 'password' | sudo -S command
El -S
le drapeau fait sudo
lire le mot de passe à partir de l'entrée standard. Comme expliqué dans man sudo
:
-S, --stdin
Écrire l'invite dans l'erreur standard et lire le mot de passe à partir de l'entrée standard au lieu d'utiliser le terminal. Le mot de passe doit être suivi d'un caractère de nouvelle ligne.
Donc, pour exécuter ls
con sudo
les privilèges, vous feriez
echo 'password' | sudo -S ls
Notez que cela produira une erreur si votre sudo
Le jeton d'accès est actif, si vous n'avez pas besoin de saisir votre mot de passe parce que vous l'avez déjà fait récemment. Pour contourner ce problème, vous pouvez utiliser -k
pour réinitialiser le jeton d'accès :
echo 'password' | sudo -kS ls
Je ne connais pas de moyen de vous faire entrer dans un Shell racine réelle (comme le su
ou sudo -i
) font. Cela pourrait suffire à vos besoins.
El echo 'password' | sudo -kS ls
fonctionne, mais elle présente quelques inconvénients en matière de sécurité, dont la plupart ont déjà été mentionnés dans les commentaires de la réponse de terdon. Ainsi, je voudrais suggérer une approche différente :
S'il s'agit d'une seule commande que vous devez fréquemment exécuter, par exemple apt-get upgrade
vous pouvez configurer votre système de telle sorte que sudo someCommand
fait nicht nécessitent un mot de passe.
Pour ce faire, exécutez visudo
et entrez quelque chose de similaire à ce qui suit :
myusername ALL=(ALL) NOPASSWD: /usr/bin/apt-get upgrade
Notez que si vous entrez une commande sans un argument (par exemple sans upgrade
dans cet exemple), l'utilisateur sera autorisé à l'exécuter avec cualquier l'argument, donc à utiliser avec précaution.
Au lieu de supprimer complètement le mot de passe, vous pouvez augmenter le délai d'attente afin de ne devoir le taper que quelques fois par jour ; dans un terminal, exécutez :
sudo visudo
À la fin du fichier, ajoutez la ligne suivante pour définir un délai d'attente de 30 minutes (remplacez jsmith
avec votre nom d'utilisateur).
Defaults:jsmith timestamp_timeout=30
Vous pouvez utiliser le numéro que vous voulez ; -1
signifie qu'il n'y a pas de délai d'attente (déclenché seulement la première fois), et 0
signifie un délai d'attente instantané (déclenché à chaque fois que vous sudo
). Le délai d'attente par défaut est de 5 minutes.
- Réponses précédentes
- Plus de réponses