【Linuxコマンド】id コマンドの使い方とよく使うオプション

概要

 
id コマンドは、ユーザの UID・GID・所属グループなどの情報を表示するコマンドです。
実行中のユーザや、指定したユーザがどのグループに属しているかを確認することができます。
 

権限周りのトラブルシュート(「このユーザはこのディレクトリに書き込めるはずか?」など)や、
ユーザ・グループ設計の確認で頻繁に使われます。
useraddusermodgroupadd と合わせて覚えておくと便利です。
 

フォーマット

 

id [オプション] [ユーザ名]

 

ユーザ名を省略した場合は、「コマンドを実行したユーザ」についての情報を表示します。
ユーザ名を指定すると、そのユーザの UID・GID・所属グループ一覧を確認できます。

 

よく使うコマンド例

 

・現在のユーザの UID・GID・所属グループを確認する(基本)。

id

カレントユーザ(コマンドを実行したユーザ)について、
UID(ユーザ ID)、GID(グループ ID)、所属グループ一覧をまとめて表示します。
sudo などで権限を切り替えたあとに「いま誰として動いているか?」を確認するのに便利です。

 

・特定ユーザの UID・GID・所属グループを確認する。

id sooota

ユーザ名 sooota の UID・GID・所属グループを表示します。
アプリケーション用ユーザや、他人のアカウントの権限を確認したいときに使います。

 

・ユーザ ID(UID)だけを表示する。

id -u
id -u sooota

-u(–user)は、ユーザ ID(UID)のみを表示します。
スクリプト内で UID を数値として扱いたい場合などに便利です。

 

・グループ ID(GID)だけを表示する。

id -g
id -g sooota

-g(–group)は、primary グループの GID のみを表示します。
ユーザのメインのグループ ID だけを知りたい場合に利用します。

 

・所属グループの ID 一覧だけを表示する。

id -G
id -G sooota

-G(–groups)は、そのユーザが所属しているすべてのグループ IDを表示します。
どのグループに入っているかを確認したいときに使います。

 

・ID ではなく「名前」で表示する。

id -un
id -Gn sooota

-n(–name)を組み合わせると、ID ではなく名前で表示するようになります。
id -un は「現在のユーザ名」、id -Gn は「所属グループ名一覧」を表示するのによく使われます。

 

・実効 ID ではなく「実 ID」を表示する。

id -ur
id -gr

-r(–real)は、「実効 ID」ではなく実 IDを表示するオプションです。
setuid/setgid バイナリや sudo で権限昇格した状態で、
「本来の UID/GID が何か」を確認したい場面で使われます。

 

・SELinux 環境でセキュリティコンテキストを確認する。

id -Z

-Z(–context)は、SELinux が有効な環境で「セキュリティコンテキスト」を表示します。
user:role:type:level のような形式で出力され、SELinux の権限トラブル調査に使われます。
SELinux を無効にしている環境では何も表示されない場合があります。

 

・スクリプトから UID を見て条件分岐する(例)。

[ "$(id -u)" -eq 0 ] && echo "root で実行されています"

id -u を用いて、スクリプトが root で実行されているかどうかを判定する例です。
「root で動かしてはいけない処理」や、「root でないと実行できない処理」のガードに使えます。

 




実務でのよくある使いどころ

 

・権限トラブルシュート時の確認
「このユーザは本当にこのグループに入っているか?」「なぜアクセスできないのか?」
といった権限トラブルのときに、まず id ユーザ名 で UID/GID・所属グループを確認します。
 

・sudo / su 後の状態確認
sudosu - でユーザを切り替えたあと、
id を打って「現在どのユーザ・グループとして動いているか」を確認するのは定番です。
 

・NFS や共有ストレージ利用時の UID/GID 整合性チェック
複数サーバ間でファイルを共有する場合、UID/GID が揃っていないと権限がずれて見えます。
各サーバで id ユーザ名 を実行し、UID/GID が一致しているか確認するのに使います。
 

・スクリプトでの権限ガード
バッチやデプロイスクリプトの冒頭で id -u をチェックし、
「root でしか動かさない」「逆に root では実行禁止」といった条件分岐を入れることがよくあります。
 

ユーザやグループの作成・変更は useradd コマンドusermod コマンドgroupadd コマンド などで行い、
その結果を確認するコマンドとして id を使う、というイメージで押さえておくと理解しやすいです。

 

オプション(よく使うオプションのみ)

 

short optionlong optiondescription
-u--userユーザ ID(UID)のみを表示する
-g--groupprimary グループ ID(GID)のみを表示する
-G--groups所属しているすべてのグループ ID を表示する
-n--nameID の代わりに名前で表示する(-u/-g/-G などと組み合わせて使用)
-r--real実効 ID ではなく実 ID を表示する(-u/-g と組み合わせて使用)
-Z--contextSELinux が有効な場合にセキュリティコンテキストを表示する
-aすべての情報を表示する(GNU 版ではデフォルトと同等・互換性のために用意されたオプション)
-h--helpid コマンドの使い方(ヘルプ)を表示して終了する
-V--versionid コマンドのバージョン情報を表示して終了する
 

ここでは、GNU coreutils ベースの id コマンドで一般的によく使われるオプションを TablePress の表としてまとめている想定です。
実際に利用可能なオプションや挙動は、ディストリビューションやバージョンによって異なる場合があるため、
本番環境で使用する前に man id で最新の仕様を確認することをおすすめします。

ブログランキングに参加しています。クリックして応援していただけると嬉しいです。

人気ブログランキング
ブログランキング・にほんブログ村へ
にほんブログ村