Como posso procurar um nome de usuário por id no Linux?

Como posso procurar um nome de usuário por id no Linux?

O comando idpode ser usado para procurar o nome de um usuário uid, por exemplo:

$ id -u ubuntu
1000

Existe um comando para procurar um nome de usuário em um uid? Sei que isso pode ser feito olhando o /etc/passwdarquivo, mas estou perguntando se existe um comando para isso, especialmente se o usuário que o executa não for root.

Eu não estou procurando oatualnome de usuário do usuário, ou seja, não estou procurando whoamiou logname.

Isso também me fez pensar se na hospedagem compartilhada isso é um recurso de segurança ou simplesmente não estou entendendo algo corretamente?

Para exame, o /etc/passwdarquivo de um host compartilhado:

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

E aqui está um exemplo de listagem de diretório de/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

Podemos ver rootque é o proprietário de alguns arquivos e roottambém aparece em /etc/passwd, porém todos os outros usuários/grupos aparecem como números.

Responder1

Você pode gostar desta pequena cantiga.

$ id -nu [number]

3.17.3-1-ARCH #1 SMP PREEMPT Sex 14 de novembro 22:56:01 CET 2014 i686 GNU/Linux

Posso confirmar que ele retorna um nome de usuário correspondente, se existir, no Arch Linux. Também posso confirmar que ele não funciona no Ubuntu quando executado como usuário normal, embora não tenha testado isso como superusuário. Também não funciona no Alpine Linux. Talvez um recurso de segurança impeça que isso funcione em alguns sistemas.

Responder2

Tentar

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

Responder3

lsjá realiza essa pesquisa. Você pode realizar uma pesquisa de informações do usuário na linha de comando comgetent passwd.

Se lsmostrar um ID de usuário em vez de um nome de usuário, é porque não há nenhum usuário com esse nome. Os sistemas de arquivos armazenam IDs de usuários, não nomes de usuários. Se você montar um sistema de arquivos de outro sistema, ou se um arquivo pertencer a um usuário agora excluído, ou se você passar um ID de usuário numérico para chown, poderá ter um arquivo que pertence a um ID de usuário que não possui um nome.

Em um host compartilhado, você pode ter acesso a alguns arquivos compartilhados entre diversas máquinas virtuais, cada uma com seu banco de dados de usuários. Isso é um pouco estranho (por que compartilhar arquivos, mas não os usuários que os possuem?), mas é tecnicamente possível.

Responder4

Sei que esta é uma pergunta antiga, mas aqui está outra resposta

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

informação relacionada