Can't su to user jenkins after installing Jenkins
LinuxUnixJenkinsLinux 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.