La commande id
peut être utilisée pour rechercher un utilisateur uid
, par exemple:
$ id -u ubuntu
1000
Existe-t-il une commande permettant de rechercher un nom d'utilisateur dans un fichier uid
? Je me rends compte que cela peut être fait en consultant le /etc/passwd
fichier, mais je demande s’il existe une commande existante, surtout si l’utilisateur qui l’exécute n’est pas root.
Je ne cherche pas le nom d' utilisateur de l'utilisateur actuel , c'est-à-dire que je ne cherche pas whoami
ou logname
.
Cela m'a également incité à me demander si l'hébergement Web partagé est une fonctionnalité de sécurité ou si je ne comprends pas quelque chose correctement.
Pour examen, le /etc/passwd
fichier d'un hôte Web partagé:
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
Et voici un exemple de liste de répertoires 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
Nous pouvons voir que root
le propriétaire de certains fichiers root
apparaît également /etc/passwd
, mais les autres utilisateurs / groupes apparaissent tous sous forme de chiffres.
Réponses:
ls
effectue déjà cette recherche. Vous pouvez effectuer une recherche d'informations utilisateur à partir de la ligne de commande avecgetent passwd
.Si
ls
affiche un ID utilisateur au lieu d'un nom d'utilisateur, c'est qu'il n'y a aucun utilisateur portant ce nom. Les systèmes de fichiers stockent les ID utilisateur, pas les noms d'utilisateur. Si vous montez un système de fichiers depuis un autre système, si un fichier appartient à un utilisateur maintenant supprimé ou si vous avez passé un ID utilisateur numériquechown
, vous pouvez avoir un fichier appartenant à un ID utilisateur sans nom.Sur un hôte partagé, vous pouvez avoir accès à certains fichiers partagés entre plusieurs machines virtuelles, chacune avec sa base de données d'utilisateurs. C'est un peu bizarre (pourquoi partager des fichiers mais pas les utilisateurs qui les possèdent?), Mais c'est techniquement possible.
la source
ls -l
s'il est composé de plus de huit caractères.Essayer
la source
t set
"$ uid" `ou cet uid n'existe pas. Legrep ":$uid:" /etc/passwd
trouve- t- il? Negetent passwd
produit aucune sortie?ls -l
fait toujours cela.ls
liste sur un hôte partagé montrait des nombres dans les colonnes de nom d'utilisateur / groupe avec ls. Peut-être est-ce une précaution de sécurité ou une chose jailshell?/etc/passwd
monté / partagé provenant d'ailleurs qui n'était pas monté à ce moment-là.Vous pourriez apprécier cette petite chanson.
3.17.3-1-ARCH # 1 SMP PREEMPT Vendredi 14 novembre 22:56:01 CET 2014 i686 GNU / Linux
Je peux confirmer qu'il renvoie un nom d'utilisateur correspondant, s'il en existe un, sur Arch Linux. Je peux également confirmer que cela ne fonctionne pas sur Ubuntu lorsqu'il est exécuté en tant qu'utilisateur normal, bien que je n'ai pas testé cela en tant que superutilisateur. Cela ne fonctionne pas non plus sur Alpine Linux. Une fonctionnalité de sécurité empêche peut-être cela de fonctionner sur certains systèmes.
la source
id -u jimmij
=>1000
.id -nu 1000
=>id: 1000: no such user
.id --version
=id (GNU coreutils) 8.23
Je réalise que c'est une vieille question, mais voici une autre réponse
la source
grep
quoi? (De plus, si vous ajoutez quatre espaces au début de la ligne, le texte sera converti en texte à largeur fixe.)getent passwd
. Mais si vous analysez / etc / passwd, il serait plus judicieux d’utiliser awk uniquementID=0 ; awk -F: '{if ( $3 == '"$ID"' ) print $1}' /etc/passwd
.Parse / etc / passwd:
la source
getent
cela, cela ne fonctionne pas si le système utilise LDAP.la source