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? Tuottaakogetent 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-tiedostoaID=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
- etsimään KÄYTTÄJÄN UID-tunnus , esimerkiksi:
$ id -u ubuntu 1000
- 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