nginx, jenkins などの普通にはログインできないユーザへのログイン方法と、sudoers.d の書き方
jenkins ユーザにsudo su
したいという依頼が。
sudo 権限を、 jenkins ユーザに su するだけの権限を付与したい
時のsudoersファイルの書き方をメモしておきます。
nginxやjenkinsユーザについて
これらのミドルウェアをインストールすると、nginx ユーザや jenkins ユーザが作成されます。
# cat /etc/passwd
nginx:x:993:988:Nginx web server:/var/lib/nginx:/sbin/nologin
ただし、このようなユーザは ログイン禁止のシェル/sbin/nologin
や/bin/false
が設定されており、
su コマンドでログインできなくなっております。
$ sudo su - nginx
最終ログイン: 2022/05/20 (金) 15:19:17 JST日時 pts/0
This account is currently not available.
- 【参考】: suできないユーザに切り替える方法
nginxユーザにsuさせる方法
参考の記事の通り、suコマンドのオプションに-s /bin/bash
を指定することで、bashのシェルでログインできます。
# su -s /bin/bash - nginx
最終ログイン: 2022/05/20 (金) 14:59:31 JST日時 pts/0
$ whoami
nginx
sudo で実行できるようにする
ただし、nginxなどのユーザはpasswordが設定されていないので、
基本的には全コマンドノーパスワードで実行できるrootユーザでしかsuできない状態です。
そこで、sudoers.d/
配下のファイルををいじって、一般ユーザでもsudoでnginxやjenkinsユーザにsuできるようにできます。
visudo で sudoers.d 配下にファイルを作成する
必ずvisudo
コマンドで設定変更するようにしましょう。
設定を間違えた状態で保存してしまうと、sudoが使えなくなってしまいます。
# visudo /etc/sudoers.d/nginx_sudoers
Cmnd_Alias NGINX = /bin/su -s /bin/bash - nginx
%グループ名 ALL=(ALL) NGINX
- ポイント:
- Cmnd_Alias で sudo を許可するコマンドのエイリアスを指定します。
- 指定したエイリアスに対する sudo 実行を %グループ名 のグループに対して許可します。
※ %グループ名 はご自身の環境に合わせて変更してください。
:wq
で保存して、エラーメッセージが出なければOKです。
一般ユーザでログイン
$ sudo su -s /bin/bash - nginx
[sudo] user のパスワード:
最終ログイン: 2022/05/20 (金) 15:25:51 JST日時 pts/0
[nginx@imade-gcp01 ~]$ whoami
nginx
ログインできるようになりました!