![用户名显示为 root 而不是登录的用户?](https://linux22.com/image/136889/%E7%94%A8%E6%88%B7%E5%90%8D%E6%98%BE%E7%A4%BA%E4%B8%BA%20root%20%E8%80%8C%E4%B8%8D%E6%98%AF%E7%99%BB%E5%BD%95%E7%9A%84%E7%94%A8%E6%88%B7%EF%BC%9F.png)
我有一个 CentOS 服务器,我以用户身份登录詹金斯但用户名显示为根代替詹金斯
[root@centos-7-1 ~]# sudo su - jenkins
Last login: Sat Jul 14 20:21:16 UTC 2018 on pts/0
[root@centos-7-1 ~]# hostname
centos-7-1
我检查了 sudoers 文件,发现了这个,我不确定它是否与问题有某种关系
[root@centos-7-1 etc]# cat group | grep jenkins
jenkins:x:993:
[root@centos-7-1 ~]# grep jenkins /etc/passwd
jenkins:x:996:993:Jenkins Automation Server:/var/lib/jenkins:/bin/false
[root@centos-7-1 ~]#
当我whoami
切换用户后执行时,我得到:
[root@centos-7-1 ~]# su - jenkins
Last login: Sat Jul 14 20:33:18 UTC 2018 on pts/0
[root@centos-7-1 ~]# whoami
root
答案1
啊,这很简单。您的jenkins
用户定义/etc/passwd
如下:
jenkins:x:996:993:Jenkins Automation Server:/var/lib/jenkins:/bin/false
看到最后一个条目,上面写着/bin/false
?没有为 jenkins 用户定义有效的 shell,因此会话立即终止 - 并且您将返回到开始时使用的 root shell。
答案2
/bin/false
因为用户的登录 shell 阻止用户通过正常方式登录系统。您不想更改此设置,因为这是一项安全措施。只需在切换到目标用户时请求另一个 shell:
sudo su -s /bin/bash jenkins
也就是说如果你的真的需要以用户身份使用交互式 shell 会话jenkins
。由于用户没有真正的登录 shell,看起来好像你实际上不应该以交互方式使用这个用户在正常操作期间。