Linux コマンド ユーザー/グループ関連

Linux

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個以上に所属する。