Kommandoen id kan brukes til å slå opp en bruker «s uid, for eksempel:

$ id -u ubuntu 1000 

Er det en kommando om å slå opp et brukernavn fra en uid ? Jeg er klar over at dette kan gjøres ved å se på /etc/passwd -filen, men jeg spør om det er en eksisterende kommando til dette, spesielt hvis brukeren som utfører den ikke er rot.

Jeg leter ikke etter brukernavnet til nåværende bruker, dvs. jeg leter ikke etter whoami eller logname.

Dette fikk meg også til å lure på om dette på en delt webhotell er en sikkerhetsfunksjon, eller forstår jeg bare ikke noe riktig?

For undersøkelse, /etc/passwd -filen fra en delt webver:

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 

Og her er en eksempelliste over /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 

Vi kan se root er eieren av noen filer, og root vises også i /etc/passwd, men de andre brukerne / gruppene vises alle som tall .

Kommentarer

  • Husk at mer enn én bruker kan ha samme UID. Det ‘ er sjeldent, men skjer av og til.

Svar

ls utfører allerede den oppslaget. Du kan utføre en brukerinformasjonssøking fra kommandolinjen med getent passwd .

Hvis ls viser en bruker-ID i stedet for et brukernavn, det er fordi det ikke er noen bruker med det navnet. Filsystemer lagrer bruker-ID-er, ikke brukernavn. Hvis du monterer et filsystem fra et annet system, eller hvis en fil tilhører en bruker som nå er slettet, eller hvis du har gitt en numerisk bruker-ID til chown, kan du ha en fil som tilhører til en bruker-ID som ikke har noe navn.

På en delt vert kan du ha tilgang til noen filer som deles mellom flere virtuelle maskiner, hver med brukerdatabasen. Dette er litt rart (hvorfor dele filer, men ikke brukerne som eier dem?), men det er teknisk mulig.

Kommentarer

  • I ‘ Jeg ser tallet i stedet for navnet på ls -l hvis navnet er over åtte tegn langt.
  • @kgrittn Det kan avhenge på Unix-varianten. GNU ls viser hele brukernavnet. BusyBox avkorter den til åtte tegn (i det minste på den builden jeg har her).

Svar

Prøv

getent passwd "$uid" | cut -d: -f1 

Kommentarer

  • Hvis dette ikke returnerer noe, betyr det at jeg ikke ‘ har du ikke tilgang til å oversette id til et brukernavn?
  • Mer sannsynlig at du ikke t set » $ uid » `eller at uid ikke finnes ‘ t. Finner grep ":$uid:" /etc/passwd det? Gir getent passwd noen utdata?
  • @cwd: Du bør alltid ha tilgang til å oversette en id til et brukernavn. For eksempel gjør ls -l alltid dette.
  • Bare nysgjerrig fordi du ser på en ls -liste på en delt vert viste tall i bruker- / gruppenavnskolonnene med ls. Kanskje det er en sikkerhetsforanstaltning eller jailshell-ting?
  • @cwd Mer sannsynlig bruker den delte verten en /etc/passwd montert / delt fra andre steder som ikke var ‘ t montert på den tiden.

Svar

Du kan like dette lille ditty.

$ id -nu [number] 

3.17.3-1-ARCH # 1 SMP PREEMPT fre 14. nov 22:56:01 CET 2014 i686 GNU / Linux

Jeg kan bekrefte at den returnerer et tilsvarende brukernavn, hvis det finnes, på Arch Linux. Jeg kan også bekrefte at det ikke fungerer på Ubuntu når det kjøres som en vanlig bruker, selv om jeg ikke har testet dette som superbruker. Det fungerer heller ikke på Alpine Linux. Kanskje forhindrer en sikkerhetsfunksjon at dette fungerer på noen systemer.

Kommentarer

  • id -u jimmij = > 1000. id -nu 1000 = > id: 1000: no such user.
  • fungerer for meg, med id --version = id (GNU coreutils) 8.23
  • Fungerer også i FreeBSD 10.3.
  • Merk: dette fungerer på Red Hat / CentOS > = 7 (ikke på Red Hat / CentOS < = 6)
  • FYI dette fungerer ikke på busybox / alpine linux / alpine dockerbilder

Svar

Jeg skjønner at dette er et gammelt spørsmål, men her er det et annet svar

awk -F: "{print $1,$3}" /etc/passwd | grep <UID> 

Kommentarer

  • Rør til grep hva? (Også hvis du legger til fire mellomrom i begynnelsen av linjen, blir det gjengitt som tekst med fast bredde.)
  • Jeg foretrekker svaret med getent passwd. Men hvis parsing / etc / passwd, ville det være hyggeligere å bare bruke awk ID=0 ; awk -F: '{if ( $3 == '"$ID"' ) print $1}' /etc/passwd.

Svar

Analyse / etc / passwd:

% awk -F: "/:$(id -u ubuntu):/{print \$1}" /etc/passwd ubuntu 

Kommentarer

  • I motsetning til getent, fungerer ikke dette hvis systemet bruker LDAP.
  • dette fungerer ikke ‘ t enten hvis NIS i s brukt eller hvilken som helst annen distribuert autentiseringsprotokoll.
  • @choroba: hvis han hadde et spesifikt krav til LDAP eller NIS, ville han sannsynligvis ha nevnt det. Løsningen min fungerer på typiske Linux-oppsett.
  • nedstemme fordi den ‘ er ikke pålitelig (den kan matche verken brukeren eller gruppen).

Svar

id | awk "{print $1}" | sed "s/.*(//;s/)$//" 

Denne oneliner gjør følgende:

  • få brukerinformasjon
  • trekk ut den første kolonnen («uid = ID (NAME)»)
  • fjern noe før parentes, og selve parentesene

Svar

Kommandoen id kan brukes til å både for å slå opp UID og / eller USER-navn

  1. slå opp et UID av USER , for eksempel:
 $ id -u ubuntu 1000 
  1. slå opp en BRUKER av UID , for eksempel:
 $ id -un 1000 ubuntu 

Hvis UID eller BRUKER ikke finnes på gjeldende maskin, skriver den ut -melding, for eksempel:

$ id -un 1234 id: 1234: no such user 

Fra 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 

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *