sudo continue de me demander mon mot de passe en coquille de poisson

19

sudo dans Ubuntu ne cesse de me demander mon mot de passe pour chaque commande. Auparavant, je n'avais à saisir le mot de passe qu'une seule fois, puis il serait conservé pendant un certain temps. Cela a récemment changé, probablement après la "mise à niveau" vers Natty.

J'ai fait sudo visudoet réglé Defaults env_reset, timestamp_timeout = 60, essayé de redémarrer, mais cela ne fonctionne toujours pas. Comment puis-je réparer ça?

Après des suggestions ci-dessous, mon /etc/sudoersressemble à ceci:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults:endolith timestamp_timeout=60

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

#includedir /etc/sudoers.d

Mise à jour:

J'ai mis à niveau ma VirtualBox et elle a commencé à souffrir du même problème. À une supposition, j'ai couru bash, et j'ai essayé de sudo là-dessus, et le mot de passe est mémorisé correctement. Il est seulement quand j'utiliser mon shell par défaut du poisson qu'il ne se souvient pas. C'était le cas dans la version précédente d'Ubuntu, mais plus.

Mise à jour:

J'ai mis à jour vers 13.05 et cela a recommencé comme par magie. Maintenant, il demande mon mot de passe une fois, cesse de demander pendant un certain temps, puis demande à nouveau après un certain temps.

endolith
la source
doublon possible: superuser.com/questions/148665/…
warren
3
@warren: Ce n'est pas un doublon. Je devrais être tenu de saisir le mot de passe, mais après l'avoir entré une fois, je n'ai pas à le faire pendant un certain temps. J'ai changé cette quantité de temps avec visudo dans le passé, mais cela ne fonctionne plus.
endolith
Je pense que vous devez utiliser plusieurs déclarations par défaut, plutôt qu'une seule commune séparée.
Stephanie
@Stephanie, je suis certaine qu'avoir une seule instruction Defaults avec des valeurs séparées par des virgules fonctionne très bien.
Zoredache
je vois que vous avez ajouté une ligne comme Defaults:endolith timestamp_timeout=60, mais vous n'êtes dans aucun groupe appelé endolith, conformément à un autre commentaire ici. alors quel nom d'utilisateur utilisez-vous? Vérifiez avec whoami, et d' ajouter que le nom d' utilisateur à la place endolithdans Defaults:endolith timestamp_timeout=60ouendolith ALL=(ALL) NOPASSWD: ALL
wim

Réponses:

15

@endolith: Oui, cela ne semble affecter que les poissons. J'ai eu le même problème, le problème est causé par l'option sudo "tty_tickets". La désactivation de cela sur votre fichier / etc / sudoers résoudra le problème.

Les éléments suivants désactiveront tty_tickets:

Defaults        env_reset,!tty_tickets
Kadu
la source
Cela a-t-il des ramifications négatives?
endolith
1
"Soyez prudent si vous offrez un accès SSH aux utilisateurs distants, car vous pourriez involontairement leur permettre de partager des privilèges élevés avec vous si vous désactivez tty_tickets." de ask.debian.net/questions/…
endolith
J'offre un accès SSH à un utilisateur distant, mais c'est uniquement pour moi, donc je suppose que cela ne cause aucune vulnérabilité?
endolith
5

Si rien d'autre ne fonctionne, essayez sudo -i(par lui-même). Cela vous donnera un shell racine après un mot de passe.

Broam
la source
6
grand point mais légèrement plus risqué que la demande.
mbb
Considérant que c'est la "façon Ubuntu" pour obtenir un rootshell, j'ai pensé que c'était un bon travail autour du problème. Chaque commande est toujours enregistrée.
Broam
1
Cela ne résout pas vraiment le problème, c'est simplement un moyen de l'ignorer.
Zoredache
C'est une solution de contournement plutôt qu'une solution, mais c'est bien et cela ne me dérange pas si cela vous donne automatiquement la moitié de la prime. :)
endolith
1

Je n'ai eu à saisir le mot de passe qu'une seule fois, puis il serait retenu pendant un certain temps.

Si je devine, je parierais que quelque chose à propos de votre /var/run/sudo répertoire est foiré. Ce répertoire est l'endroit où les fichiers d'horodatage sont stockés. Peut-être que / var / run est plein, peut-être que les autorisations ont été gâchées. Quoi qu'il en soit, regardez ce répertoire, je pense que votre problème est peut-être là.

Les autorisations sur mon dossier ressemblent à ceci.

# find /var/run/sudo/ -ls
1164242    4 drwx------   6 root     root         4096 Jan  1  1985 /var/run/sudo/
1179694    4 drwx------   2 root     www-data     4096 Jan  1  1985 /var/run/sudo/www-data
1164286    4 drwx------   2 root     myuser      4096 Jul 21 23:03 /var/run/sudo/myuser
1163399    0 -rw-------   1 root     myuser         0 Jul 13 22:42 /var/run/sudo/myuser/0
1163453    0 -rw-------   1 root     myuser         0 Jul 21 22:59 /var/run/sudo/myuser/2
1164309    0 -rw-------   1 root     myuser         0 Jul 21 23:03 /var/run/sudo/myuser/6
1163303    0 -rw-------   1 root     myuser         0 Jul 13 22:31 /var/run/sudo/myuser/5

Pour faire bonne mesure, vous pouvez également essayer de courir sudo -Kpour tuer vos fichiers d'horodatage actuels.

Zoredache
la source
find: '/var/run/sudo': No such file or directory
endolith
Eh bien, c'est un mauvais signe, pourquoi ne pas essayer de le créer et définir la propriété / les autorisations comme ci-dessus.
Zoredache
Ou vous pouvez simplement réinstaller le package.
Zoredache
sudo réinstallé avec synaptique et il dit toujours que
endolith
J'obtiens la même chose sur une VirtualBox exécutant Ubuntu 10.10. il n'y a pas de sudodossier /var/run. Dans cette machine virtuelle, il se souvient de mon mot de passe comme prévu, donc cela ne semble pas pertinent. La seule chose dans visudo sur cette machine virtuelle est Defaults env_reset. Il indique également %sudo ALL=(ALL) ALLau lieu de %sudo ALL=(ALL:ALL) ALL.
endolith
0

Je vérifierais le répertoire /etc/sudoers.d/.

Vous pouvez également essayer de rétrograder le package sudo vers la version précédente.

Michał Šrajer
la source