LinuxのユーザーID、グループIDの最大値・最小値を確認する方法

目次

スポンサードリンク

Linuxのユーザーはそれぞれ、ユーザーID、グループIDを持っています。 シェルスクリプトなどで、Linuxユーザーを追加するプログラムを組む場合、現在登録されているユーザーの内、最大のユーザーIDを知りたいことがあります。

ユーザーIDは /etc/passwd ファイルに記録されています。 以下のコマンドで確認することができます。

[root@hostname ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin

1行が1ユーザーに対応しており、:(コロン)で区切られた以下7つのフィールドで構成されています。

  • ユーザー名: ログイン時に使用する名前
  • パスワード: 暗号化されたパスワード (シャドウパスワードは “x”)
  • UID: ユーザーID (0 から始まり、ユーザーごとに割り当てられる)
  • GID: グループID (所属するグループを表す)
  • ユーザー情報: 補足情報 (住所、電話番号など)
  • ホームディレクトリ: ホームディレクトリのパス
  • デフォルトシェル: ログイン時に使用するデフォルトのシェル

ユーザーIDの最大値を確認するコマンド

[root@hostname ~]# cat /etc/passwd | awk -F : '{print $3}' | sort -rn | head
65534
30612
30610
30609
30608

cat コマンドで /etc/passwd の内容を標準出力してパイプで awk コマンドにつなぎます。awk コマンドでは -F オプションで 区切り文字を コロン として、3列目のデータを取り出しています。

さらに、sort コマンドで降順にソートし、headコマンドで先頭行を取り出します。

結果を見ると、1行目には、nobodyユーザーのユーザーID「65534」があります。nobodyユーザーはデフォルトで存在することが大半のため、Linuxを利用するユーザーとしては「30612」のユーザーIDが最大ということになります。sortコマンドのオプションを -n だけにすれば最小値を確認できます。


Linuxコマンドについて学べるおすすめ書籍

Linuxコマンドについて徹底的に学べるUdemy講座
もう絶対に忘れない Linux コマンド【Linux 100本ノック+名前の由来+丁寧な解説で、長期記憶に焼き付けろ!】 icon