こんにちは。Enjoy IT Life管理人の@nishina555です。
チーム開発の現場では『root権限を持たない一般ユーザーでサーバーにログインし、sudo権限を持つユーザーにスイッチしてからサーバー上で作業する』という手法が一般的です。
例えばsudo権限を持つユーザーをwebuserとする場合、sudo su - webuserもしくはsu - webuserでユーザー変更をします。
sudo su - webuserの場合はsudoを実行する一般ユーザーのパスワードが、su - webuserの場合はwebuserのパスワードが必要となります。
sudo su - webuserであれば、webuserのパスワードを知らなくてもユーザー変更ができるのでセキュアですが、sudoを一般ユーザーでも実行できてしまうという問題点があります。
そこで今回は『ユーザー変更の時のみsudo権限が与えられた一般ユーザー』および『sudo権限をもつユーザー』の作成手順について紹介します。
なお、検証サーバーはConoHaのVPS、検証OSはCentOS8.1を利用します。
目次
実装の方針
CentOSにはwheelと呼ばれるsudo権限を持つグループがあらかじめ用意されています。そこでsudo権限を持つユーザーを新しく作成し、wheelグループに所属させるようにします。
また、『sudo権限を持つユーザーに変更できる』というグループを新しく作成し、一般ユーザーはそちらに所属させるようにします。
今回はwebuserをwheelグループに、nishinaをwebadminsというグループに所属させたいと思います。
サーバーログイン
グループ・ユーザー作成はrootユーザーで実行します。
$ ssh -l root [IPアドレス]
グループを作成・編集する
まずは各ユーザーが所属するグループの作成とsudo権限の編集を行います。
一般ユーザー用グループ
一般ユーザーが所属するwebadminsのグループを作成します。
[root]
### グループ作成
$ groupadd webadmins
### グループの確認
$ getent group webadmins
→ 結果が表示されればOK
次にsudoの設定ファイルである/etc/sudoersの編集を行います。
ファイルはvisudoコマンドで編集します。
[root]
$ visudo
### webuserへの変更のみパスワードなしで実行できるように許可
%webadmins ALL=(ALL) NOPASSWD: /bin/su - webuser, /bin/su webuser
sudo実行用グループ
wheelグループ自体はすでに存在しているため、グループ作成はスキップし、/etc/sudoersの編集を行います。
visudoを実行し、以下の%wheelから始まる行をアンコメントします。
[root]
$ visudo
-#%wheel ALL=(ALL) ALL
+%wheel ALL=(ALL) ALL
もし、パスワード不要でsudoを実行させたい場合は以下の行をアンコメントします。
-#%wheel ALL=(ALL) NOPASSWD: ALL
+%wheel ALL=(ALL) NOPASSWD: ALL
ユーザー作成
ユーザーを作成し、先ほど用意したグループに所属させます。
一般ユーザー
[root]
### ユーザー作成
$ useradd -m nishina
### パスワード変更
$ passwd nishina
### webadminsグループにnishinaを追加
$ usermod -G webadmins nishina
# -G: グループへの追加(上書き)
### ユーザー情報確認
$ id nishina
→ webadminsグループに所属していればOK
uid=1000(nishina) gid=1001(nishina) groups=1001(nishina),1000(webadmins)
sudo権限付きユーザー作成
[root]
#### ユーザー作成
$ useradd -m webuser
### パスワード変更
$ passwd webuser
### ユーザー情報確認
$ id webuser
### wheelグループにwebuserを追加
$ usermod -G wheel webuser
# -G: グループへの追加(上書き)
### 確認
$ id webuser
→ wheelグループに所属していればOK
uid=1001(webuser) gid=1002(webuser) groups=1002(webuser),10(wheel)
動作確認
それぞれのユーザーに適切な権限が付与されているか確認します。
[root]
$ su - nishina
[nishina]
$ sudo su - webuser
→ webuserに変更できればOK
[webuser]
$ sudo su - root
→ rootに変更できればOK
一般ユーザーでSSH接続ができるか確認しておきましょう。
$ ssh -l nishina [IPアドレス]
→ サーバーに接続できればOK
まとめ
以上で「root権限を持たない一般ユーザーでサーバーにログインし、sudo権限を持つユーザーにスイッチしてからサーバー上で作業する」という環境を構築する手順の紹介を終わります。
- sudo権限の管理はvisudoで行う
- ユーザーの作成はuseraddで行う
- 所属グループの変更はusermodで行う
- ユーザーの所属グループの確認はidで行う
この記事がいいなと思いましたらツイッター(@nishina555)のフォローもよろしくお願いします!




