对于无法通过su正常登录的用户,有以下登录方法和sudoers.d的编写方式
nginx、jenkins等一般无法登录的用户的登录方法和sudoers.d的编写方式
以下是关于在sudoers文件中给jenkins用户授予仅执行sudo su命令权限的写法备忘录:
关于nginx和jenkins用户
安装这些中间件后,将会创建nginx用户和jenkins用户。
# cat /etc/passwd
nginx:x:993:988:Nginx web server:/var/lib/nginx:/sbin/nologin
然而,这些用户已经被设置了禁止登录的shell/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 shell登录。
# su -s /bin/bash - nginx
最終ログイン: 2022/05/20 (金) 14:59:31 JST日時 pts/0
$ whoami
nginx
使其能够通过sudo运行
然而,像nginx等用户并没有设置密码,因此基本上只能通过root用户以无需密码的方式执行所有命令。
因此,您可以通过编辑sudoers.d/目录下的文件,使普通用户也能够通过sudo以nginx或jenkins用户的身份运行命令。
使用 visudo 命令在 sudoers.d 目录下创建文件。
一定要使用visudo命令进行配置更改。
如果在错误的配置情况下保存,将导致无法使用sudo命令。
如果在错误的配置情况下保存,将导致无法使用sudo命令。
# visudo /etc/sudoers.d/nginx_sudoers
Cmnd_Alias NGINX = /bin/su -s /bin/bash - nginx
%グループ名 ALL=(ALL) NGINX
提示:
在Cmnd_Alias中指定允许sudo命令的别名。
允许对指定别名执行sudo命令的%组名组进行权限控制。
※请根据您自己的环境更改%组名。
保存并且没有出现错误信息,就可以了。
以通常用户身份登录
$ sudo su -s /bin/bash - nginx
[sudo] user のパスワード:
最終ログイン: 2022/05/20 (金) 15:25:51 JST日時 pts/0
[nginx@imade-gcp01 ~]$ whoami
nginx
我已经可以登录了!