Propietarios y permisos en archivos y carpetas en Linux
-
Este hilo forma parte de la guía para montar un servidor en Debian.
Recuerda que el contenido de Hardlimit está bajo licencia Creative Commons.
En Linux, todos los archivos y carpetas tienen dueño. El dueño es el que decide sobre quien puede o no puede modificar, visualizar o ejecutar el archivo. Esos son los permisos.
El único usuario que tiene la capacidad de leerlo y modificarlo todo es el usuario 'root' independientemente de los permisos del archivo o carpeta.
Para modificar el dueño de un archivo o carpeta se usa el comando chown. Para cambiar el dueño de un archivo, tan solo debemos escribir:
chown nombre_de_usuario:grupo /ruta/archivo
Una de las peculiaridades de los sistemas de archivos para Linux es que almacenan estos atributos: cada archivo tiene asociado sus permisos y dueño.
Por otra parte existen las agrupaciones de usuario (grupos). Varios usuarios pueden pertenecer a un mismo grupo. Es posible dar permisos a los usuarios de un determinado grupo, diferentes a los del resto.
De esa forma existen tres agrupaciones a las que se pueden aplicar los permisos: el dueño del archivo o carpeta, los usuarios pertenecientes al grupo al que pertenece el dueño y el resto de usuarios. Para ver los permisos de los archivo, escribimos esto en consola:
ls -l
Los permisos están representados en la columna de la izquierda (ej: -rw-r--r--). Más a la derecha están el dueño y el grupo al que pertenece el dueño que habitualmente tiene el mismo nombre porque normalmente sólo hay un usuario por grupo (ej: root root). Veremos topologías de usuario/grupo más complejas en sistemas donde haya multitud de usuarios. En nuestro servidor, en principio, sólo vamos a tener un usuario personal y usuarios relacionados con los distintos servicios destinados a aislar, por seguridad, el sistema de archivos de dichos servicios.
Centrémonos ahora en la primera columna. Vemos varios caracteres y guiones en una posición concreta. Los caracteres significan esto:
· d: directorio
· r: permiso de lectura
· w: permiso de escritura
· x: permiso de ejecuciónEsa información está dividida en cuatro columnas. De izquierda a derecha, la primera de ellas nos dice si es un archivo o un directorio y está formado por un solo carácter. Si aparece una 'd' es un directorio. Si aparece un guion es un archivo.
La segunda columna tiene tres caracteres y se corresponde a los permisos del dueño del archivo. El primer carácter indica si hay permiso de lectura o no, el segundo de escritura y el tercero de ejecución. Si aparece un carácter, por ejemplo r, significa que hay permiso para lectura. Si aparece un guion significa que el dueño no tiene permiso para la lectura.
La segunda columna representa los permisos de los usuarios pertenecientes al grupo del dueño. Y la tercera columna son los permisos para el resto de usuarios.
Si miramos el archivo 'moodle-2.9.tgz' del ejemplo de arriba vemos que tiene estos caracteres (de izquierda a derecha):
-: Es un archivo (no un directorio)
r: El dueño del archivo puede leerlo
w: El dueño del archivo puede escribir en él
-: El dueño del archivo NO puede ejecutarlo
r: Los usuarios del grupo pueden leerlo
-: Los usuarios del grupo NO pueden escribir en él
-: Los usuarios del grupo NO pueden ejecutarlo
r: El resto de usuarios pueden leerlo
-: El resto de usuarios NO pueden escribir en él
-: El resto de usuarios NO pueden ejecutarloLa forma más simple de representar estos valores es en binario: un cero si no hay permiso y un uno si sí lo hay. Como cada campo tiene 3 bits (lectura, escritura y ejecución), se usa el sistema octal que va de 0 (000) a 7 (111). Por ejemplo, el valor 5 (101) indica que se puede leer y ejecutar, pero no escribir.
De esa forma, chmod usa esta nomenclatura para modificar los permisos de los archivos. Inicialmente, el archivo 'moodle-2.9.tgz' del ejemplo tiene los atributos 644 (110-100-100). Si queremos que los usuarios del grupo no solo puedan leer el archivo sino que también puedan escribir en él, deberemos modificar la segunda columna de 4 a 6 quedando los permisos 664 (110-110-100), usaremos chmod de esta forma:
chmod 664 moodle-2.9.tgz
Evidentemente para realizar esta operación deberemos tener permiso de escritura en dicho archivo.
Para los absolutos profanos en la materia, la traducción de binario a octal y viceversa es:
000=0, 001=1, 010=2, 011=3, 100=4, 101=5, 110=6, 111=7. -
-
-