Komennolla id voidaan etsiä käyttäjä ”s uid, esimerkiksi:

$ id -u ubuntu 1000 

Onko komennolla etsiä käyttäjänimi uid ? Ymmärrän, että tämä voidaan tehdä katsomalla /etc/passwd -tiedostoa, mutta kysyn, onko tähän olemassa olemassa oleva komento, varsinkin jos sitä suorittava käyttäjä ei ole root. / p>

En etsi nykyisen käyttäjän käyttäjätunnusta, ts. en etsi whoami tai logname.

Tämä sai minut myös miettimään, onko tämä jaetussa verkkopalvelussa turvaominaisuus vai eikö vain ymmärrä jotain oikein?

Tarkastusta varten /etc/passwd -tiedosto jaetusta verkkoisännästä:

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 

Ja tässä on esimerkki hakemistoluettelosta /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 

Näemme root on joidenkin tiedostojen omistaja, ja root näkyy myös kohdassa /etc/passwd, mutta kaikki muut käyttäjät / ryhmät näkyvät numeroina .

Kommentit

  • Muista, että usealla käyttäjällä voi olla sama UID. ’ on harvinaista, mutta satunnaista.

Vastaa

ls suorittaa jo tämän haun. Voit suorittaa käyttäjätietojen haun komentoriviltä getent passwd .

Jos ls näyttää käyttäjätunnuksen käyttäjänimen sijasta, koska se ei ole tällä nimellä. Tiedostojärjestelmät tallentavat käyttäjätunnuksia, ei käyttäjätunnuksia. Jos liität tiedostojärjestelmän toisesta järjestelmästä tai jos tiedosto kuuluu nyt poistetulle käyttäjälle tai jos välität numeerisen käyttäjätunnuksen chown, sinulla voi olla tiedosto, joka kuuluu käyttäjätunnukselle, jolla ei ole nimeä.

Jaetulla isännällä voi olla pääsy joihinkin tiedostoihin, jotka on jaettu useiden virtuaalikoneiden välillä, joista jokaisella on heidän tietokantansa. Tämä on vähän outoa (miksi jakaa tiedostoja, mutta ei niitä omistavia käyttäjiä?), mutta se on teknisesti mahdollista.

Kommentit

  • I ’ m näkee numeron nimen sijasta kohdassa ls -l, jos nimen pituus on yli kahdeksan merkkiä.
  • @kgrittn Se saattaa riippua Unix-variantissa. GNU ls näyttää koko käyttäjänimen. BusyBox ls katkaisee sen 8 merkkiin (ainakin tässä rakennuksessa).

Vastaa

Yritä

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

Kommentit

  • Jos tämä ei palauta mitään, se tarkoittaa, että en ’ sinulla ei ole oikeutta kääntää tunnusta käyttäjänimeksi?
  • Et todennäköisesti t set ” $ uid ” `tai kyseistä uidia ei ole ’. Löytääkö grep ":$uid:" /etc/passwd sen? Tuottaako getent passwd mitään tulosta?
  • @cwd: Sinulla on aina oltava oikeus kääntää tunnus käyttäjätunnukseksi. Esimerkiksi ls -l tekee aina tämän.
  • On vain utelias, koska katsot ls -tietoja jaetusta isännästä näytti numeroita käyttäjän / ryhmän nimen sarakkeissa, joissa oli ls. Ehkä se on tietoturva- tai jailshell-asia?
  • @cwd Todennäköisesti jaettu isäntä käyttää /etc/passwd liitettyä / jaettua muualta, jota ei ollut ’ ei asennettu tuolloin.

Vastaa

Saatat pitää tästä pienestä laulelma.

$ id -nu [number] 

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

Voin vahvistaa, että se palauttaa vastaavan käyttäjänimen, jos sellainen on olemassa, Arch Linuxissa. Voin myös vahvistaa, että se ei toimi Ubuntussa normaalina käyttäjänä, vaikka en ole testannut tätä pääkäyttäjänä. Se ei myöskään toimi Alpine Linuxissa. Ehkä suojausominaisuus estää tämän toimimasta joissakin järjestelmissä.

Kommentit

  • id -u jimmij = > 1000. id -nu 1000 = > id: 1000: no such user.
  • toimii minulle, id --version = id (GNU coreutils) 8.23
  • Toimii myös FreeBSD 10.3: ssa.
  • huomautus: tämä toimii Red Hat / CentOS > = 7 -käyttöjärjestelmässä (ei Red Hat / CentOS -käyttöjärjestelmässä < = 6)
  • FYI tämä ei toimi busybox / alpine linux / alpine docker -kuvilla

Vastaa

Ymmärrän, että tämä on vanha kysymys, mutta tässä on toinen vastaus

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

Kommentit

  • Kirjoita grep mitä? (Jos lisäät neljä välilyöntiä rivin alkuun, se tekee siitä kiinteän leveyden tekstin.)
  • Pidän parempana vastausta getent passwd. Mutta jos jäsennetään tiedostoa / etc / passwd, olisi mukavampaa käyttää vain awk-tiedostoa ID=0 ; awk -F: '{if ( $3 == '"$ID"' ) print $1}' /etc/passwd.

vastaus

Jäsennys / etc / passwd:

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

Kommentit

  • Toisin kuin getent, tämä ei toimi, jos järjestelmä käyttää LDAP: tä.
  • tämä ei toimi ’ myöskään, jos NIS i s tai mikä tahansa muu jaettu todennusprotokolla.
  • @choroba: jos hänellä olisi erityinen vaatimus LDAP: lle tai NIS: lle, hän todennäköisesti mainitsisi sen. Ratkaisuni toimii tyypillisissä Linux-asennuksissa.
  • alamäki, koska se ’ ei ole luotettava (se voi vastata joko käyttäjää tai ryhmää).

Vastaa

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

Tämä oneliner tekee seuraavaa:

  • hanki käyttäjätietoja
  • poimi ensimmäinen sarake (”uid = ID (NAME)”)
  • poista kaikki ennen sulkeita ja suluet itse

vastaus

Komennolla id voidaan käyttää molemmat etsimään UID- ja / tai KÄYTTÄJÄN nimi

  1. etsimään KÄYTTÄJÄN UID-tunnus , esimerkiksi:
 $ id -u ubuntu 1000 
  1. etsi KÄYTTÄJÄ UID: lta , esimerkiksi:
 $ id -un 1000 ubuntu 

Jos UID- tai USER-käyttäjää ei löydy nykyisestä koneesta, se tulostaa -sanoma, esimerkiksi:

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

Lähettäjä 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 

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *