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).
Un directori es gestiona de manera diferent. L'accés de lectura dona dret a consultar la llista de les seves entrades (fitxers i directoris), l'accés d'escriptura permet crear-hi o suprimir fitxers, i l'accés d'execució permet creuar-lo (especialment per accedir-hi amb l'ordre cd
). Poder creuar un directori sense poder llegir-lo dona permís per accedir a les entrades que es coneixen pel seu nom, però no per a trobar-les si no se'n coneix l'existència o el nom exacte.
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
, setgid
i 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ó.