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 a grep ":$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álni ID=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

  1. egy UID a USER részéről , például:
 $ id -u ubuntu 1000 
  1. 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 

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük