Linux で ID でユーザー名を検索するにはどうすればいいですか?

Linux で ID でユーザー名を検索するにはどうすればいいですか?

このコマンドはid、ユーザーの を検索するために使用できますuid。次に例を示します。

$ id -u ubuntu
1000

からユーザー名を検索するコマンドはありますかuid? ファイルを調べることで実行できることはわかっています/etc/passwdが、特にそれを実行するユーザーが root でない場合、これを行う既存のコマンドがあるかどうかを尋ねています。

私は探しているわけではない現在ユーザーのユーザー名、つまり、私はwhoamiまたは を探しているわけではありませんlogname

また、共有 Web ホスティングではこれがセキュリティ機能なのか、それとも私が何かを正しく理解していないだけなのか疑問に思いました。

検査のために、/etc/passwd共有 Web ホストからのファイル:

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
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
pcap:x:77:77::/var/arpwatch:/sbin/nologin
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
avahi:x:70:70:Avahi daemon:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
avahi-autoipd:x:100:104:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin
named:x:25:25:Named:/var/named:/sbin/nologin
mailman:x:32006:32006::/usr/local/cpanel/3rdparty/mailman/mailman:/usr/local/cpanel/bin/noshell
dovecot:x:97:97:dovecot:/usr/libexec/dovecot:/sbin/nologin
mysql:x:101:105:MySQL server:/var/lib/mysql:/bin/bash
cpaneleximfilter:x:32007:32009::/var/cpanel/userhomes/cpaneleximfilter:/usr/local/cpanel/bin/noshell
nagios:x:102:106:nagios:/var/log/nagios:/bin/sh
ntp:x:38:38::/etc/ntp:/sbin/nologin
myuser:x:1747:1744::/home/myuser:/usr/local/cpanel/bin/jailshell

以下はディレクトリリストのサンプルです。/tmp/

drwx------  3 root     root        1024 Apr 16 02:09 spamd-22217-init/
drwxr-xr-x  2      665      664    1024 Apr  4 00:05 update-cache-44068ab4/
drwxr-xr-x  4      665      664    1024 Apr 17 15:17 update-extraction-44068ab4/
-rw-rw-r--  1      665      664   43801 Apr 17 15:17 variable.zip
-rw-r--r--  1      684      683    4396 Apr 17 07:01 wsdl-13fb96428c0685474db6b425a1d9baec

root一部のファイルの所有者であり、rootにも表示されていますが/etc/passwd、他のユーザー/グループはすべて数字として表示されます。

答え1

この小歌を気に入っていただけるかもしれません。

$ id -nu [number]

3.17.3-1-ARCH #1 SMP PREEMPT 2014年11月14日金曜日 22:56:01 CET i686 GNU/Linux

Arch Linux では、対応するユーザー名 (存在する場合) が返されることが確認できます。また、スーパーユーザーとしてテストしたわけではありませんが、Ubuntu で通常のユーザーとして実行すると動作しないことも確認できます。Alpine Linux でも動作しません。セキュリティ機能により、一部のシステムでは動作しない可能性があります。

答え2

試す

getent passwd "$uid" | cut -d: -f1

答え3

lsすでにその検索を実行しています。コマンドラインからユーザー情報の検索を実行するには、getent passwd

lsにユーザー名ではなくユーザー ID が表示されるのは、その名前のユーザーが存在しないためです。ファイルシステムはユーザー名ではなくユーザー ID を保存します。別のシステムからファイルシステムをマウントする場合、またはファイルが削除されたユーザーに属する場合、または数値のユーザー ID を に渡した場合chown、名前のないユーザー ID に属するファイルが存在する可能性があります。

共有ホストでは、それぞれがユーザー データベースを持つ複数の仮想マシン間で共有されている一部のファイルにアクセスできる場合があります。これは少し奇妙ですが (なぜファイルは共有できるのに、それを所有するユーザーは共有できないのでしょうか?)、技術的には可能です。

答え4

これは古い質問だとは思いますが、別の答えがあります

awk -F: '{print $1,$3}' /etc/passwd | grep <UID>

関連情報