idコマンドは指定したユーザのユーザIDやグループIDを確認できます。
ユーザが指定されていない場合はこのidコマンドを実行しているプロセスのユーザIDやグループIDを確認できます。
目次
idコマンドの構文
idコマンドの構文
1 |
id [option]... [user] |
userは文字列で表されたユーザの識別文字列、または数字で表されたユーザIDを指定します。
ユーザを調べる順番は、文字列で表されたユーザIDを調べた後に、数字で表されたユーザIDを調べます。そのため、文字列で表されたユーザIDに「1000」のようなユーザが存在するときに、数字で表されたユーザID「1000」を調べたい場合は、「+1000」のように指定します。
数字で表されたユーザID「1000」を確認する場合
1 |
id +1000 |
idコマンドの利用例
ユーザIDの表示
(オプションなし)
idコマンドをオプションなしで実行した場合、(1)実ユーザID、(2)実グループID、(3)実効ユーザID(実ユーザIDと異なる場合に表示)、(4)実効グループID(実グループIDと異なる場合に表示)、(5)補助グループIDを表示します。
idコマンドのコマンドライン引数を省略した場合はidコマンドについて、実行しているプロセスのユーザID、グループID、補助グループIDを表示します。
コマンド例
1 |
id |
実行結果
1 |
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare),999(vboxsf) |
コマンド例
1 |
sudo id |
実行結果
1 |
uid=0(root) gid=0(root) groups=0(root) |
また、idコマンドはユーザを指定できます。コマンド例では、ownerというユーザが存在した場合のコマンド例になります。
コマンド例(ユーザを指定した場合)
1 |
id owner |
実行結果
1 |
uid=1001(owner) gid=1002(owner) groups=1002(owner) |
意味としては、実ユーザIDと実グループIDは実際に誰であるかを表します。そして、実効ユーザIDと実効グループIDはファイルのアクセス権限に関係します。
また、補助グループIDはユーザが所属しているグループでの追加のグループになります。
実効ユーザIDと実効グループIDの情報の確認は、例えばidコマンドのプログラムをコピーし、その所有者情報を変更し、set-user-ID(SUID)やset-group-ID(SGID)を付与することで確認することができます。
実効ユーザIDと実効グループIDの情報の確認例
1.idコマンドのプログラムをカレントディレクトリにコピー
1 |
cp $(which id) . |
2.所有者情報の変更(ここではユーザとグループをrootに変更)
1 |
sudo chown root:root ./id |
3.SUIDとSGIDの付与
1 |
sudo chmod ug+s ./id |
4.所有者情報やアクセス権限の確認
1 2 3 |
$ls -l 合計 180 -rwsr-sr-x 1 root root 183000 11月 1 16:28 id |
5.コピーしたidコマンドで実行の確認(実行しているユーザはubuntuというユーザで、また見やすいようにsedコマンドで少し整形しています。)
1 2 3 4 5 6 |
$./id | sed 's/ /\n/g' uid=1000(ubuntu) gid=1000(ubuntu) euid=0(root) egid=0(root) groups=0(root),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare),999(vboxsf),1000(ubuntu) |
上のidコマンドの結果でそれぞれ、
uidが実ユーザID(real user ID)、
gidが実グループID(real group ID)、
euidが実効ユーザID(effective user ID)、
egidが実効グループID(effective group ID)、
groupsが補助グループのID(supplemental group ID)になります。
ユーザIDのみを表示
(-uオプション)
-uオプションはユーザIDのみを表示します。
コマンド例
1 |
id -u |
実行結果
1 |
1000 |
グループIDのみを表示
(-gオプション)
-gオプションはグループIDのみを表示します。
コマンド例
1 |
id -g |
実行結果
1 |
1000 |
グループIDと補助グループIDを表示
(-Gオプション)
-GオプションはグループIDと補助グループIDを表示します。
コマンド例
1 |
id -G |
実行結果
1 |
1000 4 24 27 30 46 113 128 999 |
名前で表示
(-nオプション)
-nオプションは、-uオプション、-gオプションまたは-Gオプションと組み合わせて使用します。-nオプションを用いると数字でのIDではなく、名前でのIDを表示することができます。
コマンド例では、ユーザIDの名前を表示します。
コマンド例
1 |
id -n -u |
実行結果
1 |
ubuntu |
実ユーザIDまたは実グループIDを表示
(-rオプション)
-rオプションは、-uオプション、-gオプションまたは-Gオプションと組み合わせて使用します。-rオプションは、実ユーザIDまたは実グループIDを表示します。つまり、実ユーザIDまたは実グループIDがそれぞれ実効ユーザIDまたは実効グループIDと異なる場合に利用できます。
コマンド例では所有者情報を変更しSUIDとSGIDを付与したidコマンドのプログラムのコピーを利用しています。
コマンド例と実行結果
1 2 3 4 5 6 7 |
$ls -l 合計 180 -rwsr-sr-x 1 root root 183000 11月 1 16:28 id $./id -u 0 $./id -u -r 1000 |
whoamiコマンド
whoamiコマンドは、現在のユーザ名を表示するコマンドで、「id -un」とほぼ等価なコマンドになります。このコマンドの由来は"who am i"で、「私は誰」というコマンドになります。
コマンド例では、「ubuntu」というユーザで実行しています。
コマンド例
1 |
whoami |
実行結果
1 |
ubuntu |
groupsコマンド
groupsコマンドは、補助グループを含むグループ名を表示するコマンドで、「id -nG」とほぼ等価なコマンドになります。コマンドライン引数を取らない場合は実行しているプロセスのユーザの補助グループを含むグループ名を表示します。
コマンド例
1 |
groups |
実行結果
1 |
ubuntu adm cdrom sudo dip plugdev lpadmin sambashare vboxsf |
また、groupsコマンドはidコマンドと違い、複数のユーザを引数に取ることができます。
コマンド例
1 |
groups root ubuntu |
実行結果
1 2 |
root : root ubuntu : ubuntu adm cdrom sudo dip plugdev lpadmin sambashare vboxsf |
参考