GNU/Linux >> Linux Esercitazione >  >> Linux

Tutto ciò che è importante sapere sull'UID in Linux

Cos'è l'UID in Linux?

UID sta per identificatore utente. Un UID è un numero assegnato a ciascun utente Linux. È la rappresentazione dell'utente nel kernel Linux. L'UID viene utilizzato per identificare l'utente all'interno del sistema e per determinare a quali risorse di sistema può accedere l'utente. Questo è il motivo per cui l'ID utente dovrebbe essere univoco.

Puoi trovare l'UID memorizzato nel file /etc/passwd. Questo è lo stesso file che può essere utilizzato per elencare tutti gli utenti in un sistema Linux.

Usa un comando Linux per visualizzare il file di testo e vedrai varie informazioni sugli utenti presenti sul tuo sistema.

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

Il terzo campo qui rappresenta l'ID utente o l'UID.

Si noti che nella maggior parte delle distribuzioni Linux, l'UID 1-500 è solitamente riservato agli utenti del sistema. In Ubuntu e Fedora, l'UID per i nuovi utenti inizia da 1000.

Ad esempio, se utilizzi il comando adduser o useradd per creare un nuovo utente, riceverà il numero successivo disponibile dopo 1000 come UID.

In Linux, UID 0 e GID 0 sono riservati all'utente root.

Come trovare l'UID di un utente in Linux?

Puoi sempre fare affidamento sul file /etc/passwd per ottenere l'UID di un utente. Questo non è l'unico modo per ottenere le informazioni UID in Linux.

Il comando id in Linux visualizzerà l'UID, il GID e i gruppi a cui appartiene l'utente corrente:

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)

Puoi anche specificare i nomi utente con il comando id per ottenere l'UID di qualsiasi utente Linux:

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

Come modificare l'UID di un utente in Linux?

Supponiamo di avere diversi utenti sul tuo sistema Linux. Hai dovuto eliminare un utente perché ha lasciato l'organizzazione. Ora vuoi che il suo UID venga preso da un altro utente già sul sistema.

Puoi cambiare l'UID modificando l'utente usando il comando usermod in questo modo:

usermod -u 1004 user_2

Devi disporre del privilegio di superutente per eseguire il comando precedente.

Ricordi il concetto di autorizzazione e proprietà dei file in Linux? La proprietà di un file è determinata dall'UID dell'utente proprietario.

Quando aggiorni l'UID di un utente, cosa succede ai file di proprietà di questo utente? Mentre tutti i file nella home directory di utente_2 avranno l'UID associato modificato, dovrai aggiornare manualmente l'UID associato di altri file esterni la directory principale.

Quello che puoi fare è aggiornare manualmente la proprietà dei file associati al vecchio UID dell'utente_2.

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

Come si associa l'UID a diverse risorse di sistema? [per utenti avanzati]

Gli UID sono univoci tra loro e quindi possono essere utilizzati anche per identificare la proprietà di diverse risorse di sistema come file e processi.

UID e file

Spero che tu abbia familiarità con il concetto di autorizzazione dei file in Linux. Quando crei un file, sei il proprietario di questo file. Ora puoi decidere chi deve fare cosa con questo file. Questo fa parte del meccanismo DAC di Linux in cui ogni file viene lasciato a discrezione del suo proprietario.

Puoi leggere la proprietà di un file usando il comando ls o stat. Facciamolo con il popolare comando ls e controlliamo la proprietà del binario sleep o passwd .

Come puoi vedere, il file /usr/bin/sleep appartiene a root:

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

Forziamolo a mappare la proprietà con l'UID invece del nome utente:

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

Ecco informazioni divertenti. Il tuo sistema operativo non riconosce i "nomi utente". Ogni volta che un programma deve lavorare con nomi utente o deve stamparli, fa riferimento a /etc/passwd file per estrarre le informazioni.

Non devi prendere le mie parole per questo. Guarda tu stesso con il programma strace che stampa tutte le chiamate di sistema fatte da un programma.

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

Quello che stai cercando di vedere è se ls il comando sta tentando di leggere il /etc/passwd file o meno.

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

Fin qui tutto bene.

UID e processi

Anche i processi hanno dei proprietari, proprio come i file. Solo il proprietario (o l'utente root) di un processo può inviargli segnali di processo. È qui che entra in gioco l'UID.

Se un utente normale tenta di terminare un processo di proprietà di un altro utente, risulterà in errore:

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

Solo il proprietario del processo o il root può farlo.

Un processo deve essere regolamentato. Regolamentato in quanto è necessario disporre di un modo per limitare o sapere quanto è consentito fare un processo. Ciò è determinato dai suoi UID.

Esistono tre tipi di UID associati a un processo.

  1. UID reale :L'UID reale è l'UID che un processo adotta dal suo genitore. In termini più semplici, chiunque avvii un processo, l'UID di quell'utente è il vero UID del processo. Questo è utile per identificare a chi appartiene veramente un processo. Ciò è essenziale soprattutto quando l'UID effettivo non è lo stesso dell'UID reale di cui parlerò in seguito.
  2. UID efficace :Questo è ciò che principalmente determina quali autorizzazioni ha realmente un determinato processo. Sebbene un utente possa avviare il processo, può essere eseguito con le autorizzazioni disponibili di un altro utente. Il comando passwd ne è un esempio. Questo programma modifica il file /etc/shadow , che è root Di proprietà. Pertanto, un utente normale non dovrebbe essere in grado di eseguire questo comando o modificare la propria password. Fortunatamente, il binario viene eseguito con un UID effettivo di 0 (cioè root), che gli consente di avere privilegi sufficienti per modificare il /etc/shadow file. Gli UID reali ed effettivi sono per lo più gli stessi tranne nel caso di binari abilitati per bit SUID.
  3. UID salvato :UID disponibile a disposizione di un processo. Questo non viene normalmente utilizzato, ma è ancora lì nel caso in cui il processo sappia che non eseguirà alcun lavoro privilegiato, quindi può cambiare il suo UID effettivo in qualcosa che non è privilegiato. Ciò riduce la superficie di un comportamento scorretto non intenzionale.

Questo è tutto. Spero che tu abbia un'idea migliore dell'UID in Linux ora. Non esitate a porre le vostre eventuali domande.

Come utente professionista di Linux, se pensi che mi sia sfuggito qualche concetto importante sull'UID, faccelo sapere nella sezione commenti.


Linux
  1. Tutto quello che devi sapere su Ubuntu 13.04

  2. Cos'è SteamOS? Tutto ciò che è importante sapere su questa "distribuzione di giochi"

  3. Directory Linux tmp:tutto ciò che devi sapere

  4. Compressione file Linux:tutto ciò che devi sapere

  5. Permessi dei file Linux:tutto ciò che devi sapere

Tutto ciò che devi sapere sul sistema operativo Peppermint Linux

Tutto quello che devi sapere su Black Lab Linux

Tutto ciò che devi sapere su Linux Mint Distro

Tutto ciò che devi sapere sugli inode in Linux

Tutto ciò che è importante sapere su Hard Link in Linux

Tutto quello che c'è da sapere sulla directory /tmp di Linux