sudo切换到某个特定用户免密

在 Linux 里用 sudo 直接切换到某个特定用户(比如 sudo -u username -i)时不需要输入密码。


方法:visudo 配置免密

  1. 编辑 sudoers 文件
    用安全方式编辑:

root账户下操作

1
sudo visudo

这样会在保存时自动检查语法,防止配置错导致 sudo 崩掉。

  1. 添加免密规则
    假设当前登录用户是 alice,目标用户是 bob,想免密切换到 bob:

    alice ALL=(bob) NOPASSWD: ALL
    

    或者只允许执行 shell(更安全):

    alice ALL=(bob) NOPASSWD: /bin/bash
    

    如果是要模拟 sudo -u bob -i,可以允许 /bin/su

    alice ALL=(bob) NOPASSWD: /bin/su - bob
    
  2. 测试

    1
    sudo -u bob -i

    如果配置正确,这时不会再提示输入 alice 的密码。


安全注意点

  • 尽量限制命令范围,不要直接给 NOPASSWD: ALL,否则目标用户权限会被完全暴露。
  • 如果只是切换账户跑特定服务脚本,可以把命令路径写死。
  • 编辑 sudoers 时别直接用 nano /etc/sudoers,很容易因为语法错锁死 sudo。