如何增加sudo密码记住超时?


61

我已经知道我需要调整/ etc / sudoers文件,但我想查看完整的信息以及不需要我使用vi编辑器的解决方案。

更新:永远不要尝试使用以外的其他东西来编辑文件visudo


1
您可以同时使用visudo来设置EDITOR env var :: sudo env EDITOR = nano visudo
好人

Answers:


86

运行sudo visudo并添加以下行:

Defaults    timestamp_timeout=-1

请参阅man 5 sudoers-1导致密码永不超时。您可以在数分钟内将数字更改为任意数字。

的手册页sudosudo -v“将sudo超时再延长5分钟”。

运行“ sudo visudo”而不是编辑文件将直接导致系统在提交更改之前先验证sudoers文件。例如,如果在某个地方留下了流浪字符,那么在保存并退出时,它会说“ sudoers文件中有错误,您想做什么?” ...因此给您机会重新进行编辑。这实际上只是在10分钟前发生在我身上。


20
是的,但是visudo在保存之前对sudoers文件运行一些基本的完整性检查。如果您vi直接使用文件弄乱了文件,则可能使自己无法使用sudo,从而使撤消更改变得非常困难。
nohillside

4
这些特权与其他系统一样,因此与Apple无关。visudo环绕系统默认编辑器(如果root已覆盖默认用户,我猜是root用户默认),所以与vi bar名称无关。在我的系统上(不是苹果顺便说一句),我得到了nano。尝试export EDITOR='/bin/nano'或使用任何喜欢的编辑器,然后使用visudo。
克里斯(Chris)

4
嗯...您不能使用root来更正它,因为您无法进入root,因为您已经塞满了sudo文件...这就是重点。
daviewales 2014年

1
以专业角色,您可以访问sudo,但没有root密码。您的服务器可能位于全国各地的数据中心中,因此很难访问单用户模式。但是,如果说您是专业人士,则可能不会收到这样的警告。关键是您应该向专业人士学习。不要寻找避免养成良好习惯的方法。然后,我们必须听听您在Stack Exchange和IRC上的疯狂呼声。
Bruno Bronosky '16

1
(也许对每个人来说都是显而易见的,但要补充):timestamp_timeout以分钟为单位,可能包含小数部分。
用户

3

真的小心有关修改/etc/sudoers直接!

例如,我直接尝试了上述建议:

sudo sh -c 'echo "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

这弄乱了我的/etc/sudoers文件(在CentOS Virtualbox VM上)。本来应该:

sudo sh -c 'echo -e "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

幸运的是,我可以访问root帐户,以root身份登录,使用visudo并修复了该问题!因此,我同意使用上述注释来visudo代替。


1

有关sudoers的所有信息,可以使用以下命令从终端中找到

man sudoers

您甚至可以使用简单的文本来编辑文件,但是priv使其变得困难。sudoers是-r--r----- (Octal 0440)

这表明Apple确实不希望您弄乱文件。这确实是操作系统的核心安全性。

编辑选项包括vi,emacs或我个人最喜欢的BBEdit。


5
设置这些特权是有原因的。设置它们是为了迫使您使用visudo而不是自己编辑文件。此外,这与OS X无关。它是标准* nix。另外,如果要使用非默认编辑器,只需$EDITOR在调用之前设置环境变量即可visudo。例如EDITOR=nano sudo visudo
daviewales 2014年

1

使用以下命令禁用sudo超时:

sudo sh -c 'echo "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

要使用此方法重新启用sudo超时:

sudo sed -i "/Defaults timestamp_timeout=-1/d" /etc/sudoers

8
从sudoers手册页:sudoers文件应始终由visudo命令编辑,该命令会锁定文件并进行语法检查。必须确保sudoer不会出现语法错误,因为sudo不会在语法上不正确的sudoers文件中运行。
Matteo 2014年

@Matteo好吧,只要您知道后果,您就可以在自己的财产上做任何喜欢的事情。在某些情况下,这是可以的,例如,我在新的 Mac构建上使用了它,因为自动化脚本的一部分没有有价值的数据。我建议对此答案进行编辑以提供警告。理想情况下,sudo应该有一种无需更改文件即可更改它的单线方式!
samthebest

1
当心,这是危险的建议。使用visudo代替。
Will Sheppard '18
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.