设置 Defaults env_reset 怎么实现的无密码验证
时间: 2024-09-15 13:05:27 浏览: 18
`Defaults env_reset` 是 sudoers 文件中的一个配置选项,它告诉 sudo 不要在切换用户时保留或复制环境变量,包括可能包含密码的 `SSH_AUTH_SOCK`。这本身并不会直接实现无密码验证,但它与 `PermitRootLogin` 或者其他安全策略结合使用时,有助于在某些非交互式场景下简化流程。
如果你想实现 root 用户的无密码 sudo 登录,通常需要做以下几个步骤:
1. **编辑 sudoers 文件**:通常位于 `/etc/sudoers` 或 `/etc/sudoers.d` 中。打开文件,添加如下行:
```bash
# Allow root to run commands without a password, but only for interactive sessions
Cmnd_Alias PASSWORDLESS_ROOT = /bin/bash, !/usr/bin/login, !/sbin/init
Defaults env_reset, secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
PermitRootLogin without-password
%admin ALL=(ALL) PASSWORDLESS_ROOT
```
这里 `%admin` 指的是 sudoers 文件中已有的组(如 admin 组),`ALL=(ALL)` 表示给予所有权限,`PASSWORDLESS_ROOT` 列出允许 root 无密码执行的命令。
2. **设置 SSH 认证**:如果使用 SSH 登陆,确保你有启用密钥对认证或其他形式的单因素身份验证,以便在需要时进行验证。
3. **非交互式模式**:对于自动化脚本或服务,通常需要交互式输入,因为环境变量不会自动传递,此时仍需输入密码。
4. **测试验证**:重启服务器或者在新的终端会话中尝试 `sudo -i`,看是否能成功切换而不提示密码。