LinuxでユーザーのUIDとGIDを確認する方法: 完全ガイド

まずは id で現在のプロセス、id alice で指定ユーザーの登録情報を確認します。UIDだけは id -u、プライマリGIDだけは id -g、全グループIDは id -G です。LDAPやSSSDなどを使う環境では、/etc/passwdだけで全ユーザーを調べたことにはならないため、getent passwd alice も使います。

Linuxシステムでユーザーやグループを管理する上で、ユーザーID(UID)とグループID(GID)は基本的かつ重要な概念です。これらのIDはシステム上でユーザーとグループを一意に識別するために使用されます。ユーザーの権限管理やファイルアクセスの制御に直接影響するため、システム管理者や開発者はこれらのIDを効率的に確認し、理解する必要があります。本記事では、コマンドラインツールやシステムファイルを使用して、簡単にこれらのIDを確認する方法を詳しく解説します。

目次

UIDとGIDとは何か

UID(ユーザーID)とGID(グループID)は、Linuxシステムにおけるユーザーとグループを区別するための数値IDです。システムはこれらのIDを用いて、ファイルやディレクトリの所有者を管理し、アクセス権を制御します。

  • UID (ユーザーID): 各ユーザーアカウントに割り当てられる一意の数値。このIDによって、ユーザーがシステム上で実行可能な操作が決まります。UID 0は特権的なユーザーを表しますが、実際の操作はケーパビリティ、名前空間、SELinuxなどの制約にも影響されます。
  • GID (グループID): ユーザーグループごとに割り当てられる一意の数値。システム上でのグループは、特定の権限を共有するユーザーの集まりを指します。ユーザーは複数のグループに属することができ、そのグループが持つ権限を受け継ぎます。

Linuxでは、ユーザーの作成時に自動的にUIDとGIDが割り当てられますが、システム管理者は必要に応じてこれらの値を変更することができます。ファイルシステムにおいて、ファイルやディレクトリは所有者のUIDとGIDによって管理され、これに基づいてアクセス権が設定されます。

コマンドラインからUIDとGIDを確認する方法

Linuxシステムでは、コマンドラインツールを使用して簡単にユーザーのUIDとGIDを確認できます。最も一般的で直接的な方法は、idコマンドを使用することです。このコマンドは、現在のユーザーまたは指定したユーザーのUID、GID、所属するグループのIDを表示します。

`id`コマンドの基本的な使用法

idコマンドを引数なしで実行すると、現在のシェルセッションで操作しているユーザーのUIDとGID、およびそのユーザーが属するグループのIDが表示されます。

id

このコマンドは次のような出力を生成します:

uid=1000(username) gid=1000(groupname) groups=1000(groupname),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lxd),998(docker)

ここで、uidはユーザーID、gidはユーザーのメイングループのID、groupsはプライマリグループも含むグループのIDリストを表します。

特定のユーザーのUIDとGIDを確認する

特定のユーザーのUIDとGIDを確認するには、idコマンドにユーザー名を引数として渡します。

id username

例えば、ユーザー名がaliceのユーザーの情報を確認するには、次のように実行します:

id alice

この方法は、システム上の任意のユーザーの識別情報を簡単に確認するのに役立ちます。idコマンドはシステム管理者が頻繁に使用するツールの一つであり、ユーザーの権限設定やトラブルシューティングの際に非常に便利です。

/etc/passwdファイルからUIDとGIDを探す方法

Linuxシステムにおいて、/etc/passwdファイルはローカルのアカウント情報を保持します。LDAPやSSSDなど別の情報源から取得するユーザーが全員ここに記載されるとは限りません。このファイルからユーザーのUIDとGIDを確認することもできます。/etc/passwdファイルは、テキストベースで、人が読める形式で書かれており、各行に一人のユーザー情報が含まれています。

`/etc/passwd`ファイルの構造

/etc/passwdファイル内の各エントリは、次の形式で記載されています:

username:x:UID:GID:GECOS:home_directory:shell

ここで、

  • usernameはユーザー名を指します。
  • xはパスワードフィールドで、現在はシャドウパスワードシステムによって/etc/shadowファイルに移されています。
  • UIDはユーザーのユーザーIDです。
  • GIDはユーザーのメイングループIDです。
  • GECOSはユーザーのフルネームやその他の情報を含むフィールドです。
  • home_directoryはユーザーのホームディレクトリへのパスです。
  • shellはユーザーがログインしたときに起動するシェルを指します。

コマンドラインを使用してUIDとGIDを検索する

/etc/passwdファイルから特定のユーザーのUIDとGIDを見つけるには、grepコマンドを使用すると便利です。例えば、ユーザー名aliceのUIDとGIDを確認するには、次のように実行します:

grep '^alice:' /etc/passwd

出力例:

alice:x:1001:1001:Alice Example:/home/alice:/bin/bash

この例では、aliceユーザーのUIDとGIDは両方とも1001であることがわかります。また、aliceのホームディレクトリは/home/aliceであり、デフォルトのシェルは/bin/bashです。

/etc/passwdの読取りは通常管理者権限なしでできます。UID/GIDの確認に、パスワードハッシュを含む/etc/shadowを開く必要はありません。上のgrepは固定名aliceを行頭のアカウント欄へ限定した例です。任意入力を正規表現として連結せず、ユーザー名を指定したgetentで確認します。

実践例: 特定のユーザーのUIDとGIDを確認する方法

Linuxシステムで特定のユーザーのUID(ユーザーID)とGID(グループID)を確認するには、さまざまな方法がありますが、ここでは最も一般的な2つの方法を実践的に解説します。

方法1: `id` コマンドを使用する

最も簡単で直接的な方法は、id コマンドを使用することです。このコマンドは、特定のユーザーのUID、GID、およびそのユーザーが所属するグループのIDを表示します。

特定のユーザーの情報を取得するには、コマンドラインに以下を入力します:

id ユーザー名

例えば、ユーザー名が alice の場合、以下のようになります:

id alice

このコマンドは、alice のUID、GID、および所属グループの情報を提供します。

方法2: `/etc/passwd` ファイルを調べる

ローカルアカウント情報は/etc/passwdにあります。集中管理されたアカウントを含める場合はNSS経由で検索します。このファイルから直接UIDとGIDを調べることもできます。

特定のユーザーの情報を検索するには、grep コマンドを使用します:

grep '^alice:' /etc/passwd

例えば、ユーザー名が alice の場合、以下のように入力します:

grep '^alice:' /etc/passwd

これにより、/etc/passwd ファイルから alice のエントリが表示され、その行には alice のUIDとGIDが含まれています。

これらの方法により、Linuxシステム上で特定のユーザーのUIDとGIDを簡単に確認できます。システム管理者やセキュリティの専門家にとって、これらの情報は権限の管理やシステムの監査において重要な役割を果たします。

スクリプトを使用して複数ユーザーのUIDとGIDを一括で確認する方法

複数のユーザーに関するUIDとGIDを効率的に確認する必要がある場合、小さなシェルスクリプトを書くことでこのプロセスを自動化することができます。ここでは、Linuxシステム上で複数のユーザーのUIDとGIDを一括で取得する簡単なスクリプトの例を紹介します。

スクリプト例

以下は、指定されたユーザーリストのUIDとGIDを表示するシェルスクリプトです。このスクリプトは、ユーザー名をスペースで区切って列挙し、各ユーザーに対してidコマンドを実行します。

#!/bin/bash

# ユーザー名のリスト
usernames="alice bob charlie"

# 各ユーザーのUIDとGIDを表示
for username in $usernames; do
  echo "User: $username"
  id -- "$username"
  echo "" # 空行を出力
done

このスクリプトを使用するには、まずテキストエディタを開いて上記のコードを貼り付け、ファイルを保存します(例:show_uid_gid.sh)。次に、ターミナルでスクリプトファイルが保存されているディレクトリに移動し、スクリプトに実行権限を与えます。

chmod +x show_uid_gid.sh

そして、スクリプトを実行します。

./show_uid_gid.sh

スクリプトを実行すると、指定された各ユーザーのUIDとGIDが表示されます。この方法は、システム上の特定のユーザーグループに対する調査や監査を行う際に特に便利です。また、スクリプト内のユーザーリストを編集することで、必要に応じて任意のユーザーセットに対してこの操作を行うことができます。

まとめ

LinuxでユーザーのUID(ユーザーID)とGID(グループID)を確認する方法には、いくつかの効率的な手段があります。idコマンドを使用してコマンドラインから直接これらの情報を取得する方法、/etc/passwdファイルを調べる方法、そしてスクリプトを用いて複数のユーザー情報を一括で取得する方法がそれぞれのニーズや状況に応じて有効です。

これらの方法を理解し、適切に利用することで、Linuxシステムの管理やセキュリティ監査において、ユーザー管理の効率を大幅に向上させることができます。特にシステム管理者やセキュリティ専門家にとって、これらの基本的な操作は日常的なタスクの一部となるため、習熟しておくことが重要です。

最終的に、Linuxシステム上で安全かつ効率的に作業を行うためには、ユーザーとグループの概念を正確に理解し、UIDとGIDのような基本的な要素を適切に管理する能力が不可欠です。この記事が、Linuxユーザーと管理者の皆さんにとって有益なガイドとなることを願っています。

NSS経由でユーザーとグループを調べる

getent passwd alice
getent group 1001
id -u alice
id -g alice
id -G alice

getentは/etc/nsswitch.confで指定された情報源を参照します。何も返らない場合は存在しないと即断せず、名前の指定、接続、SSSDなどの状態を確認します。全件列挙を無効にしたディレクトリもあるため、ユーザー名を指定した検索を優先します。

所属を変更したのにidの結果が違う場合

引数なしのidは現在のプロセスが持つIDとグループを表示し、ユーザー名付きは登録情報を問い合わせます。グループを変更しても既存ログインセッションへ直ちに反映されないため、新しいログイン後と区別してください。現在の実効UIDと実UIDを分けるなら id -u と id -ru を使います。UID/GID確認のためにユーザーIDやファイル所有権を変更する必要はありません。

参考:GNU id/getentマニュアル。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次