Los permisos en UNIX Linux Mac OS

Los permisos de UNIX, Linux y Mac OS

José Luis Martínez Data Center, Wordpress Leave a Comment

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 1.969, 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:

Bits de permisos en Unix Linux permission bits

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 ser leído (archivos) o listado (directorios)
w escritura (write), permite ser escrito o modificado
x ejecución, permite ser ejecutado (archivos) o entrar en él (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:

Cambiar permisos ftp o explorador de archivos UNIX

Escrito por

José Luis Martínez

LinkedIN