divendres, de setembre 21, 2007

Permisos d'accés a fitxers en Linux

Una vegada ho hauràs entés te n'adonaràs que no podia ser més simple.

La majoria dels sistemes de fitxers moderns permeten assignar permisos o drets d'accés als fitxers per a determinats usuaris i grups d'usuaris. D'aquesta manera, es pot restringir o permetre l'accés d'un determinat usuari a un fitxer per a la visualització dels seus continguts, modificació i/o execució (en cas d'un fitxer executable).

Els sistemes UNIX o compatibles POSIX, incloent els sistemes basats en Linux i Mac OS X, tenen un sistema simple per al tractament dels permisos sobre fitxers individuals. POSIX especifica també un sistema de llistes de control d'accés, però sols és implementat per certs sistemes de fitxers i sistemes operatius.

Els permisos en sistemes UNIX es divideixen en tres classes conegudes com usuari, grup i altres.
  • Usuari: El nom d'usuari de la persona que és propietària del fitxer. Per defecte, l'usuari que crea el fitxer esdevé el seu propietari.
  • Grup: El grup d'usuaris que és propietari del fitxer. Tots els usuaris que pertanyen al grup que és propietari del fitxer tindrás els mateixos permisos d'accés al fitxer. Això és util si, per exemple, tens un projecte que requereix que cert nombre d'usuaris puguen accedir a determinats fitxers, però la resta d'usuaris no. En aquest cas s'han d'afegir aquestos usuaris al mateix grup i assegurar-se que els fitxers dels que parlem pertanyes al grup amb els permisos adequats.
  • Altres: Qualsevol usuari que no siga el propietari del fitxer i no pertanya al grup que és propietari del fitxer. Els permisos assignats a la categoria "altres" afectara a tots aquestos usuaris.
Podem veure els permisos d'un fitxer amb la següent ordre:

msolde@calvino: /home/msolde$ ls -l

drwxr-xr-x 2 msolde remas 4096 Sep 20 14:58 foodir
-rwxrw-r-- 1 msolde remas 0 Sep 21 10:25 foofitxer

Existeixen moltes formes de representar els esquemes de permisos en UNIX, però la forma més comú és la notació simbòlica. Aquest esquema permet representar els permisos en una série de 10 caràcters.

El primer caràcter indica el tipus de fitxer:

  • '-' per a un fitxer normal
  • 'd' per a un directori
  • 'b' per a un fitxer especial de blocs
  • 'c' per a un fitxer especial de caràcters
  • 'l' per a un enllaç simbòlic
  • 'p' per a un conducte amb nom
  • 's' per a un socket de domini
Cada classe de permís es representa per tres caràcters. El primer conjunt de caràcters representa la classe d'usuari, el segon conjunt representa la classe de grup i el tercer grup representa la classe del altres o la resta del món.

Cadascun dels tres caràcters representa els permisos de lectura, escriptura i execució respectivament:

  • 'r' si el bit de lectura està assignat, '-' en cas contrari.
  • 'w' si el bit de escriptura està assignat, '-' en cas contrari.
  • 'x' si el bit d'execució està assignat, '-' en cas contrari.
En l'exemple anterior tindríem:

-rwxrw-r-- 1 msolde remas 0 Sep 21 10:25 foofitxer

El propietari msolde podrà fer qualsevol cosa sobre foofitxer, els usuaris del grup remas el podrien llegir i escriure, mentre que la resta del món només el podria llegir.

Aquestos permisos també els podem representar en notació octal assignant un número a cada grup de permisos:
  • 0 ---
  • 1 --x
  • 2 -w-
  • 3 -wx
  • 4 r--
  • 5 r-x
  • 6 rw-
  • 7 rwx
Així en el nostre fitxer d'exemple tindríem que els permisos es representarien com a 764.

Aquesta és la notació que es sol utilitzar amb la comanda chmod quan volem canviar els permisos d'un fitxer. Podem donar permisos d'escriptura/lectura als tres grups amb aquesta ordre.

msolde@calvino: /home/msolde$ chmod 666 foofitxer
msolde@calvino: /home/msolde$ ls -l

drwxr-xr-x 2 msolde remas 4096 Sep 20 14:58 foodir
-rw-rw-rw- 1 msolde remas 0 Sep 21 10:25 foofitxer

És un tema molt més complex del que he explicat però com a una introducció veig bé aquesta entrada.