Pendant les jours chargés, j'aimerais courir
$ ./configure && make && sudo make install && halt
la nuit et aller au lit, en espérant que l'application serait automatiquement installée. Mais ce que je vois le lendemain, c'est l'écran où sudo me demande le mot de passe. Alors, comment pourrais-je exécuter sudo avec un mot de passe dans une ligne de commande, ou existe-t-il une autre méthode pour le faire?
halt
exécuter en tant que root.sudo
n'avez pas de délai d'attente de 15 minutes? Ne pourriez-vous pas exécuter, par exemple,sudo ls
ou quelque chose de similaire, entrez votre mot de passe, puis exécutez la commande ci-dessus, lessudo
privilèges étant toujours actifs? (Je ne peux pas tester cela pour le moment, sinon je posterais ceci comme réponse.)sudo
est configurable. Les personnes soucieuses de la sécurité (alias paranoïaques, comme moi) la mettent à zéro ... :-)Réponses:
Oui, utilisez le
-S
commutateur qui lit le mot de passe de STDIN:Donc, pour votre cas, cela ressemblerait à ceci:
bien sûr, remplacez-le
<password>
par votre mot de passe.la source
Vous pouvez remplacer votre ligne de commande par ceci:
$sudo su
$./configure && make && make install && halt
Votre mot de passe vous sera demandé immédiatement, puis le reste des commandes sera exécuté en tant que superutilisateur.
la source
sudo sh -c "./configure && make && make install && halt"
Plusieurs des autres solutions ont l'inconvénient d'être exécutées inutilement
./configure
et enmake
tant que root.C'est un peu compliqué, mais ça devrait marcher:
Notez l'utilisation de guillemets doubles pour permettre à l'utilisateur
$USER
d'être développé par le shell (non root).Je pourrais aussi ajouter un
sleep 60
avant lahalt
commande. J'ai parfois fait des choses comme celle-ci, m'attendant à ce que la commande soit exécutée pendant longtemps, mais quelque chose ne va pas et elle se termine immédiatement; lasleep
me permet de tuer la commande avant arrête le système. Ou vous pouvez utilisershutdown
avec un argument de temps.la source
Vous pouvez également configurer sudo avec
visudo
pour permettre à votre utilisateur d’utiliser make as sudo sans mot de passe.la source
Réglez HISTIGNORE sur " sudo -S "
Puis passez votre mot de passe en toute sécurité à sudo:
"HISTIGNORE" signifie ne pas enregistrer cette commande dans l'historique. C'est l'historique en mémoire ou le fichier "~ / .bash_history".
Par exemple, l’information ci-dessous dirige votre mot de passe en toute sécurité vers la commande sudo, sans conserver d’historique de votre mot de passe.
“-S”, signifie utiliser stdin pour le mot de passe,
“-K” signifie ignorer les informations d'identification mises en cache pour forcer sudo à toujours demander. Ceci est pour un comportement cohérent.
L'inconvénient de la méthode ci-dessus est que si vous voulez voir les commandes que vous avez exécutées dans l'historique plus tard, elles ne seront pas là. Une autre méthode consiste à mettre à jour le cache des informations d'authentification sudo (la valeur par défaut est activée avec un délai d'expiration de 5 minutes), puis à exécuter le sudo séparément. Mais l'inconvénient est que vous devez connaître la mémoire cache de 5 minutes.
Par exemple:
Remarque J'ai exécuté un sudo avant chaque commande pour vérifier que le cache sudo était mis à jour, la valeur par défaut étant 5 minutes. Oui, whoami ne devrait pas prendre 5 minutes, mais je pense qu'il pourrait tout aussi bien l'exécuter avant chaque commande pour plus de cohérence. Vous pouvez aussi mettre "export HISTIGNORE = ' sudo -S'"dans votre fichier ~ / .bashrc, puis chargez-le avec". ~ / .bashrc "ou déconnectez-vous puis connectez-vous. Cependant, je pense utiliser ceci à des fins de script, donc je le garderai en haut de tous mes scripts pour des pratiques de sécurité optimales. Setting" echo "" | sudo -S -v "à une variable à la place peut aussi être une bonne idée, alors exécutez simplement la variable avant chaque commande nécessitant des privilèges root, voir le commentaire de Janar. Le commentaire de" John T "devrait également inclure le paramètre" -k " , comme si vous exécutiez "sudo -S" sans "-k" et que le cache d'authentification sudo dispose déjà de vos informations d'identification (et qu'il est toujours valide, le cache d'authentification sudo par défaut est de 5 minutes), puis bash exécutera votre mot de passe sous la forme d'une commande, à savoir mauvais.
la source
Remarque: j'ai trouvé que cette méthode ne fonctionnait pas sur une version plus ancienne de sudo, en particulier "Sudo version 1.6.7p5":
Où que cette méthode fonctionne sur les anciennes et les nouvelles versions sudo:
la source
Vous pouvez le faire aussi:
la source
Si vous souhaitez prendre plus de précautions, vous pouvez créer un script, modifier les autorisations du fichier afin que seul root puisse lire et modifier, puis simplement l'exécuter.
Exemple:
1) Créez un fichier:
2) Collez ceci et enregistrez:
3) le rendre exécutable:
4) Modifiez les autorisations du fichier afin que seul root puisse le lire et le modifier:
5) Run:
Prendre plaisir ;-)
la source
Configurer sudo de cette manière est dangereux si quelqu'un découvre que sudo ne requiert aucun mot de passe pour votre compte. À moins que vous ne sachiez ce que vous faites, ne le faites pas. Je l'ai eu trop souvent à mon programme de formation A + local avec mon ordinateur expérimental ... -_-
Ce que dit John T. sonne bien cependant, sauf que le risque de trouver le mot de passe est toujours présent dans l'historique du shell. Ce que CarlF a dit semble meilleur, mais si une commande échoue, l’ordinateur fonctionnera toujours avec les privilèges de superutilisateur.
la source
Personnellement, je fais assez comme John T a répondu le 9 novembre 09 à 14h47, j'ai également amélioré le mien selon les indications de sa réponse, merci.
La différence, c’est que j’ai tendance à utiliser des variables, par exemple:
De cette façon, je peux facilement utiliser la variable mienne au lieu de sudo,
Cela vient assez bien avec des scripts plus longs. Je les utilise principalement pour les ordinateurs personnels de tiers, que je dois entretenir.
Je recommande également de faire attention sur:
la source
Le problème est résolu. Par exemple, pour l'utilisateur root:
la source