리눅스에서 ID로 사용자 이름을 찾는 방법은 무엇입니까?

리눅스에서 ID로 사용자 이름을 찾는 방법은 무엇입니까?

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

$ id -u ubuntu
1000

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

나는 찾고 있지 않다현재의사용자의 사용자 이름입니다. 즉, whoami또는 을 찾고 있지 않습니다 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 선점 11월 14일 금요일 22:56:01 CET 2014 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>

관련 정보