
Los permisos de UNIX, Linux y Mac OS
Índice
Tiempo de lectura: 8 minutos
Una de las primeras cosas que descubríamos con los sistemas UNIX (Linux o Mac OS se basan en ellos), es que los archivos tenían un sistema de permisos sencillo pero muy potente. Ésto nos resultaba particularmente llamativo a los que, como un servidor, estábamos acostumbrados a sistemas operativos como MS-DOS o los primeros Windows, donde los permisos brillaban por su ausencia.
En este artículo daremos un repaso a este diseño tan práctico de permisos de UNIX, que nos permite establecer un primer nivel de seguridad muy elevado. De hecho, fue diseñado tan bien, que perdura hasta nuestros días sin prácticamente cambios.
Permisos tradicionales UNIX
Los permisos UNIX datan del año 1969, cuando una primeriza versión de este sistema operativo hacía su aparición en escena en los laboratorios Bell de AT&T.
Nos permiten crear restricciones al realizar determinadas operaciones sobre archivos o directorios. También son capaces de diferenciar quién los está usando: si es su propietario, si es un grupo autorizado para ello o si son otros.
Si listamos un directorio de un sistema UNIX, veremos algo parecido a esto:
-rwxr-xr-- 1 root root 0 Jul 1 1985 /etc/motd
Vamos a fijarnos en esta parte:
-rwxr-xr-- 1 root root
Tenemos:
- una secuencia de 10 caracteres: -rwxr-xr–
- un número: 1
- un propietario: root
- un grupo: root
Veamos en detalle qué significa cada bloque.
Los bits de permisos
Están escritos en notación simbólica. Permiten especificar qué tipo de archivo estamos viendo y qué derechos tiene el propietario, grupo y otros:
El tipo de archivo puede ser:
- |
archivo regular |
b |
dispositivo de bloques (disco duro, etc.) |
c |
dispositivo de caracteres (impresora, terminal, etc.) |
d |
directorio |
l |
enlace simbólico a otro archivo |
p |
tubería FIFO nombrada con el comando mkfifo |
s |
socket de dominio para comunicación entre procesos |
Los permisos pueden ser:
r |
lectura (read), permite leer archivos o listar directorios. |
w |
escritura (write), permite modificar o borrar un archivo. En el caso de un directorio, podríamos alterar su contenido borrando o modificando cualquier archivo que contenga, también creando nuevos archivos o subdirectorios. |
x |
ejecución, permite ejecutar archivos o entrar en directorios. |
s |
setuid, setgid o sticky, puede ser minúscula (ejecutable) o mayúscula (no ejecutable). |
El número tras los bits de permiso
Este entero tiene un significado diferente, dependiendo de si el fichero es un archivo o un directorio:
archivo |
indica el número de enlaces físicos al fichero |
directorio |
indica el número de subdirectorios dentro del directorio |
El propietario
Sólo existe un único propietario del archivo. El identificador que aparece es el de uno de los usuarios del sistema. En UNIX puede cambiarse el propietario mediante el comando chown (change owner).
El grupo
Sólo existe un único grupo con derechos sobre el archivo. El identificador que aparece es el de uno de los grupos del sistema. En UNIX puede cambiarse el grupo mediante el comando chgrp (change group).
La notación octal
Otro sistema de notación muy común en el mundo UNIX es el Octal. Es más visual y permite de un rápido vistazo saber qué permisos dispone un archivo. Mira esta tabla:
Binario | Simbólica | Octal |
---|---|---|
000 | --- |
0 |
001 | --x |
1 |
010 | -w- |
2 |
011 | -wx |
3 |
100 | r-- |
4 |
101 | r-x |
5 |
110 | rw- |
6 |
111 | rwx |
7 |
Se trata de convertir cada grupo de permisos (propietario, grupo y otros) al sistema octal. Obtenemos 3 dígitos que representan de forma resumida todos los permisos del archivo. Seguro que lo has visto al conectarte por FTP a un servidor.
En algunos sistemas se utiliza un cuarto dígito, al principio, para representar los permisos especiales setuid, setgid o sticky.
Ejemplos de permisos
Estos son ejemplos de esquema de permisos en ambas notaciones:
Notación Simbólica | Notación Octal |
---|---|
---------- |
000 |
-rwx------ |
700 |
-rwxrwx--- |
770 |
-rwxrwxrwx |
777 |
-r--r--r-- |
444 |
--w--w--w- |
222 |
---x--x--x |
111 |
--wx-wx-wx |
333 |
-r-xr-xr-x |
555 |
-rw-rw-rw- |
666 |
Cómo se cambian los permisos
Básicamente podemos hacerlo de 2 formas, mediante la terminal, con comandos o por medio de una conexión FTP o un explorador de archivos de nuestro servidor web:
Terminal del sistema
Los comandos a utilizar son:
- chmod: cambia los bits de permisos de un fichero.
- chown: cambia el propietario de un fichero.
- chgrp: cambia el grupo de un fichero.
Consulta la ayuda del sistema o Internet para conocer todas las opciones de ellos, pues tienen muchas.
Cliente FTP o explorador de archivos
Aquí dependiendo del software utilizado tendremos una forma visual de hacerlo: