Linux上でユーザ・グループの登録・削除・編集のコマンドをまとめてた。
それぞれのコマンドの説明を作るより、実際にケースに応じたコマンド操作の流れを記載した。
ユーザ5人にそれぞれグループを紐づけ登録しながら必要なコマンド・動きを確認していく。
コマンド操作以外で理解したいこと
- コマンドはなるべく正規表現を使いシンプルに見やすく
- 設定ファイルの動きの理解(/etc/skel/配下の.bashrcのコピー)
- 設定ファイルの環境変数(デフォルトファイル/etc/default/useradd 設定ファイル)の確認
- /usr/bin/passwdのSUIDの理解(小豆本P.182)
ユーザ・グループを作成する
【条件】
- ユーザ名は5人(Japanese, Chinese, Korean, American, Australian)
- 5人全員のプライマリーグループは"World"
- Japanese, Chinese, Koreanのセカンダリグループは"Asia"
- Americanのセカンダリグループは”North America”
- Australianのセカンダリグループは”Oceania, Asia"
- Japaneseのhome dir は "/home/tokyo"とログインシェルは/bin/bash (※↓)
※Rocky Linuxデフォルトのままだとデフォルトでログインシェルは、/bin/bashだがコマンド練習のため。
環境変種・設定ファイルも以下で確認する。
グループを先に作成
ユーザ登録する前にグループを先に作ります(World,Asia,North America, Oceania)
groupadd
コマンドの前に、まず現状確認。
# grep -E ^"World|Asia|North America|Oceania" /etc/group
#
(World,Asia,North America, Oceania)グループが存在しないことを確認。
groupadd
コマンドでグループを作成する。
[root@localhost ~]# groupadd World
[root@localhost ~]# groupadd Asia
[root@localhost ~]# groupadd North America
使い方: groupadd [オプション] GROUP
オプション:
-f, --force グループがすでに存在していたら正常終了します。
また GID が既に用いられていたら -g をキャンセル
します
-g, --gid GID この新規グループに GID を用います
-h, --help このヘルプを表示して終了する
-K, --key KEY=VALUE /etc/login.defs のデフォルトより優先される
-o, --non-unique 同じ GID を持つ複数のグループの作成を
許可します
-p, --password PASSWORD 新規グループにこの暗号化済パスワードを用いる
-r, --system システムアカウントを作成します
-R, --root CHROOT_DIR chroot するディレクトリ
-P, --prefix PREFIX_DIR directory prefix
[root@localhost ~]# groupadd NorthAmerica
[root@localhost ~]# groupadd Oceania
※上記の「North Amrica」の様にグループ名内のスペースは弾かれます。
ユーザアカウント作成
useradd
コマンドの前に、まず現状確認。
[root@localhost ~]# grep -E ^"Japanese|Chinese|Korean|American|Australian" /etc/passwd
[root@localhost ~]#
同じユーザ名がないことを確認。
それぞれのユーザのプライマリーグループ・セカンダリグループ/ホームディレクトリの指定などオプションを
使ってアカウント作成していく。
※長いので今回はJapaneseの一個だけアカウント作ります。
[root@localhost ~]# useradd -g World -G Asia -s /bin/bash -d /home/tokyo Japanese
[root@localhost ~]# passwd Japanese
ユーザー Japanese のパスワードを変更。
新しいパスワード:
よくないパスワード: このパスワードには一部に何らかの形でユーザー名が含まれています。
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
[root@localhost ~]#
Japaneseという名前のユーザアカウントを条件に従って作成。
同アカウントのホームディレクトリ配下は以下の様になっている。
[root@localhost ~]# ls -la /home/tokyo/
合計 12
drwx------. 3 Japanese World 78 10月 23 19:24 .
drwxr-xr-x. 19 root root 232 10月 23 19:24 ..
-rw-r--r--. 1 Japanese World 18 8月 2 16:41 .bash_logout
-rw-r--r--. 1 Japanese World 141 8月 2 16:41 .bash_profile
-rw-r--r--. 1 Japanese World 376 8月 2 16:41 .bashrc
drwxr-xr-x. 4 Japanese World 39 9月 26 08:21 .mozilla
これらの隠しファイルは、新規ユーザーアカウントが作成されると、その都度/etc/skel以下のファイルが
自動的に新規ユーザのホームdir内に作成される仕組みになってる.
ログインシェルであろうが、対話型シェルであろうが.bashrc
ファイルは、ユーザ作成した際に
必ず読み込まれるのでここで環境変数やエイリアスを定義しておくと非常に便利。
ユーザーアカウント確認
作成したユーザのユーザアカウント・グループ・パスワードが格納されているファイルを
正規表現で{passwd,group,shadow}
で見やすく書く。
# tail -n 1 /etc/{passwd,group,shadow}
==> /etc/passwd <==
Japanese:x:1017:1015::/home/tokyo:/bin/bash
==> /etc/group <==
Oceania:x:1018:
==> /etc/shadow <==
Japanese:$6$0XWdvS6TYlGykoh/$blom2WMksAjqMH8RqLKglAjuKfdkih7KAEDEknSWVI6aomQ8t55Qx0ZBl1sMWg4ud8HYaafdRlHAwS8biQev0.:19288:0:99999:7:::
/etc/default/useradd 設定ファイルに関して
useradd
コマンドは都度以下の設定ファイルからデフォルト値を参照している。
# cat -n /etc/default/useradd
1 # useradd defaults file
2 GROUP=100
3 HOME=/home
4 INACTIVE=-1
5 EXPIRE=
6 SHELL=/bin/bash
7 SKEL=/etc/skel
8 CREATE_MAIL_SPOOL=yes
9
この設定ファイルの環境変数でSHELL=/bin/bash
と定義されているため
useradd -s
オプションでデフォルトシェル指定する必要がない。
プライマリー・セカンダリーグループの紐づけは必要な時に都度追加編集予定