やりたいこと
- 研修で使用するLinux環境で、受講者1名に対し1ユーザを割り当てたい。
- 作成するユーザに下記の設定を施したい。
- ユーザ名は固定文字+連番とし、受講者の人数分 + 講師分だけ作成する。
- パスワードはユーザ名と同値に設定する。
- 背景として、このユーザには直接SSH接続できない構成になっており、ユーザログイン以前の段階で一定のセキュリティが担保されている。
管理の簡便さを優先して、このような設定とした。
- 背景として、このユーザには直接SSH接続できない構成になっており、ユーザログイン以前の段階で一定のセキュリティが担保されている。
- 研修の都合上、
sudoが使用可能なように設定する
前提環境
- RedHat系ディストリビューション
- AlmaLinux9、Amazon Linux 2023で確認済
やり方
スーパーユーザ(root)の権限で、下記の5行を一気に入力・実行する。
(講師用+受講者30人分を一斉に作成する例)
for usertomake in `echo user{00..30}`
do
useradd -m -s /bin/bash -G wheel "${usertomake}"
echo "${usertomake}:${usertomake}" | chpasswd
done
-
30と記載している部分は、受講者の人数に合わせて変更する。 -
passwdコマンドでは対話式にパスワードを設定することとなるため、自動化が難しいことから、このような方法を取っている。 -
sudoを実行できる権限が不要の場合は、-G wheelを外す。
実行後は下記の通り、ユーザ・グループ・シャドウパスワード・ホームディレクトリが一括で設定される。
[root@AlmaLinux9-00 ~]# cat /etc/passwd | grep user[0-9][0-9]
user00:x:1002:1002::/home/user00:/bin/bash
user01:x:1003:1003::/home/user01:/bin/bash
(中略)
user30:x:1032:1032::/home/user30:/bin/bash
[root@AlmaLinux9-00 ~]# cat /etc/group | grep wheel
wheel:x:10:user00,user01,user02,user03,user04,user05,user06,user07,user08,user09,user10,user11,user12,user13,user14,user15,user16,user17,user18,user19,user20,user21,user22,user23,user24,user25,user26,user27,user28,user29,user30
[root@AlmaLinux9-00 ~]# cat /etc/shadow | grep user[0-9][0-9]
user00:$6$93KwZtVyBIPJo1XT$d472D/X8oV5M.o9R6RgzHw6ZGFGYPN/Mh99Pnjf2hInkvKosig2fGFRT0yKBFdeOwVjMNaiQ6Q8UWlZaaYVLZ0:20479:0:99999:7:::
user01:$6$csdM4FVvjEz0/ZKo$bhvWYdIJiJCy2LgnIvF71LIrK8q9kGGd0i2XIlOd77wVJiJ5d9QxRYdiL5BWW8EwDdSWZjHqPKkZ9FwWC712y/:20479:0:99999:7:::
(中略)
user30:$6$ROWlyPR1yEw0Zfyn$v4ShN.LYWFBdLVS/SmY16Dl3fuSQuNs/UGgY4OFFeJRFsMD4Ru.a6pKbv2d.ksZfEcXmMm9.tf0FyF2GqwbIf1:20479:0:99999:7:::
[root@AlmaLinux9-00 ~]# ls -l /home/ | grep user[0-9][0-9]
drwx------. 2 user00 user00 62 Jan 26 02:36 user00
drwx------. 2 user01 user01 62 Jan 26 02:36 user01
(中略)
drwx------. 2 user30 user30 62 Jan 26 02:36 user30
ユーザが不要になったら
同じくスーパーユーザ権限で下記を実行。
for usertodel in `echo user{00..30}`
do
userdel -r "${usertodel}"
done
一発でアカウント・ホームディレクトリごと削除できる。
[root@AlmaLinux9-00 ~]# cat /etc/passwd | grep user[0-9][0-9]
[root@AlmaLinux9-00 ~]# ls -l /home/ | grep user[0-9][0-9]
[root@AlmaLinux9-00 ~]#
一回の研修が終わったら、アカウントを削除して次回研修前に作り直すようにすると、前回研修で作ったファイルが残っていてネタバレ……なんてこともなく安心。
注意点
- あくまで検証や研修用で手っ取り早く複数ユーザが必要な場合に特化した方法である。実用環境での使用はセキュリティ的に問題があると思われる。
- パスワードが規則的すぎる。
-
echo "${usertomake}:${usertomake}" | chpasswdが実行されている瞬間は、プロセス一覧などからパスワードが筒抜けになる。
- 本番(商用)環境で一斉にユーザ追加したい場合には、一時ファイルを準備して
newusersコマンドを使うとかのほうが良い。