登录后立即 Sudo 要求输入密码

Tom*_*ime -4 sudo

如果您考虑一下,即使您刚刚登录机器并输入密码,sudo 也会询问您的密码,这有点愚蠢。

我意识到 sudo 和 /bin/login 是两种完全不同的机制,但是如果您的登录会话少于 30 秒,如果 sudo 不要求输入密码,那就太好了。

默认情况下,sudo 每 5 分钟不会要求输入密码超过一次。类似于将屏幕保护程序设置为在 5 分钟不活动后启动,这是 sudo 的合理默认设置。

有没有办法伪造 sudo 以便它认为我登录时超时尚未到期?

Jen*_*y D 14

这是不这样做的一个很好的理由:您并不总是使用密码登录。您可能正在使用 SSH 密钥登录。它可能是一个无密码的 SSH 密钥……而且它可能不是使用它的人。

通过要求您至少输入一次密码,系统可以防止此类事件的发生。

如果您仍然想破解它(我强烈建议不要这样做),您可以在/var/db/sudo/tomontime/登录时将新的时间戳写入适当的文件。如果您编写了一个执行此操作的程序,您可以将该程序设置为NOPASSWD在 sudoers 文件中运行,并将其链接到您的.profile.

我真的推荐它。


Hyp*_*ppy 6

sudo确实具有不要求所有命令或某个子集的密码的机制。只需NOPASSWD:/etc/sudoers(using visudo) 中添加命令声明即可。

不需要密码的问题在于,如果用户的会话受到物理或通过某些恶意脚本/应用程序/等的损害,您需要确保限制损害。sudo无需密码即可访问意味着任何拥有用户权限的人和任何应用程序现在都sudo可以访问。此外,您希望用户了解他们在做什么,并给予他们额外的鼓励,让他们尽职尽责。

如果您要设置 NOPASSWD,那么您就承认它有风险。


use*_*517 6

如果(默认情况下)您已tty_tickets启用,那么您将需要为正在使用 sudo 的每个 tty 提供密码。每个 tty 的超时都会保持更新,以更新时间戳目录中以 tty 命名的文件。如果您禁用了 tty_tickets,则它是用于所有 tty 的目录的时间戳。

在 CentOS 系统上,我必须为我的登录提供时间戳目录)是

/var/db/sudo/iain
Run Code Online (Sandbox Code Playgroud)

哪个有权限

drwx------. 2 root iain  4096 Aug 18  2014 iain
Run Code Online (Sandbox Code Playgroud)

检查它的内容

-rw-------. 1 root iain 48 Apr  8 17:34 0
-rw-------. 1 root iain 48 Mar 21 17:05 1
-rw-------. 1 root iain 48 Apr  5 09:04 2
Run Code Online (Sandbox Code Playgroud)

做你想做的唯一方法是更新相关文件上的时间戳,正如你所看到的,你不能没有root,我猜这回答了你的问题。

  • 我完全不相信这会是一个好主意,但可能有某种方法可以获得 pam_exec 或其他工具来增加这些文件的时间戳。 (2认同)