groupaddとuseraddのrオプションでシステムアカウントを作成する
groupaddとuseraddにrオプションを指定するとsystemアカウントになる
-r, --system create a system account
# groupadd -r r_group # groupadd -r r_group2 # grep r_group /etc/group r_group:x:998: r_group2:x:997:
IDが振られる範囲は/etc/login.defsのSYS_GID_MIN
とSYS_GID_MAX
で定義されているが、IDは降順に振られるようである
# # Min/max values for automatic gid selection in groupadd # GID_MIN 1000 GID_MAX 60000 # System accounts SYS_GID_MIN 201 SYS_GID_MAX 999
普通のグループはGID_MIN
、GID_MAX
で定義されている通り、1000以降が振られる
# groupadd normal_group # grep group /etc/group normal_group:x:1000:
ユーザも同じ感じ
# useradd -r -g r_group r_user # useradd -g normal_group normal_user # grep user /etc/passwd r_user:x:999:998::/home/r_user:/bin/bash normal_user:x:1000:1000::/home/normal_user:/bin/bash
IDが振られる範囲は同じく/etc/login.defsで定義されている。
# # Min/max values for automatic uid selection in useradd # UID_MIN 1000 UID_MAX 60000 # System accounts SYS_UID_MIN 201 SYS_UID_MAX 999
普通のユーザとの違いは、/etc/shadowを見るとパスワードの有効期限がブランクになっている
r_user:!!:17528:::::: normal_user:!!:17528:0:99999:7:::
また、/etc/login.defsのCREATE_HOME
の設定を無視してホームディレクトリが作成されない
$ ls /home normal_user
ただ、ログインできてしまう。
システムユーザとして使用するには、ログインシェルは使えないようにしたい。
ログインさせないために/sbin/nologin
は知ってたけど、メッセージを返さない/bin/false
というのもあるらしい
# /sbin/nologin This account is currently not available. # echo $? 1 # /bin/false # echo $? 1
本番環境ではメッセージを返さない/bin/false
、デバッグ環境は /sbin/nologin
とか使い分けると良さそう。
# useradd -r -g r_group -s /bin/false r_user