GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è lo scopo di ciascuno dei diversi UID che un processo può avere?

Ad ogni processo UNIX sono associati 3 UID. Il privilegio di superutente è UID=0.

UID reale

Questo è l'UID dell'utente/processo che ha creato QUESTO processo. Può essere modificato solo se il processo in esecuzione ha EUID=0.

UID effettivo

Questo UID viene utilizzato per valutare i privilegi del processo per eseguire una particolare azione. L'EUID può essere modificato in RUID o SUID se EUID!=0. Se EUID=0, può essere modificato in qualsiasi cosa.

UID salvato

Se esegui un eseguibile con il bit set-UID impostato, il processo in esecuzione risultante inizierà con un UID reale dell'utente reale che lo esegue e un UID effettivo e salvato del proprietario del file eseguibile. Se poi il processo chiama setuid() o seteuid() per cambiare il loro UID effettivo, possono comunque recuperare nuovamente i loro privilegi originali grazie all'UID salvato. Se il bit set-UID non è impostato, SUID sarà il RUID.


Il vero uid è l'id dell'utente che ha lanciato un processo.

L'effettivo uid tipicamente è lo stesso dell'effettivo uid. È diverso solo se:

  • l'eseguibile aveva il bit set-uid impostato e il proprietario dell'eseguibile è diverso dall'utente che lo ha chiamato

  • o se un processo set-uid chiama setuid(2). Se il processo ha privilegi di superutente, qualsiasi argomento per setuid(2) è consentito (ma poi tutti gli *-uid vengono impostati sullo stesso valore); altrimenti, setuid(2) può essere chiamato con il real-uid o l'effettivo-uid o il salvato-uid.

L'uid salvato è l'uid effettivo che il processo aveva quando è stato avviato, ed è salvato per essere consentito come argomento alle varie chiamate di sistema set*uid.

Nota che un processo con privilegio di superutente che chiama setuid(2) per modificare il suo uid effettivo avrà anche l'uid reale e l'uid salvato modificati allo stesso valore, quindi al suo posto dovrebbe essere utilizzato seteuid(2) non POSIX.

Tutto quanto sopra si applica anche agli ID di gruppo (reali|efficaci|salvati).


Oltre agli UID reali, effettivi e salvati, i sistemi Unix con l'auditing abilitato hanno anche l'audit UID. L'AUID di un processo identifica l'utente che ha avviato il processo; non viene modificato da setuid(2) o seteuid(2). L'intento è che rimanga costante durante tutto il processo e venga utilizzato solo per contrassegnare i record di controllo. Pertanto, se un utente esegue una shell privilegiata (anche un utente autorizzato tramite su o sudo), i record di audit di quel processo vengono contrassegnati da quell'utente.


Linux
  1. Quali sono i diversi tipi di shell in Linux?

  2. Qual è lo scopo del gruppo "wheel" in Linux

  3. Come posso visualizzare l'utilizzo della memoria di ciascun processo se eseguo un 'ps -ef'?

  4. Cosa fare quando Ctrl + C non può terminare un processo?

  5. Qual è la definizione di una sessione in Linux?

Cosa hanno in comune i diversi Bsd?

SIGTERM vs SIGKILL:qual è la differenza?

Qual è l'attuale sorgente del kernel Linux?

Trova quale processo si trova all'altra estremità di un tubo

Come può sembrare che un processo abbia un nome diverso nell'output di ps?

Qual è lo scopo della directory setgid?