O comando id
pode ser usado para procurar um usuário uid
, por exemplo:
$ id -u ubuntu
1000
Existe um comando para procurar um nome de usuário de a uid
? Sei que isso pode ser feito olhando o /etc/passwd
arquivo, mas estou perguntando se existe um comando para isso, especialmente se o usuário que o executa não é root.
Não estou procurando o nome de usuário do usuário atual , ou seja, não estou procurando whoami
ou logname
.
Isso também me fez pensar se na hospedagem compartilhada na web esse é um recurso de segurança ou simplesmente não estou entendendo algo corretamente?
Para exame, o /etc/passwd
arquivo 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á uma lista de diretório de exemplo 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 que root
é o proprietário de alguns arquivos e root
também está aparecendo, no /etc/passwd
entanto, todos os outros usuários / grupos aparecem como números.
Respostas:
ls
já realiza essa pesquisa. Você pode executar uma pesquisa de informações do usuário na linha de comando comgetent passwd
.Se
ls
mostra um ID do usuário em vez de um nome de usuário, é porque não há usuário com esse nome. Os sistemas de arquivos armazenam IDs de usuário, não nomes de usuário. Se você montar um sistema de arquivos a partir de outro sistema, ou se um arquivo pertencer a um usuário excluído agora ou se tiver passado um ID de usuário numéricochown
, poderá ter um arquivo que pertença a um ID de usuário que não tem nome.Em um host compartilhado, você pode ter acesso a alguns arquivos compartilhados entre várias máquinas virtuais, cada uma com seu banco de dados do usuário. Isso é um pouco estranho (por que compartilhar arquivos, mas não os usuários que os possuem?), Mas é tecnicamente possível.
fonte
ls -l
se o nome tiver mais de oito caracteres.Experimentar
fonte
t set
"$ uid" `ou esse uid não existe. Ogrep ":$uid:" /etc/passwd
encontra? Nãogetent passwd
produz nenhuma saída?ls -l
está sempre fazendo isso.ls
lista em um host compartilhado estava mostrando números nas colunas de nome de usuário / grupo com ls. Talvez seja uma precaução de segurança ou coisa de cadeia?/etc/passwd
montado / compartilhado de outro lugar que não estava montado no momento.Você pode gostar deste pequeno cantinho.
3.17.3-1-ARCH # 1 SMP PREEMPT Sexta-feira, 14 de novembro às 22:56:01 CET 2014 i686 GNU / Linux
Posso confirmar que ele retorna um nome de usuário correspondente, se houver, no Arch Linux. Também posso confirmar que ele não funciona no Ubuntu quando executado como usuário normal, embora eu 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.
fonte
id -u jimmij
=>1000
.id -nu 1000
=>id: 1000: no such user
.id --version
=id (GNU coreutils) 8.23
Sei que essa é uma pergunta antiga, mas aqui está outra resposta
fonte
grep
que? (Além disso, se você adicionar quatro espaços no início da linha, ele será renderizado como texto de largura fixa.)getent passwd
. Mas se analisando / etc / passwd, seria melhor usar apenas o awkID=0 ; awk -F: '{if ( $3 == '"$ID"' ) print $1}' /etc/passwd
.Analise / etc / passwd:
fonte
getent
, isso não funciona se o sistema usa LDAP.fonte