GNU/Linux >> Znalost Linux >  >> Linux

Vše důležité, co potřebujete vědět o UID v Linuxu

Co je UID v Linuxu?

UID je zkratka pro identifikátor uživatele. UID je číslo přiřazené každému uživateli Linuxu. Je to reprezentace uživatele v jádře Linuxu. UID se používá pro identifikaci uživatele v systému a pro určení, ke kterým systémovým zdrojům má uživatel přístup. To je důvod, proč by ID uživatele mělo být jedinečné.

UID najdete v souboru /etc/passwd. Toto je stejný soubor, který lze použít k zobrazení seznamu všech uživatelů v systému Linux.

Použijte příkaz Linux k zobrazení textového souboru a uvidíte různé informace o uživatelích přítomných ve vašem systému.

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
johndoe:x:1000:1000:John Doe,,,:/home/helder:/bin/bash
davmail:x:127:65534::/var/lib/davmail:/usr/sbin/nologin
statd:x:128:65534::/var/lib/nfs:/usr/sbin/nologin

Třetí pole zde představuje ID uživatele nebo UID.

Pamatujte, že ve většině distribucí Linuxu je UID 1-500 obvykle vyhrazeno pro systémové uživatele. V Ubuntu a Fedoře začíná UID pro nové uživatele od 1000.

Pokud například k vytvoření nového uživatele použijete příkaz adduser nebo useradd, získá jako své UID další dostupné číslo po 1000.

V Linuxu je UID 0 a GID 0 vyhrazeno pro uživatele root.

Jak zjistit UID uživatele v Linuxu?

Vždy se můžete spolehnout na soubor /etc/passwd, abyste získali UID uživatele. To není jediný způsob, jak získat informace o UID v Linuxu.

Příkaz id v Linuxu zobrazí UID, GID a skupiny, do kterých váš aktuální uživatel patří:

id
uid=1000(abhishek) gid=1000(abhishek) groups=1000(abhishek),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare),127(kvm)

Můžete také zadat uživatelská jména pomocí příkazu id, abyste získali UID libovolného uživatele Linuxu:

id standard
uid=1001(standard) gid=1001(standard) groups=1001(standard)

Jak změnit UID uživatele v Linuxu?

Předpokládejme, že máte na svém systému Linux několik uživatelů. Museli jste smazat uživatele, protože opustil organizaci. Nyní chcete, aby jeho UID převzal jiný uživatel, který je již v systému.

UID můžete změnit úpravou uživatele pomocí příkazu usermod takto:

usermod -u 1004 user_2

K provedení výše uvedeného příkazu musíte mít oprávnění superuživatele.

Pamatujete si koncept oprávnění a vlastnictví souborů v Linuxu? Vlastnictví souboru je určeno UID uživatele vlastníka.

Když aktualizujete UID uživatele, co se stane se soubory vlastněnými tímto uživatelem? I když se u všech souborů v domovském adresáři uživatele_2 změní jejich přiřazené UID, budete muset ručně aktualizovat související UID jiných souborů mimo domovský adresář.

Co můžete udělat, je ručně aktualizovat vlastnictví souborů spojených se starým UID uživatele user_2.

find / -user old_uid_of_user_2 -exec chown -h user_2 {} \;

Jak se UID spojuje s různými systémovými prostředky? [pro pokročilé uživatele]

UID jsou navzájem jedinečná, a proto je lze také použít k identifikaci vlastnictví různých systémových prostředků, jako jsou soubory a procesy.

UID a soubory

Doufám, že jste obeznámeni s konceptem oprávnění souborů v Linuxu. Když vytváříte soubor, jste vlastníkem tohoto souboru. Nyní se můžete rozhodnout, kdo co s tímto souborem udělá. Toto je součást linuxového mechanismu DAC, kde je každý soubor ponechán na uvážení jeho vlastníka.

Vlastnictví souboru můžete přečíst pomocí příkazu ls nebo stat. Udělejme to pomocí oblíbeného příkazu ls a zkontrolujme vlastnictví buď binárního sleep nebo passwd .

Jak vidíte, soubor /usr/bin/sleep patří uživateli root:

ls -l $(which sleep)
-rwxr-xr-x 1 root root 39048 Mar  6  2020 /usr/bin/sleep

Přinuťme jej mapovat vlastnictví pomocí UID namísto uživatelského jména:

ls -lhn $(which sleep)
-rwxr-xr-x 1 0 0 39K Mar  6  2020 /usr/bin/sleep

Zde jsou zábavné informace. Váš operační systém nerozumí "uživatelským jménům". Kdykoli program potřebuje pracovat s uživatelskými jmény nebo je potřebuje vytisknout, odkazuje se na /etc/passwd soubor k extrahování informací.

Nemusíš mi brát slova. Přesvědčte se o tom sami pomocí strace programu, který vypíše všechna systémová volání provedená programem.

strace ls -lhn $(which sleep) 2>&1 | grep passwd

Snažíte se zjistit, zda ls příkaz se pokouší číst /etc/passwd soubor nebo ne.

strace ls -lh $(which sleep) 2>&1 | grep passwd
openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 6

Zatím je to dobré.

UID a procesy

Procesy mají také vlastníky, stejně jako soubory. Procesní signály může odesílat pouze vlastník (nebo uživatel root) procesu. Zde vstupuje do hry UID.

Pokud se normální uživatel pokusí zabít proces vlastněný jiným uživatelem, dojde k chybě:

kill 3708
bash: kill: (3708) - Operation not permitted

To může udělat pouze vlastník procesu nebo root.

Proces musí být regulován. Regulované jako v musíte mít způsob, jak omezit nebo vědět, jak moc je proces dovoleno dělat. To je určeno jeho UID.

S procesem jsou spojeny tři typy UID.

  1. Skutečné UID :Skutečné UID je UID, které proces převezme od svého rodiče. Jednodušeji řečeno, kdokoli spustí proces, UID tohoto uživatele je skutečným UID procesu. To je užitečné při identifikaci, komu proces skutečně patří. To je nezbytné zejména tehdy, když efektivní UID není stejné jako skutečné UID, o kterém budu hovořit dále.
  2. Efektivní UID :To je to, co většinou určuje, jaká oprávnění určitý proces skutečně má. Zatímco uživatel může proces spustit, může jej spustit s dostupnými oprávněními jiného uživatele. Příkaz passwd je jedním příkladem toho. Tento program upravuje soubor /etc/shadow , což je root ve vlastnictví. Normální uživatel by tedy neměl být schopen spustit tento příkaz nebo změnit své heslo. Naštěstí binární soubor běží s efektivním UID 0 (tj. root), což mu umožňuje mít dostatečné oprávnění upravovat /etc/shadow soubor. Skutečná a efektivní UID jsou většinou stejná, kromě případu binárních souborů s povoleným bitem SUID.
  3. Uložené UID :UID, které má proces k dispozici. Ten se běžně nepoužívá, ale je tam stále pro případ, že by proces věděl, že nebude vykonávat žádnou privilegovanou práci, takže může změnit své efektivní UID na něco, co je neprivilegované. Tím se snižuje povrch neúmyslného špatného chování.

A je to. Doufám, že nyní máte lepší představu o UID v Linuxu. Neváhejte se zeptat na případné dotazy.

Pokud si jako profesionální uživatel Linuxu myslíte, že jsem vynechal nějaký důležitý koncept o UID, dejte mi prosím vědět v sekci komentářů.


Linux
  1. Vše, co potřebujete vědět o Ubuntu 13.04

  2. Co je SteamOS? Vše důležité, co potřebujete vědět o této „herní distribuci“

  3. Linux tmp Directory:Vše, co potřebujete vědět

  1. Linuxová komprese souborů:Vše, co potřebujete vědět

  2. Oprávnění souborů Linux:Vše, co potřebujete vědět

  3. Swappiness v Linuxu:Vše, co potřebujete vědět

  1. Vše, co potřebujete vědět o systému souborů Linux

  2. Vše, co potřebujete vědět o Linux Chmod Command

  3. Vše, co potřebujete vědět o Linuxových kontejnerech (LXC)