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 ‚. Findet grep ":$uid:" /etc/passwd es? Erzeugt getent 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 verwenden ID=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

  1. suchen nach einer UID von USER , zum Beispiel:
 $ id -u ubuntu 1000 
  1. 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 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.