Can't su to user jenkins after installing Jenkins

LinuxUnixJenkins

Linux Problem Overview


I've installed jenkins and I'm trying to get into a shell as Jenkins to add an ssh key. I can't seem to su into the jenkins user:

[root@pacmandev /]# sudo su jenkins
[root@pacmandev /]# whoami
root
[root@pacmandev /]# echo $USER
root
[root@pacmandev /]# 

The jenkins user exists in my /etc/passwd file. Runnin su jenkins asks for a password, but rejects my normal password. sudo su jenkins doesn't seem to do anything; same for sudo su - jenkins. I'm on CentOS.

Linux Solutions


Solution 1 - Linux

jenkins is a service account, it doesn't have a shell by design. It is generally accepted that service accounts shouldn't be able to log in interactively.

I didn't answer this one initially as it's a duplicate of a question that has been moved to server fault. I should have answered rather than linked to the answer in a comment.

if for some reason you want to login as jenkins, you can do so with: sudo su -s /bin/bash jenkins

Solution 2 - Linux

Use the below command:

su -s /bin/bash jenkins

Solution 3 - Linux

When we installed a Jenkins its created a Jenkins user with = "/bin/false"

You will that information from cat /etc/password file.

cat /etc/passwd | grep jenkins
jenkins:x:995:993:Jenkins Automation Server:/var/lib/jenkins:/bin/false

the best way is already mentioned above in answer by @thekbb

su - jenkins -s /bin/bash

we can also switch with any other shell mentioned in /etc/shells file.

cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh

to make the changes permanently you can modify the /etc/passwd, but it's highly not recommended because its a service/application user like Apache,MySQL,Nginx.

jenkins:x:995:993:Jenkins Automation Server:/var/lib/jenkins:/bin/bash

Solution 4 - Linux

If you using jenkins inside docker. Then you should try the following.

  • First you need to run the jenkins container "docker start (container-name or container-id)"

  • Then run this command "docker exec -it (container-name or container-id) bash"

Now hopefully you will be using as a jenkins user.

Solution 5 - Linux

as root, enter su - jenkins

Also, check in /etc/passwd that user jenkins is allowed to logon: there should be something like /bin/bash or /bin/sh, certainly not /bin/false at the end of the line.

Hint: You don't use su and sudo at the same time.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsfendellView Question on Stackoverflow
Solution 1 - LinuxthekbbView Answer on Stackoverflow
Solution 2 - LinuxSudipto DasView Answer on Stackoverflow
Solution 3 - Linuxmahendra rathodView Answer on Stackoverflow
Solution 4 - Linuxashik ahmedView Answer on Stackoverflow
Solution 5 - LinuxrotscherView Answer on Stackoverflow