12 Unidad 5 Sesión 4: Permisos de archivos y directorios
Introducción: ¿Quién puede hacer qué?
En las sesiones anteriores, hemos aprendido qué es un archivo y cómo el sistema operativo lo almacena físicamente en el disco. Ahora, abordaremos una pregunta fundamental para la seguridad y la colaboración: una vez que un archivo existe, ¿quién tiene permiso para leerlo, modificarlo o ejecutarlo?
En un sistema operativo multiusuario, es esencial tener un mecanismo robusto para controlar el acceso a los archivos. No queremos que un usuario pueda leer los archivos privados de otro, ni que pueda borrar accidentalmente archivos críticos del sistema. Este mecanismo se conoce como control de acceso, y en los sistemas tipo UNIX (como Linux), se gestiona a través de un modelo de permisos.
Pensemos en los permisos como las llaves de un edificio: hay llaves que solo abren tu oficina (tus archivos), otras que abren áreas comunes de tu departamento (archivos de grupo) y una llave maestra para el administrador del edificio (el superusuario o root
).
12.1 1. El modelo de seguridad de UNIX
El modelo clásico se basa en dos conceptos fundamentales: las identidades (a quién se le aplica el permiso) y los permisos básicos (qué acciones se pueden realizar).
12.1.1 Los actores del sistema: Usuario, Grupo y Otros (UGO)
Cada archivo y directorio en el sistema tiene asociada una identidad de propietario y de grupo. Los permisos se definen para tres clases de identidad:
- Usuario (User/Owner): Es el propietario del archivo. Por defecto, el usuario que crea un archivo se convierte en su propietario. Tiene el mayor control sobre él.
- Grupo (Group): Es el grupo al que pertenece el archivo. Esto permite que múltiples usuarios que pertenecen a un mismo grupo puedan compartir el acceso a ciertos archivos.
- Otros (Others): Se refiere a cualquier otro usuario del sistema que no es el propietario ni es miembro del grupo del archivo.
12.1.2 Los permisos básicos: Leer, Escribir, Ejercutar (rwx)
Existen tres permisos fundamentales que se pueden conceder o denegar a cada una de las tres identidades (UGO). Es crucial entender que su significado cambia dependiendo de si se aplican a un archivo o a un directorio.
Permiso | Valor Octal | Significado en un Archivo | Significado en un Directorio |
---|---|---|---|
r (Read) |
4 | Permite leer el contenido del archivo (ej. con cat ). |
Permite listar el contenido del directorio (ej. con ls ). |
w (Write) |
2 | Permite modificar o borrar el contenido del archivo. | Permite crear, renombrar o borrar archivos dentro del directorio. |
x (Execute) |
1 | Permite ejecutar el archivo (si es un programa o script). | Permite entrar al directorio (ej. con cd ) para acceder a su contenido. |
Sin el permiso de ejecución (x
) en un directorio, no puedes acceder a ninguno de sus archivos o subdirectorios, incluso si tienes permisos de lectura sobre ellos. El permiso x
es la “llave” que te permite “abrir la puerta” del directorio.
12.2 Visualización y manipulación de permisos
12.2.1 Interpretando la salida de ls -l
El comando ls -l
, que ya conocemos, nos muestra los permisos en la primera columna de su salida.
Analicemos una línea de ejemplo: -rwxr-xr--
Carácter | 1 | 2-4 | 5-7 | 8-10 |
---|---|---|---|---|
Significado | Tipo de archivo | Permisos del Usuario | Permisos del Grupo | Permisos de Otros |
Ejemplo | - (archivo regular) |
rwx (leer, escribir, ejecutar) |
r-x (leer, no escribir, ejecutar) |
r-- (leer, no escribir, no ejecutar) |
- El primer carácter indica el tipo:
-
para archivo regular,d
para directorio,l
para enlace simbólico.
12.3 chmod
: cambiando permisos
El comando chmod
(change mode) es la herramienta para modificar los permisos de un archivo o directorio. Se puede usar de dos maneras:
Modo simbólico Es más intuitivo y utiliza letras para representar los cambios. La sintaxis es chmod [quién][operador][permiso] archivo
.
- Quién:
u
(usuario),g
(grupo),o
(otros),a
(todos). - Operador:
+
(añadir),-
(quitar),=
(asignar exactamente). - Permiso:
r
,w
,x
.
Ejemplo: chmod g+w reporte.docx
— Añade permiso de escritura para el grupo.
Modo octal (numérico) Es más rápido y muy usado por administradores. Utiliza números que son la suma de los valores de los permisos (r=4, w=2, x=1).
7
=rwx
(4+2+1)6
=rw-
(4+2)5
=r-x
(4+1)4
=r--
(4)0
=---
(0)
Ejemplo: chmod 754 script.sh
— Asigna rwx
para el usuario, r-x
para el grupo y r--
para otros.
12.3.1 chown
y chgrp
: cambiando la propiedad
chown
(change owner): Cambia el propietario de un archivo/directorio.- Ejemplo:
chown nuevo_dueño archivo.txt
- Ejemplo:
chgrp
(change group): Cambia el grupo de un archivo/directorio.- Ejemplo:
chgrp nuevo_grupo archivo.txt
- Ejemplo: