Mit dem Befehl id
können Sie die uid
, zum Beispiel:
$ id -u ubuntu 1000
Gibt es einen Befehl zum Nachschlagen eines Benutzernamens von einer uid
Ich erkenne, dass dies durch Betrachten der Datei /etc/passwd
erreicht werden kann, aber ich frage, ob ein Befehl dazu vorhanden ist, insbesondere wenn der Benutzer, der ihn ausführt, nicht root ist.
Ich suche nicht nach dem Benutzernamen des aktuellen Benutzers, dh ich suche nicht nach whoami
oder logname
.
Dies hat mich auch gefragt, ob dies beim Shared Web Hosting eine Sicherheitsfunktion ist oder ob ich etwas einfach nicht richtig verstehe?
Zur Prüfung: Die Datei /etc/passwd
von einem gemeinsam genutzten Webhost:
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
Und hier ist eine Beispielverzeichnisliste von /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
Wir können root
ist der Eigentümer einiger Dateien, und root
wird auch in /etc/passwd
angezeigt, die anderen Benutzer / Gruppen werden jedoch alle als Zahlen angezeigt
Kommentare
- Beachten Sie, dass möglicherweise mehr als ein Benutzer dieselbe UID hat. ‚ ist selten, kommt aber gelegentlich vor.
Antwort
ls
führt diese Suche bereits durch. Sie können eine Suche nach Benutzerinformationen über die Befehlszeile mit getent passwd
durchführen.
If ls
zeigt eine Benutzer-ID anstelle eines Benutzernamens an, weil es keinen Benutzer mit diesem Namen gibt. Dateisysteme speichern Benutzer-IDs, keine Benutzernamen. Wenn Sie ein Dateisystem von einem anderen System aus bereitstellen oder wenn eine Datei einem jetzt gelöschten Benutzer gehört oder wenn Sie eine numerische Benutzer-ID an chown
übergeben haben, können Sie eine Datei haben, die dazu gehört auf eine Benutzer-ID, die keinen Namen hat.
Auf einem freigegebenen Host haben Sie möglicherweise Zugriff auf einige Dateien, die von mehreren virtuellen Maschinen mit jeweils ihrer Benutzerdatenbank gemeinsam genutzt werden. Dies ist etwas seltsam (Warum Dateien freigeben, aber nicht die Benutzer, denen sie gehören?), aber es ist technisch möglich.
Kommentare
- I ‚ Ich sehe die Nummer anstelle des Namens auf
ls -l
, wenn der Name länger als acht Zeichen ist. - @kgrittn Dies kann davon abhängen auf der Unix-Variante. GNU ls zeigt den gesamten Benutzernamen an. BusyBox ls schneidet es auf 8 Zeichen ab (zumindest bei dem Build, den ich hier habe).
Antwort
Versuchen Sie es
getent passwd "$uid" | cut -d: -f1
Kommentare
- Wenn dies nichts zurückgibt, bedeutet dies, dass ich nicht ‚ Sie haben keinen Zugriff, um die ID in einen Benutzernamen zu übersetzen?
- Wahrscheinlicher ist, dass Sie nicht
t set
“ $ uid “ `oder diese uid existiert nicht ‚. Findetgrep ":$uid:" /etc/passwd
es? Erzeugtgetent passwd
eine Ausgabe? - @cwd: Sie sollten immer Zugriff haben, um eine ID in einen Benutzernamen zu übersetzen. Zum Beispiel macht
ls -l
dies immer. - Nur neugierig, weil Sie sich eine
ls
-Liste auf einem gemeinsam genutzten Host ansehen zeigte Zahlen in den Spalten für Benutzer- / Gruppennamen mit ls an. Vielleicht handelt es sich um eine Sicherheitsmaßnahme oder eine Jailshell-Sache? - @cwd Wahrscheinlicher ist, dass der gemeinsam genutzte Host eine
/etc/passwd
verwendet, die von einer anderen Stelle bereitgestellt / freigegeben wurde, die nicht ‚ wurde zu diesem Zeitpunkt nicht gemountet.
Antwort
Vielleicht gefällt Ihnen das wenig Liedchen.
$ id -nu [number]
3.17.3-1-ARCH # 1 SMP PREEMPT Fri Nov 14 22:56:01 CET 2014 i686 GNU / Linux
Ich kann bestätigen, dass unter Arch Linux ein entsprechender Benutzername zurückgegeben wird, falls vorhanden. Ich kann auch bestätigen, dass es unter Ubuntu nicht funktioniert, wenn es als normaler Benutzer ausgeführt wird, obwohl ich dies nicht als Superuser getestet habe. Es funktioniert auch nicht unter Alpine Linux. Möglicherweise verhindert eine Sicherheitsfunktion, dass dies auf einigen Systemen funktioniert.
Kommentare
-
id -u jimmij
= >1000
.id -nu 1000
= >id: 1000: no such user
. - funktioniert für mich mit
id --version
=id (GNU coreutils) 8.23
- Funktioniert auch in FreeBSD 10.3.
- Hinweis: Dies funktioniert unter Red Hat / CentOS > = 7 (nicht unter Red Hat / CentOS < = 6)
- FYI dies funktioniert nicht auf Busybox / Alpine Linux / Alpine Docker-Bildern
Antwort
Mir ist klar, dass dies eine alte Frage ist, aber hier ist eine andere Antwort
awk -F: "{print $1,$3}" /etc/passwd | grep <UID>
Kommentare
- Pipe to
grep
was? (Auch wenn Sie am Anfang der Zeile vier Leerzeichen hinzufügen, wird es als Text mit fester Breite gerendert.) - Ich bevorzuge die Antwort mit
getent passwd
. Wenn Sie jedoch / etc / passwd analysieren, ist es besser, nur awk zu verwendenID=0 ; awk -F: '{if ( $3 == '"$ID"' ) print $1}' /etc/passwd
.
Antwort
Parse / etc / passwd:
% awk -F: "/:$(id -u ubuntu):/{print \$1}" /etc/passwd ubuntu
Kommentare
- Im Gegensatz zu
getent
funktioniert dies nicht, wenn das System LDAP verwendet. - Dies funktioniert ‚ auch nicht, wenn NIS i s verwendet oder ein anderes verteiltes Authentifizierungsprotokoll.
- @choroba: Wenn er eine bestimmte Anforderung für LDAP oder NIS hätte, hätte er diese wahrscheinlich erwähnt. Meine Lösung funktioniert mit typischen Linux-Setups.
- Downvote, da ‚ nicht zuverlässig ist (es könnte entweder dem Benutzer oder der Gruppe entsprechen).
Antwort
id | awk "{print $1}" | sed "s/.*(//;s/)$//"
Dieser Oneliner führt Folgendes aus:
- Benutzerinformationen abrufen
- extrahiere die erste Spalte („uid = ID (NAME)“)
- entferne alles vor Klammern und die Klammern selbst
Antwort
Mit dem Befehl id
kann beide , um die UID und / oder den BENUTZERNamen nachzuschlagen
- suchen nach einer UID von USER , zum Beispiel:
$ id -u ubuntu 1000
- Suchen Sie einen USER nach UID , zum Beispiel:
$ id -un 1000 ubuntu
Wenn die UID oder der USER auf dem aktuellen Computer nicht gefunden wird, wird Nachricht, zum Beispiel:
$ id -un 1234 id: 1234: no such user
Von man id
:
id - print real and effective user and group IDs -n, --name print a name instead of a number, for -ugG -u, --user print only the effective user ID -g, --group print only the effective group ID -G, --groups print all group IDs