![使用“sudo su -”进行无密码更改用户](https://linux22.com/image/754782/%E4%BD%BF%E7%94%A8%E2%80%9Csudo%20su%20-%E2%80%9D%E8%BF%9B%E8%A1%8C%E6%97%A0%E5%AF%86%E7%A0%81%E6%9B%B4%E6%94%B9%E7%94%A8%E6%88%B7.png)
我希望在我的服务器上,用户可以以无密码的方式fox
成为/更改用户(用户没有密码,他们使用 SSH 密钥登录)::user42
fox
srv6:/etc# grep user42 /etc/sudoers
fox ALL=(ALL:ALL) NOPASSWD: /bin/su user42
srv6:/etc#
如果他们这样做,效果会很好sudo su user42
:
fox@srv6:~$ sudo su user42
user42@akd6:/home/fox$
但如果我尝试使用sudo su - user42
NOPASSWD 清除 shell,则不起作用
fox@srv6:~$ sudo su - akd
[sudo] password for fox:
答案1
它不会起作用,因为sudo su - user42
它不映射到您在规则中授予的内容。该规则不包含破折号-
,因此它不映射。
你不妨这样做:
fox ALL=(user42) NOPASSWD: ALL
授予 fox 以 user42 身份执行任何操作的权限,无需密码,
然后在sudo -ui user42
哪里-i
-i, --login 将目标用户的密码数据库条目指定的 shell 作为登录 shell 运行。这意味着登录特定的资源文件(如 .profile 或 .login)将被 shell 读取。
我相信这是你想要的结果。