A id
paranccsal fel lehet keresni egy felhasználót “s uid
, például:
$ id -u ubuntu 1000
Van-e parancs a felhasználónév megkeresésére egy uid
? Tudomásul veszem, hogy ez megtehető a /etc/passwd
fájl megtekintésével, de azt kérdezem, hogy van-e ehhez létező parancs, főleg ha a végrehajtó felhasználó nem root. / p>
Nem a jelenlegi felhasználó felhasználónevét keresem, azaz nem a whoami
vagy a logname
.
Ez arra is kíváncsi volt, hogy a megosztott webes tárhelyen ez egy biztonsági funkció, vagy csak nem értek valamit helyesen?
Vizsgálathoz: a /etc/passwd
fájl egy megosztott webhosztról:
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
És itt van egy példa a /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
Láthatjuk root
egyes fájlok tulajdonosa, és a root
is megjelenik a /etc/passwd
mappában, azonban a többi felhasználó / csoport is számként jelenik meg .
Megjegyzések
- Ne feledje, hogy több felhasználó is használhatja ugyanazt az UID-t. ‘ ritkán fordul elő, de alkalmanként előfordul.
Válasz
ls
már végrehajtja ezt a keresést. Felhasználói információk kikeresését a parancssorból a getent passwd
paranccsal hajthatja végre.
Ha ls
felhasználónév helyett felhasználói azonosítót mutat, azért, mert ezen a néven nincs felhasználó. A fájlrendszerek felhasználói azonosítókat tárolnak, nem felhasználói neveket. Ha fájlrendszert csatlakoztat egy másik rendszerből, vagy ha egy fájl egy most törölt felhasználóhoz tartozik, vagy ha numerikus felhasználói azonosítót adott át az chown
címre, akkor a fájlhoz tartozik olyan felhasználói azonosítóhoz, amelynek nincs neve.
Megosztott gazdagépen hozzáférhet bizonyos fájlokhoz, amelyek több virtuális gép között vannak megosztva, mindegyik a felhasználói adatbázisával. Ez egy kicsit furcsa. (miért osztja meg a fájlokat, de nem a birtokló felhasználókat?), de ez technikailag lehetséges.
Megjegyzések
- I ‘ m a számot látja a név helyett a
ls -l
oldalon, ha a név nyolc karakternél hosszabb. - @kgrittn Lehetséges, hogy ez a Unix változatán. A GNU ls a teljes felhasználónevet mutatja. A BusyBox ls 8 karakterre csonkolja (legalábbis az itt található összeállításon).
Válasz
Próbálja
getent passwd "$uid" | cut -d: -f1
Megjegyzések
- Ha ez nem ad semmit, ez azt jelenti, hogy nem ‘ nincs hozzáférése az azonosító felhasználónévvé történő lefordításához?
- Valószínűbb, hogy nem
t set
” $ uid ” `vagy az uid nem létezik ‘. Megtalálja agrep ":$uid:" /etc/passwd
?getent passwd
hoz létre valamilyen kimenetet? - @cwd: Mindig hozzáféréssel kell rendelkeznie ahhoz, hogy egy azonosítót felhasználónévvé fordítson. Például
ls -l
mindig ezt csinálja. - Csak kíváncsi, mert egy megosztott gazdagépen egy
ls
listát néz. számokat mutatott a felhasználó / csoport neve oszlopokban ls-sel. Talán biztonsági elővigyázatosságról vagy jailshellről van szó? - @cwd Valószínűbb, hogy a megosztott gazdagép egy
/etc/passwd
t használ, máshonnan csatlakoztatva / megosztva, amely nem volt ‘ t akkoriban csatlakoztatták.
Válasz
Élvezheti ezt a kicsit dalocska.
$ id -nu [number]
3.17.3-1-ARCH # 1 SMP PREEMPT péntek 14. nov. 22:56:01 CET 2014, i686 GNU / Linux
Meg tudom erősíteni, hogy az Arch Linux-on megfelelő felhasználói nevet ad vissza, ha van ilyen. Azt is megerősíthetem, hogy normál felhasználóként futtatva nem működik az Ubuntuban, bár ezt nem teszteltem superuserként. Az Alpine Linuxon sem működik. Lehet, hogy egy biztonsági funkció megakadályozza, hogy ez egyes rendszereken működjön.
Megjegyzések
-
id -u jimmij
= >1000
.id -nu 1000
= >id: 1000: no such user
. - nekem működik,
id --version
=id (GNU coreutils) 8.23
- A FreeBSD 10.3-ban is működik.
- megjegyzés: ez a Red Hat / CentOS > = 7 esetén működik (nem a Red Hat / CentOS < = 6)
- A FYI ez nem működik busybox / alpine linux / alpine docker képeken
Válasz
Tudomásul veszem, hogy ez egy régi kérdés, de itt van egy másik válasz
awk -F: "{print $1,$3}" /etc/passwd | grep <UID>
Megjegyzések
- Csúcs a
grep
mihez? (Ha négy sort is felvesz a sor elejére, akkor az rögzített szélességű szövegként jelenik meg.) - Inkább választ adok a következővel:
getent passwd
. De ha az / etc / passwd elemzést végezzük, szebb lenne csak az awk alkalmazást használniID=0 ; awk -F: '{if ( $3 == '"$ID"' ) print $1}' /etc/passwd
.
Válasz
Elemzés / etc / passwd:
% awk -F: "/:$(id -u ubuntu):/{print \$1}" /etc/passwd ubuntu
Megjegyzések
- A
getent
-vel ellentétben ez nem működik, ha a rendszer LDAP-ot használ. - ez nem működik ‘ sem, ha NIS i használt vagy bármilyen más elosztott hitelesítési protokoll.
- @choroba: ha sajátos követelménye lenne az LDAP-ra vagy a NIS-re, akkor valószínűleg megemlítette volna. Megoldásom tipikus linuxos beállításokon működik.
- downvote, mivel ‘ nem megbízható (illeszkedhet akár a felhasználóhoz, akár a csoporthoz).
Válasz
id | awk "{print $1}" | sed "s/.*(//;s/)$//"
Ez az oneliner a következőket teszi:
- felhasználói információk lekérése
- az első oszlop (“uid = ID (NAME)” kivonása
- a zárójelek előtti elemek és maguk a zárójelek eltávolítása
Válasz
A id
parancs használható mindkét az UID és / vagy a USER név megkeresésére
- egy UID a USER részéről , például:
$ id -u ubuntu 1000
- keressen meg egy FELHASZNÁLÓT az UID használatával , például:
$ id -un 1000 ubuntu
Ha az UID vagy a USER nem található a jelenlegi gépen, akkor üzenet, például:
$ id -un 1234 id: 1234: no such user
Feladó 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