Setuid

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]

Modes de fitxer

[modifica]

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 '{}' '\'.

Efectes

[modifica]

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

[modifica]

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

[modifica]

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.

Referències

[modifica]
  1. Frisch, Æleen. Essential system administration (en anglès). O'Reilly, 2009-02-09, p. 351. ISBN 9780596550493. 
  2. «How to use special permissions: the setuid, setgid and sticky bits» (en anglès). [Consulta: 24 novembre 2023].
  3. Billimoria, Kaiwan N. Hands-On System Programming with Linux: Explore Linux system programming interfaces, theory, and practice (en anglès). Packt Publishing Ltd, 2018, p. 250. ISBN 978-1-78899-674-7. 
  4. Frisch, Æleen. Essential system administration (en anglès). O'Reilly, 2009-02-09, p. 351. ISBN 9780596550493.