在Linux和Unix操作系统中,sudo是一种广泛使用的工具,它允许用户执行通常需要root权限的命令。通过将普通用户添加到sudo组中,可以实现这一功能,而不需要共享根用户的密码。每次使用sudo运行命令时,用户都会被提示输入sudo密码。对于随后在15分钟内运行的命令,即使它们需要sudo权限,也不需要再次输入密码。这是因为sudo有一个默认设置,即在15分钟内记住用户的密码。
15分钟后,任何sudo命令都会要求用户再次输入密码。这一行为实际上是一种安全特性,可以防止在终端保持打开状态时,其他用户在sudo不活动的情况下执行管理任务。然而,根据具体的安全需求,用户可能希望增加或减少sudo密码的超时限制。
要更改这一设置,用户可以执行以下步骤
1. 打开终端并运行以下命令来编辑sudoers文件
bash
sudo visudo
2. 这将在nano编辑器中打开/etc/sudoers文件。找到以下行
bash
Defaults env_reset
3. 在行尾添加逗号,然后设置新的超时时间,例如
bash
Defaults env_reset, timestamp_timeout=30
在这里,30表示新的超时时间,以分钟为单位。
4. 保存更改并关闭编辑器。在nano编辑器中,这可以通过按Ctrl + X完成,然后按Y确认保存,最后按Enter键。
从现在开始,sudo密码的超时限制将设置为30分钟。
请注意,直接在/etc/sudoers文件中进行更改可能会导致问题,因为该文件可能会被锁定以防止多个用户同时编辑。因此,建议在/etc/sudoers.d/目录中为每个用户创建单独的配置文件。
以下是正确的设置方法
1. 切换到/etc/sudoers.d/目录
bash
cd /etc/sudoers.d/
2. 为每个用户创建一个配置文件
bash
sudo visudo -f sk
在这里,“sk”应该替换为您的用户名。
3. 在文件中添加以下行
bash
Defaults timestamp_timeout=30
4. 保存文件并关闭编辑器。
如果您是唯一有权访问服务器的用户,您可能希望将sudo密码超时设置得更长。然而,如果您有多个用户,并且希望确保最高的安全性,您可能需要将超时值设置得更短。
始终要求输入sudo密码
如果您将“timestamp_timeout”设置为0,那么每次运行sudo命令时都会要求用户输入密码,即使是在同一会话中。这可以通过运行以下命令来实现
bash
sudo visudo
然后在编辑器中设置
bash
Defaults timestamp_timeout=0
如果您指定一个负值,例如“-1”,超时将永远不会过期,用户将始终需要输入密码。