允许无密码用户更改为另一个无密码用户

允许无密码用户更改为另一个无密码用户

我有两个用户dev,但tomcat他们都没有密码。

我怎样才能允许dev 1su - tomcat而不需要他输入任何凭据?

1使用 ssh 密钥文件连接

答案1

如果您想要的是允许dev运行任意命令tomcat,那么就不用担心su,坚持使用 sudo 。将以下行添加到sudoers文件中(使用visudo命令):

dev ALL = (tomcat) NOPASSWD: ALL

sudo -iu tomcat以用户身份运行dev以运行登录 shell tomcat

答案2

您已将 sudo 添加到标签中。在 sudoers 文件中,您可以将 dev 添加到允许的用户,并且如果您愿意,还可以限制允许他们运行的命令,并且不需要密码。然后他们所要做的就是输入“sudo su - tomcat”。

运行visudo以添加以下行:

dev ALL = NOPASSWD: /usr/bin/su - tomcat

sudoers 的 man 文件中有更多信息和示例。

答案3

这就是我最终这样做的方式。

我创建了文件/etc/sudoers.d/dev

包含:

# allow user dev to become user tomcat
# invoked with [dev@host ~]$ sudo su - tomcat
dev ALL = (root) NOPASSWD: /bin/su - tomcat

更改了文件权限chmod 0440 /etc/sudoers.d/dev

在 dev 中创建了一个别名.bashrc alias tomcat='sudo su - tomcat'

这使得 dev 用户能够成为 tomcat 用户,而无需通过tomcat在命令行中键入(或实际上拥有)密码。

答案4

我一直在使用 sudo 的内置用户假设工具,

在哪里

  • dev是 sudoer 用户名,或者
  • dev是 sudeoer 组名称(sudo 配置调用此%dev
  • 并且tomcat是目标用户

/!\ 注意,在visudo写入之前始终使用 验证 sudo 的配置文件,或者始终使用 编辑 sudo 的配置文件visudo。无效的 sudo 配置文件将使 sudo 处于损坏状态并阻止进一步调用。

sudo env EDITOR=nano visudo -f /etc/sudoers.d/runas-tomcat

#/etc/sudoers.d/runas-tomcat
dev ALL=(tomcat) NOPASSWD: ALL
%dev ALL=(tomcat) NOPASSWD: ALL

像这样使用 sudo 类似于如下。标志--set-home( -H) 是可选的,它$HOME通过在 中查找目标用户主页来进行纠正/etc/passwd。标志--shell( -s) 或--login( -i) 是可选的,-s使用你的shell 并应该有宾至如归的感觉,-i而是使用其中指定的目标用户 shell,/etc/passwd例如/usr/sbin/nologin拒绝登录;如果未提供-s-i,则 sudo 需要额外的非标志参数来指定要运行的命令。

dev@localhost ~ $ sudo --set-home --shell --user tomcat
tomcat@localhost /home/dev/ $ cd
tomcat@localhost ~ $

或更短的形式

sudo -u tomcat  echo whoami
sudo -Hsu tomcat  # enter tomcat with your shell and their home

相关内容