须藤在我的鱼壳中不断询问我的密码


19

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,并且正确记住了密码。只有当我使用默认的带壳时才不记得了。它在以前的Ubuntu版本中已经实现,但是不再。

更新:

我升级到13.05,然后魔术又开始工作了。现在它会询问我一次密码,停止询问一会儿,然后过一段时间再询问一次。



3
@warren:这不是重复的。我应该被要求输入密码,但是一旦输入一次,我就不需要一定的时间了。过去,我已经使用visudo更改了此时间,但现在无法正常工作了。
endolith

我认为您必须使用多个Defaults语句,而不是一个常见的分开的语句。
Stephanie

@Stephanie,我敢肯定,只有一个带有逗号分隔值的Defaults语句可以正常工作。
Zoredache

我看到您添加了类似的行Defaults:endolith timestamp_timeout=60,但您不在任何属于endolith的组中,根据此处的另一条评论。那么您使用的用户名是什么?请与whoami,并添加用户名代替endolithDefaults:endolith timestamp_timeout=60endolith ALL=(ALL) NOPASSWD: ALL
WIM

Answers:


15

@endolith:是的,它似乎只影响鱼类。我遇到了同样的问题,该问题是由sudo选项“ tty_tickets”引起的。在您的/ etc / sudoers文件中禁用它可以解决该问题。

以下将禁用tty_tickets:

Defaults        env_reset,!tty_tickets

这会带来负面影响吗?
endlith 2011年

1
“如果为远程用户提供SSH访问,请小心,因为如果禁用tty_tickets,可能会无意间允许他们与您共享提升的特权。” 来自ask.debian.net/questions/…– endolith
2011年

我向远程用户提供SSH访问,但仅对我自己开放,因此我认为这不会引起任何漏洞?
endlith 2011年

5

如果没有其他效果,请尝试sudo -i(单独使用)。只需输入一个密码即可为您提供root shell。


6
好点,但风险比要求稍高。
mbb 2011年

考虑到这是获得rootshell的“ Ubuntu方法”,我认为这是解决该问题的一种巧妙方法。每个命令仍被记录。
Broam 2011年

1
但是,它并不能真正解决问题,基本上只是一种忽略它的方法。
Zoredache

这是一种解决方法,而不是解决方案,但这很好,而且我不介意它是否自动为您提供一半的赏金。:)
endolith

1

我只需要输入一次密码,然后便会记住一段时间。

如果我猜到了,我敢打赌,关于您的一些事情 /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以杀死当前的时间戳文件。


find: '/var/run/sudo': No such file or directory
endolith 2011年

好吧,这是一个不好的信号,为什么不尝试创建它,并像上面那样设置所有权/权限。
Zoredache

或者您可以重新安装该软件包。
Zoredache

用突触重新安装了sudo,它仍然说
endolith 2011年

我在运行Ubuntu 10.10的VirtualBox上得到了同样的东西。中没有sudo文件夹/var/run。在此虚拟机中,它会按预期记住我的密码,因此这似乎不相关。在此虚拟机上visudo中唯一的东西是Defaults env_reset。它也说%sudo ALL=(ALL) ALL而不是%sudo ALL=(ALL:ALL) ALL
endlith 2011年

0

我会检查/etc/sudoers.d/目录。

您也可以尝试将sudo软件包降级到以前的版本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.