Как найти имя пользователя по идентификатору в Linux?

Как найти имя пользователя по идентификатору в Linux?

Эту команду idможно использовать для поиска пользователя uid, например:

$ id -u ubuntu
1000

Есть ли команда для поиска имени пользователя из uid? Я понимаю, что это можно сделать, просмотрев /etc/passwdфайл, но я спрашиваю, есть ли существующая команда для этого, особенно если пользователь, выполняющий ее, не является root.

Я не ищутекущийимя пользователя, т.е. я не ищу 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 PREEMPT Пятница, 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.

Если lsвместо имени пользователя отображается идентификатор пользователя, это значит, что пользователя с таким именем нет. Файловые системы хранят идентификаторы пользователей, а не имена пользователей. Если вы монтируете файловую систему из другой системы, или если файл принадлежит удаленному пользователю, или если вы передали числовой идентификатор пользователя в chown, у вас может быть файл, принадлежащий идентификатору пользователя, у которого нет имени.

На общем хосте у вас может быть доступ к некоторым файлам, которые совместно используются несколькими виртуальными машинами, каждая из которых имеет свою базу данных пользователей. Это немного странно (зачем делиться файлами, но не пользователями, которые ими владеют?), но технически это возможно.

решение4

Я понимаю, что это старый вопрос, но вот еще один ответ

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

Связанный контент