Linux のユーザー管理コマンド【id / useradd / usermod / userdel / passwd / groups】とグループ管理コマンド【groupadd / groupmod / groupdel】について実際の使用例をまとめました。
ユーザー/グループ 関連ファイル
/etc/passwd:ユーザーの一覧情報
※ /etc/passwdが無くなると、誰もログインできなくなります。
cat -n /etc/passwd
# 1--- 2 3 4 5--- 6---- 7--------
# root:x:0:0:root:/root:/bin/bash
# [1] ユーザー名 (ログイン名)
# [2] パスワード (/etc/shadow を使う場合は x で、使わない場合は暗号化されたパスワードが入る)
# [3] メイングループID
# [4] ユーザーID
# [5] ユーザーに付けられたコメント
# [6] home ディレクトリパス
# [7] ユーザーのログインシェル
# ・第二フィールドの先頭文字が * の場合、ログインを拒否する
# ・第二フィールドの先頭文字が ! の場合、ログインを拒否する
# ・第二フィールドの先頭文字が !! の場合、ログインを拒否する
/etc/group:ユーザーの所属するサブグループ情報
cat -n /etc/group
# 1----- 2 3- 4
# apache:x:48:
# [1] グループ名
# [2] グループのパスワード ( x はそのグループにログインするときにパスワードが必要という意味)
# [3] グループID
# [4] サブグループとして所属しているユーザーリスト
/etc/shadow:パスワードが記載されたファイル
※ パーミッションはない。rootユーザのみアクセス可能。
cat -n /etc/shadow
# 第二フィールドに「暗号化されたパスワード」が表示されていれば、パスワードが設定されている状態
# 第二フィールドが !! の場合、ユーザー作成後はしたがパスワードは未設定の状態
# 第二フィールドが ! の場合、ユーザーのログインを拒否する(ロック状態)
# 第二フィールドが * の場合、ユーザーのログインを拒否する(ロック状態)
# 第二フィールドの先頭3文字が $1$ の場合、MD5 で暗号化されている
# 第二フィールドの先頭3文字が $5$ の場合、SHA-256 で暗号化されている
# 第二フィールドの先頭3文字が $6$ の場合、SHA-512 で暗号化されている
ユーザー管理コマンド
id:ユーザーとその所属グループ情報を確認
id # 現在ログインしているユーザーの情報を表示
id cloud-user # cloud-user ユーザーの情報を表示
# 1------------------- 2------------------- 3--------------------------------------------------
# uid=1000(cloud-user) gid=1000(cloud-user) groups=1000(cloud-user),4(adm),190(systemd-journal)
# [1] ユーザID(ユーザ名)
# [2] メイングループID(メイングループ名) ※1ユーザーに対して1個のみ
# [3] サブグループID(サブグループ名) ※1ユーザーに対して複数指定可能
useradd:ユーザーの追加
・オプションを省略した場合、/etc/default/useradd の設定がデフォルトとして使用される。
・useradd -D で表示している内容は、/etc/default/useradd の中身である。
・useradd -D の SKEL=/etc/skel で指定されているディレクトリ配下がユーザー作成時に作成する
ホームディレクトリにコピーされる。
・/etc/login.defs の USERGROUPS_ENAB の値が
USERGROUPS_ENAB yes の場合、グループ名とユーザー名は同じ。グループIDとユーザーIDも同じ。
USERGROUPS_ENAB no の場合、グループIDは useradd -D で確認した GROUP の値になる。
・/etc/login.defs の CREATE_HOME の値が
yes であれば、ユーザー作成時にホームディレクトリも作成する。
no なら作成しない。
useradd -D # useraddコマンドの初期設定での動作内容の確認
useradd -D -g 0 # 初期設定の所属する主グループを 0(root) とする
useradd hogehoge # hogehoge ユーザーを追加する
useradd -c "text" hogehoge # hogehoge ユーザーを追加する コメントに text を指定
useradd -N hogehoge # hogehoge ユーザーを追加する グループを作成しない
useradd -u 2345 hogehoge # hogehoge ユーザーを追加する ユーザーIDを 2345 に指定
useradd -s /bin/nologin hogehoge # hogehoge ユーザーを追加する ログインシェルを /bin/nologin に指定
useradd -m hogehoge # hogehoge ユーザーを追加する ユーザー名と同じホームディレクトリを作成(/etc/login.defs の CREATE_HOME の値が yes なら指定不要)
useradd -M hogehoge # hogehoge ユーザーを追加する ホームディレクトリを作成しない
useradd -d /home/dir hogehoge # hogehoge ユーザーを追加する ホームディレクトリを /home/dir に指定
useradd -g 0 hogehoge # hogehoge ユーザーを追加する メイングループIDを 0 に指定
useradd -g root hogehoge # hogehoge ユーザーを追加する メイングループ名を root に指定
useradd -G 10,100 hogehoge # hogehoge ユーザーを追加する サブグループIDを 10と100 に指定
useradd -G wheel,users hogehoge # hogehoge ユーザーを追加する サブグループIDを wheelとusers に指定
usermod:ユーザーの設定変更
usermod -c "NewComm" hogehoge # hogehoge ユーザーを変更する コメントに NewComm を指定
usermod -e 2023-10-03 hogehoge # hogehoge ユーザーを変更する 有効期限を 2023-10-03 に指定
usermod -L hogehoge # hogehoge ユーザーを変更する ロックする (/etc/passwd の第二フィールドの先頭文字に ! を追加する)
usermod -U hogehoge # hogehoge ユーザーを変更する ロックを解除する(/etc/passwd の第二フィールドの先頭文字の ! を削除する)
usermod -g 0 hogehoge # hogehoge ユーザーを変更する メイングループIDを 0 に指定 ★-g のみだとサブも同0のみとなる
usermod -g root hogehoge # hogehoge ユーザーを変更する メイングループ名を root に指定 ★-g のみだとサブも同rootのみとなる
usermod -G 10,100 hogehoge # hogehoge ユーザーを変更する サブグループIDを 10と100 に指定
usermod -G wheel,users hogehoge # hogehoge ユーザーを変更する サブグループIDを wheelとusers に指定
usermod -aG 10,100 hogehoge # hogehoge ユーザーを変更する サブグループIDに 10と100 を追加
usermod -aG wheel,users hogehoge # hogehoge ユーザーを変更する サブグループIDに 10と100 を追加
userdel:ユーザーの削除
userdel hogehoge # hogehoge ユーザーを削除する
userdel -r hogehoge # hogehoge ユーザーを削除する ホームディレクトリも削除する
userdel -f hogehoge # hogehoge ユーザーを削除する ログインしていても強制的に削除する(セッションは残る?)
userdel:ユーザーのパスワード変更/ロック
passwd # 現在ログインしているユーザーのパスワードを変更する
passwd hogehoge # hogehoge ユーザーのパスワードを変更する (root ユーザーでのみ実行可能)
passwd -l hogehoge # hogehoge をロックする (/etc/passwd の第二フィールドの先頭文字に !! を追加する)
passwd -u hogehoge # hogehoge のロックを解除する(/etc/passwd の第二フィールドの先頭文字の !! or ! を削除する)
groups:自分が所属しているグループの確認
groups
グループ管理コマンド
groupadd:グループの追加
groupadd hogehoge # グループ hogehoge を追加
groupadd -g 2222 hogehoge # グループ hogehoge を追加(グループIDを2222に指定)
groupmod:グループの設定変更
groupmod -n NEWname hogehoge # グループ名を hogehoge から NEWname に変更する
groupmod -g 1234 hogehoge # hogehoge グループのグループIDを 1234 に変更する
groupdel:グループの削除
groupdel hogehoge # hogehoge グループを削除する
groupdel NEWname # NEWname グループを削除する
おまけ
ユーザーに関するTIPS
・ユーザーのログインシェルに /bin/false もしくは /bin/nologin を指定することで、対話的なログインを禁止できる。
・uid1000 未満のアカウントはシステムアカウントとして用意されている。
・ユーザーは必ず1つ以上のグループに所属する。サブグループは0個以上に所属する。