Les marques de drets d'accés Unix i Linux setuid i setgid (abreviatura de set user identity i set group identity) permeten als usuaris executar un executable amb els permisos del sistema de fitxers del propietari o grup de l'executable respectivament i canviar el comportament als directoris. Sovint s'utilitzen per permetre als usuaris d'un sistema informàtic executar programes amb privilegis elevats temporalment per realitzar una tasca específica. Tot i que els privilegis d'identificació d'usuari o d'identificador de grup que es proporcionen no sempre són elevats, com a mínim són específics.
Les marques setuid
i setgid
són necessàries per a tasques que requereixen privilegis diferents dels que normalment se'ls concedeix a l'usuari, com ara la possibilitat d'alterar fitxers del sistema o bases de dades per canviar la seva contrasenya d'inici de sessió.[1] Tanmateix, algunes de les tasques que requereixen privilegis addicionals poden no ser òbvies immediatament, com ara l'ordre ping
, que ha d'enviar i escoltar paquets de control en una interfície de xarxa.[2]
Els bits setuid
i setgid
es representen normalment com els valors 4 per a setuid
i 2 per a setgid
en el dígit octal d'ordre superior del mode de fitxer. Per exemple, 6711
té establerts els bits setuid
i setgid
(4 + 2 = 6 ), i també el fitxer lectura/escriptura/executable per al propietari (7) i executable pel grup (primer 1) i altres (segon 1).). La majoria de les implementacions tenen una representació simbòlica d'aquests bits; a l'exemple anterior, podria ser u=rwx,go=x,ug+s
.
Normalment, chmod
no té un mode recursiu restringit als directoris, de manera que la modificació d'un arbre de directoris existent s'ha de fer manualment, amb una ordre com ara find /path/to/directory -type d -exec chmod g+s '{}' '\'
.
Els senyaladors setuid
i setgid
tenen efectes diferents, depenent de si s'apliquen a un fitxer, a un directori o executable binari o executable no binari. Els senyaladors setuid
i setgid
només tenen efecte en els fitxers executables binaris i no en els scripts (per exemple, Bash, Perl, Python).[3]
Quan s'estableix en un fitxer executable
Quan els atributs setuid
o setgid
s'estableixen en un fitxer executable, qualsevol usuari capaç d'executar el fitxer executarà automàticament el fitxer amb els privilegis del propietari del fitxer (normalment root) i/o del grup del fitxer, depenent de les marques establertes.[4] Això permet al dissenyador del sistema permetre que s'executin programes de confiança que, d'altra manera, un usuari no podria executar. Aquests poden no ser sempre evidents. Per exemple, l'ordre ping pot necessitar accés a privilegis de xarxa als quals un usuari normal no pot accedir; per tant, se li pot donar el senyalador setuid per assegurar-se que un usuari que necessita fer ping a un altre sistema ho pot fer, encara que el seu compte no tingui el privilegi necessari per enviar paquets.
Quan s'estableix en un directori
Establir el permís setgid
en un directori fa que els fitxers i subdirectoris creats heretin la propietat del grup, en lloc del grup principal del procés de creació de fitxers. Els subdirectoris creats també hereten el bit setgid
. La política només s'aplica durant la creació i, per tant, només de manera prospectiva. Els directoris i fitxers existents quan s'aplica el bit setgid
no es veuen afectats, igual que els directoris i fitxers moguts al directori on s'ha establert el bit.