用户名显示为 root 而不是登录的用户?

1 linux centos

我有一个 CentOS 服务器,我以jenkins用户身份登录,但用户名显示为root而不是jenkins

[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
Run Code Online (Sandbox Code Playgroud)

我检查了我发现的 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 ~]#
Run Code Online (Sandbox Code Playgroud)

当我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
Run Code Online (Sandbox Code Playgroud)

mat*_*tdm 5

啊,这很简单。您的jenkins用户定义/etc/passwd如下:

jenkins:x:996:993:Jenkins Automation Server:/var/lib/jenkins:/bin/false
Run Code Online (Sandbox Code Playgroud)

看到最后一个条目,它说/bin/false?没有为 jenkins 用户定义有效的 shell,因此会话立即终止 — 并且您将返回到您开始时使用的 root shell。

  • 不要求登录 shell 就可以解决这个问题。更改登录 shell 将是更糟糕的选择。 (2认同)
  • @Kusalananda 嗯;在我的测试中并非如此。它仍然默认尝试启动 `/bin/false` 作为 shell,除非你提供 `-s` 选项。 (2认同)