状況
Jenkinsをインストールすると、jenkins
ユーザーが作成され、/var/lib/jenkins
がjenkinsユーザーのホームディレクトリに設定されるはずです。ですが、たまにユーザーがちゃんと作成されているのに、sudo su - jenkins
しても jenkins ユーザーになれない時があります。
[root@jenkins-master-test ~]# sudo su - jenkins Last login: Mon Jan 29 15:19:20 JST 2018 on pts/0 [root@jenkins-master-test ~]#
こういう感じです。 Last login: Mon Jan 29 15:19:20 JST 2018 on pts/0
と出ていて一見ログイン出来ていそうに見えるのですが、次の行で [root@jenkins-master-test ~]#
となっていてユーザーが変わらず...という状況です。
まずは/etc/passwdを見てみる
ユーザー周りでなんかおかしい時はまず /etc/passwd
を見てみます。
[root@jenkins-master-test ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash # ...中略... jenkins:x:996:994:Jenkins Automation Server:/var/lib/jenkins:/bin/false
jenkinsユーザーは存在しているようですが、shellの設定が /bin/false
になっています。つまり、jenkins
ユーザーへのスイッチは出来ているが、シェルの起動は出来ていないという状態です。
jenkinsユーザーのシェルをbashにする
ということで、とりあえずjenkinsユーザーのシェルをbashにすればsuできるようになるかと思います。
[root@jenkins-master-test ~]# which bash /bin/bash [root@jenkins-master-test ~]# chsh jenkins -s /bin/bash # これでsuできるはず [root@nv-jenkins-master-test ~]# sudo su - jenkins Last login: Mon Jan 29 17:51:56 JST 2018 on pts/0 -bash-4.2$
Ansibleでchshの設定をしたい場合
Ansibleでシェルを設定したい場合はこういう感じです。
- name: jenkinsユーザーのシェルをbashに変更 user: name=jenkins state=present shell=/bin/bash
Jenkinsを構築するAnsibleをちょこちょこかいてGitHubに乗っけてあるので参考にどうぞ。
まとめ
- suとかユーザー周りでおかしい場合はまず
/etc/passwd
を確認 - jenkinsユーザーが存在しているのに
sudo su - jenkins
出来ない場合は、シェルの設定を疑う