리눅스에서 ID로 사용자 이름을 어떻게 찾을 수 있나요?

리눅스에서 ID로 사용자 이름을 어떻게 찾을 수 있나요?

이 명령은 id사용자의 를 조회하는 데 사용할 수 있습니다 uid. 예를 들면 다음과 같습니다.

$ id -u ubuntu
1000

에서 사용자 이름을 조회하는 명령이 있습니까 uid? 파일을 보면 이 작업을 수행할 수 있다는 것을 알고 있지만 /etc/passwd이에 대한 기존 명령이 있는지 묻고 있습니다. 특히 이를 실행하는 사용자가 루트가 아닌 경우 더욱 그렇습니다.

나는 ~을 찾고 있는 것이 아니다현재의whoami사용자의 사용자 이름, 즉 or 을 (를 ) 찾고 있지 않습니다 logname.

이것은 또한 공유 웹 호스팅에서 이것이 보안 기능인지 궁금하게 만들었습니다. 아니면 제가 뭔가를 올바르게 이해하지 못하고 있는 것일까요?

검사를 위해 /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
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 11월 14일 금요일 22:56:01 CET 2014 i686 GNU/Linux

Arch Linux에 해당 사용자 이름이 있는 경우 이를 반환하는지 확인할 수 있습니다. 또한 슈퍼유저로 테스트하지는 않았지만 일반 사용자로 실행하면 Ubuntu에서 작동하지 않는 것을 확인할 수 있습니다. Alpine Linux에서도 작동하지 않습니다. 보안 기능으로 인해 일부 시스템에서는 이것이 작동하지 않을 수도 있습니다.

답변2

노력하다

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

답변3

ls이미 해당 조회를 수행하고 있습니다. 다음을 사용하여 명령줄에서 사용자 정보 조회를 수행할 수 있습니다.getent passwd.

사용자 이름 대신 사용자 ID가 표시 되면 ls해당 이름의 사용자가 없기 때문입니다. 파일 시스템은 사용자 이름이 아닌 사용자 ID를 저장합니다. 다른 시스템에서 파일 시스템을 마운트하는 경우, 파일이 현재 삭제된 사용자에게 속한 경우, 또는 숫자 사용자 ID를 에 전달한 경우 chown이름이 없는 사용자 ID에 속하는 파일을 가질 수 있습니다.

공유 호스트에서는 각각의 사용자 데이터베이스가 있는 여러 가상 머신 간에 공유되는 일부 파일에 액세스할 수 있습니다. 이것은 약간 이상하지만(왜 파일을 공유하지만 파일을 소유한 사용자는 공유하지 않는가?) 기술적으로는 가능합니다.

답변4

나는 이것이 오래된 질문이라는 것을 알고 있지만 여기에 또 다른 답변이 있습니다.

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

관련 정보