Product SiteDocumentation Site

9.3. Gestió de permisos

Linux és definitivament un sistema multiusuari, així doncs és necessari proporcionar un sistema de permisos per controlar el conjunt d'operacions autoritzades en fitxers i directoris, que inclou tots els recursos i dispositius del sistema (en un sistema Unix, qualsevol dispositiu està representat per un fitxer o directori). Aquest principi és comú a tots els sistemes Unix, però un recordar-lo sempre és útil, especialment perquè hi ha alguns usos avançats interessants i relativament desconeguts.

9.3.1. Propietaris i permisos

Cada fitxer o directori té permisos específics per a tres categories d'usuaris:
  • el propietari (simbolitzat amb la lletra u d'usuari);
  • el grup propietari (simbolitzat per la lletra g de grup), que representa tots els membres del grup;
  • els altres (simbolitzat per la lletra o de l'anglès «other» o “altres”).
Es poden combinar tres tipus bàsics de drets:
  • lectura (representat por la lletra r de «read», llegir en anglès);
  • escriptura (o modificació, representat amb la lletra w de «write», escriure en anglès);
  • execució (representat amb la lletra x d'«eXecute»: executar en anglès).
En el cas d'un arxiu, aquests permisos es poden entendre fàcilment: l'accés de lectura permet llegir-ne el contingut (incloent-hi la còpia), l'accés d'escriptura permet modificar-lo, i l'accés d'execució permet executar-lo (que només funcionarà si és un programa).
A directory is handled differently. Read access gives the right to consult the list of its entries (files and directories), write access allows creating or deleting files, and execute access allows “traversal“, the possibility crossing through it (especially to go there with the cd command). Being able to cross through a directory without being able to read it gives permission to access the entries therein that are known by name, but not to find them if you do not know their existence or their exact name.
Tres ordres controlen els permisos associats a un fitxer:
  • chown usuari fitxer canvia el propietari del fitxer;
  • chgrp grup fitxer canvia el grup propietari;
  • chmod permisos fitxer canvia els permisos del fitxer.
Hi ha dues maneres de representar els permisos. Entre elles, la representació simbòlica és probablement la més fàcil d'entendre i recordar. Es tracta dels símbols de les lletres esmentats anteriorment. Podeu definir els drets de cada categoria d'usuaris (u/g/o), establint-los explícitament (amb=), afegint-los (+), o traient-los (-). Així, la fórmula u=rwx,g+rw,o-r dona al propietari permisos de lectura, escriptura i execució, afegeix permís de lectura i d'escriptura per al grup propietari, i elimina el permís de lectura per a altres usuaris. Els permisos no alterats per l'addició o substracció en una ordre d'aquest tipus romanen igual. La lletra a, de «all» en anglès (tot), cobreix les tres categories d'usuaris, de manera que a=rx concedeix a les tres categories els mateixos permisos (lectura i execució, però no escriptura).
La representació numèrica (octal) associa a cada permís amb un valor: 4 per a la lectura, 2 per a l'escriptura, i 1 per a l'execució. Associem cada combinació de permisos amb la suma de les xifres. Cada valor s'assigna a les diferents categories d'usuaris posant-los en l'ordre habitual (propietari, grup, altres).
Per exemple, l'ordre chmod 754 fitxer establirà els següents permisos: lectura, escriptura i execució per al propietari (atès que 7 = 4 + 2 + 1); lectura i execució per al grup (de 5 = 4 + 1); i només lectura per a altres. El 0 (zero) significa cap permís; així chmod 600 fitxer concedeix permisos de lectura/escriptura per al propietari, i cap permís per a ningú més. Les combinacions més freqüents són 755 per a fitxers executables i directoris, i 644 per a fitxers de dades.
Per representar els permisos especials es pot prefixar un quart dígit a aquest nombre segons el mateix principi, on els bits setuid, setgidi sticky són 4, 2 i 1 respectivament. chmod 4754 associarà el bit setuid amb els permisos descrits prèviament.
Tingueu en compte que l'ús de la notació octal només permet establir simultàniament tots els permisos a un fitxer; no es pot utilitzar simplement per afegir un nou permís, com ara l'accés de lectura per al propietari del grup, ja que cal tenir en compte els drets existents i calcular el nou valor numèric corresponent.

9.3.2. ACLs - Access Control Lists

Molts sistemes de fitxers, per exemple Btrfs, Ext3, Ext4, JFS, XFS, etc., admeten l'ús de llistes de control d'accés (ACL o «Access Control Lists»). Aquestes amplien les característiques bàsiques de la propietat i els permisos dels fitxers, descrits a la secció anterior, i permeten un control més refinat de cada objecte (fitxer). Per exemple: un usuari vol compartir un fitxer amb un altre usuari i aquest usuari només l'hauria de poder llegir, però ni escriure-hi ni canviar-lo.
Per a alguns dels sistemes de fitxers, l'ús d'ACLs està habilitat per defecte (per exemple Btrfs, Ext3, Ext4). Per a altres sistemes de fitxers o sistemes més antics s'ha d'habilitar utilitzant l'opció de muntatge acl - ja sigui directament amb l'ordre mount o a /etc/fstab. De la mateixa manera, l'ús de les ACL es pot desactivar utilitzant l'opció de muntatge noacl. Per als sistemes de fitxers Ext* també es pot utilitzar l'ordre tune2fs -o [no]acl /dev/dispositiu per activar/desactivar l'ús d'ACLs per defecte. Els valors predeterminats per a cada sistema de fitxers normalment es poden trobar a la secció 5 de les seves pàgines de manual homònimes (sistema-de-fitxers(5)) o a mount(8).
Després d'habilitar les ACLs, els permisos es poden establir utilitzant l'ordre setfacl(1), mentre que getfacl(1) permet recuperar els ACL d'un objecte o camí donats. Aquestes ordres formen part del paquet acl. Amb setfacl també es poden configurar els fitxers o directoris acabats de crear perquè heretin els permisos del directori pare. És important assenyalar que les ACL són processades per ordre i que una entrada anterior que encaixi a la situació té prioritat sobre les entrades posteriors.
Si un fitxer té configurades ACLs, la sortida de l'ordre ls -l mostrarà un signe “+” després dels permisos tradicionals. Quan s'utilitzen ACLs, l'ordre chmod es comporta lleugerament diferent, i umask pot ser ignorat. L'àmplia documentació, per exemple acl(5), conté més informació.