![sudo 在 fish shell 中不断询问我的密码](https://linux22.com/image/1279620/sudo%20%E5%9C%A8%20fish%20shell%20%E4%B8%AD%E4%B8%8D%E6%96%AD%E8%AF%A2%E9%97%AE%E6%88%91%E7%9A%84%E5%AF%86%E7%A0%81.png)
Ubuntu 中的 sudo 每次执行命令时都会要求我输入密码。以前,我只需要输入一次密码,然后密码就会被记住一段时间。这种情况最近有所改变,可能是在“升级”到 Natty 之后。
我已经完成sudo visudo
并设置Defaults env_reset, timestamp_timeout = 60
,尝试重新启动,但仍然不起作用。我该如何解决这个问题?
根据以下建议,我的/etc/sudoers
情况如下:
#
# 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
更新:
我升级了 VirtualBox,它开始遇到同样的问题。我猜,我运行了 bash,并尝试在其中使用 sudo,密码被正确记住了。只有当我使用默认 shell 时才会出现这种情况鱼它不记得了。在之前的 Ubuntu 版本中它记得,但现在不记得了。
更新:
我升级到 13.05,它又神奇地开始工作了。现在它要求我输入一次密码,过一会儿就不再询问,然后过一段时间再询问。
答案1
@endolith:是的,它似乎只影响 fish。我遇到了同样的问题,该问题是由 sudo 选项“tty_tickets”引起的。在 /etc/sudoers 文件中禁用该选项将解决问题。
下面的操作将禁用 tty_tickets:
Defaults env_reset,!tty_tickets
答案2
如果其他方法都不管用,那就试试sudo -i
(单独尝试)。输入一个密码后,它将为您提供 root shell。
答案3
我只需要输入一次密码,它就会被记住一段时间。
如果让我猜的话,我敢打赌你的/var/run/sudo
目录肯定出了问题。这个目录是存储时间戳文件的地方。也许 /var/run 已满,也许权限出了问题。不管怎样,看看那个目录,我怀疑你的问题可能就在那里。
我的文件夹的权限如下所示。
# 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
为了确保万无一失,您可能还想尝试运行sudo -K
以终止当前的时间戳文件。
答案4
我会检查 /etc/sudoers.d/ 目录。
您也可以尝试将 sudo 包降级到以前的版本。