我有两个用户dev
,但tomcat
他们都没有密码。
我怎样才能允许dev
1做su - 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