Ogni processo in un sistema UNIX-like, proprio come ogni file, ha un proprietario (l'utente, sia reale o un sistema di "pseudo-utente", come ad esempio daemon, bin, man, ecc) e proprietario di un gruppo. Il proprietario del gruppo per i file di un utente è in genere il gruppo principale dell'utente e, in modo simile, tutti i processi avviati sono in genere di proprietà dell'ID utente e dell'ID del gruppo primario.
A volte, tuttavia, è necessario disporre di privilegi elevati per eseguire determinati comandi, ma non è desiderabile fornire diritti amministrativi completi. Ad esempio, il passwdcomando deve accedere al file della password shadow del sistema, in modo che possa aggiornare la password. Ovviamente, non vuoi dare a tutti gli utenti i privilegi di root, solo per poter reimpostare la loro password - questo indubbiamente porterebbe al caos! Invece, deve esserci un altro modo per concedere temporaneamente privilegi elevati agli utenti per eseguire determinate attività. Ecco a cosa servono i bit SETUID e SETGID. È un modo per dire al kernel di aumentare temporaneamente i privilegi dell'utente, per la durata dell'esecuzione del comando contrassegnato. Un binario SETUID verrà eseguito con i privilegi del proprietario del file eseguibile (di solitoroot) e un binario SETGID verrà eseguito con i privilegi di gruppo del proprietario del gruppo del file eseguibile. Nel caso del passwdcomando, che appartiene a rooted è SETUID, consente agli utenti normali di influenzare direttamente il contenuto del file di password, in modo controllato e prevedibile, eseguendo con i privilegi di root. Ci sono numerosi altri SETUIDcomandi UNIX-like sistemi ( chsh, screen, ping, su, ecc), i quali richiedono privilegi elevati per funzionare correttamente. Esistono anche alcuni SETGIDprogrammi, in cui il kernel modifica temporaneamente il GID del processo, per consentire l'accesso ai file di log, ecc. sendmailÈ una tale utilità.
Lo sticky bitha uno scopo leggermente diverso. Il suo uso più comune è garantire che solo l'account utente che ha creato un file possa eliminarlo. Pensa alla /tmpdirectory. Ha autorizzazioni molto liberali, che consentono a chiunque di creare file lì. Questo è un bene, e permette processi agli utenti di creare i file temporanei ( screen, ssh, ecc, mantenere le informazioni di stato a /tmp). Per proteggere i file temporanei di un utente, /tmpè impostato il bit appiccicoso, in modo che solo io possa eliminare i miei file e solo tu puoi eliminare i tuoi. Ovviamente, root può fare qualsiasi cosa, ma dobbiamo sperare che l'amministratore di sistema non sia squilibrato!
Per i file normali (vale a dire per i file non eseguibili), è poco utile impostare i bit SETUID / SETGID. SETGID su directory su alcuni sistemi controlla il proprietario del gruppo predefinito per i nuovi file creati in quella directory.