CentOSで特定のユーザのみ管理者にする
目次
やりたいこと
SSHでrootでのログインを不可とし特定のユーザのみrootになれるようにしたい。
その際にsuでパスワードなしでrootになることができ、sudoの際もパスワードなしで実行できるようにしたい。
対象ユーザをスーパーユーザにする
wheelグループに対象ユーザを追加する。
まずはrootでログインする。
gpasswdコマンドを使用して対象ユーザをwheelグループに追加する。
usermod -Gでもできるがいろいろ調べていたらお勧めしないらしい。
$ gpasswd -a kamakiri wheel
$ id kamakiri uid=1000(kamakiri) gid=1000(kamakiri) groups=1000(kamakiri),10(wheel)
特定ユーザ以外からsuを拒否する。
wheelグループ以外からsuを拒否するために/etc/pam.d/suファイルを編集
$ vi /etc/pam.d/su
#auth required /lib/security/$ISA/pam_wheel.so use_uid ↓コメントを外すだけ auth required /lib/security/$ISA/pam_wheel.so use_uid
wheelグループ以外のユーザでログインして再度suしてみる。
$ su - パスワード: [正しいパスワードを入力] su: 拒否されたパーミッション
ログインできない。
wheelグループのユーザでログインしてsuしてみる。
$ su - パスワード: [正しいパスワードを入力]
ログインできる。
特定ユーザはパスワードなしでsuできるようにする。
パスワードを聞かれないように/etc/pam.d/suファイルを編集
$ vi /etc/pam.d/su
#auth sufficient pam_wheel.so trust use_uid ↓コメントを外すだけ auth sufficient pam_wheel.so trust use_uid
wheelグループのユーザでログインしてsuしてみる。
$ su -
パスワードなしでログインできた。
sudoもパスワードなしで実行できるようにする
visudoコマンドを使用してファイルを編集
$ visudo
viが立ち上がるので下記を編集
# %wheel ALL=(ALL) NOPASSWD: ALL ↓コメントを外すだけ %wheel ALL=(ALL) NOPASSWD: ALL
wheelグループのユーザでsudoしてパスワードが聞かれなくなった!!
sshにrootでのログインを拒否
/etc/ssh/sshd_config を編集する
$ vi /etc/ssh/sshd_config
#PermitRootLogin yes PermitRootLogin no ← 追加
私の環境ではPermitRootLoginがコメントアウトされていたので下の行に追加しましたが、コメントアウトされていないのであればnoに変えたらいいと思います。
sshdの再起動
$ systemctl restart sshd
動作確認してみたところ見事rootでログインができなくなりました!