El comando id
se puede usar para buscar un usuario uid
, por ejemplo:
$ id -u ubuntu
1000
¿Hay un comando para buscar un nombre de usuario de a uid
? Me doy cuenta de que esto se puede hacer mirando el /etc/passwd
archivo, pero estoy preguntando si existe un comando para esto, especialmente si el usuario que lo ejecuta no es root.
No estoy buscando el nombre de usuario del usuario actual , es decir, no estoy buscando whoami
o logname
.
Esto también me hizo preguntarme si en el alojamiento web compartido es una característica de seguridad, ¿o simplemente no estoy entendiendo algo correctamente?
Para su examen, el /etc/passwd
archivo de un servidor web compartido:
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
Y aquí hay un listado de directorio de muestra 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
es el propietario de algunos archivos y root
también aparece en /etc/passwd
, sin embargo, todos los demás usuarios / grupos se muestran como números.
Respuestas:
ls
Ya realiza esa búsqueda. Puede realizar una búsqueda de información del usuario desde la línea de comandos congetent passwd
.Si
ls
muestra una ID de usuario en lugar de un nombre de usuario, es porque no hay ningún usuario con ese nombre. Los sistemas de archivos almacenan ID de usuario, no nombres de usuario. Si monta un sistema de archivos desde otro sistema, o si un archivo pertenece a un usuario ahora eliminado, o si le pasó una ID de usuario numéricachown
, puede tener un archivo que pertenece a una ID de usuario que no tiene un nombre.En un host compartido, puede tener acceso a algunos archivos que se comparten entre varias máquinas virtuales, cada una con su base de datos de usuario. Esto es un poco extraño (¿por qué compartir archivos pero no los usuarios que los poseen?), Pero es técnicamente posible.
fuente
ls -l
si el nombre tiene más de ocho caracteres de longitud.Tratar
fuente
t set
"$ uid" `o que ese uid no exista. ¿Logrep ":$uid:" /etc/passwd
encuentra? ¿getent passwd
Produce alguna salida?ls -l
siempre está haciendo esto.ls
lista en un host compartido mostraba números en las columnas de nombre de usuario / grupo con ls. ¿Quizás es una precaución de seguridad o una cuestión de cárcel?/etc/passwd
montado / compartido de otro lugar que no estaba montado en ese momento.Podrías disfrutar de esta pequeña canción.
3.17.3-1-ARCH # 1 SMP PREEMPT Vie 14 de noviembre 22:56:01 CET 2014 i686 GNU / Linux
Puedo confirmar que devuelve un nombre de usuario correspondiente, si existe, en Arch Linux. También puedo confirmar que no funciona en Ubuntu cuando se ejecuta como un usuario normal, aunque no lo he probado como superusuario. Tampoco funciona en Alpine Linux. Tal vez una característica de seguridad evita que esto funcione en algunos sistemas.
fuente
id -u jimmij
=>1000
.id -nu 1000
=>id: 1000: no such user
.id --version
=id (GNU coreutils) 8.23
Me doy cuenta de que esta es una vieja pregunta, pero aquí hay otra respuesta
fuente
grep
qué? (Además, si agrega cuatro espacios al comienzo de la línea, lo representará como texto de ancho fijo).getent passwd
. Pero si analiza / etc / passwd, sería mejor usar solo awkID=0 ; awk -F: '{if ( $3 == '"$ID"' ) print $1}' /etc/passwd
.Parse / etc / passwd:
fuente
getent
, esto no funciona si el sistema usa LDAP.fuente