seegongsik
Sistemas operativos

Cómo funcionan los permisos de archivo

En la lección anterior levantamos un árbol de archivos y carpetas sobre un disco plano. Pero cuando varias personas comparten una computadora, en ese árbol cuelgan mis archivos junto a los de los demás. Si cualquiera pudiera abrir, cambiar o borrar los archivos ajenos, todo se desordenaría enseguida. Hace falta una regla que diga quién puede hacer qué.

01

Un árbol, muchos dueños: cada archivo lleva una etiqueta de propietario

Imagina que toda una clase comparte una computadora de la escuela. En su árbol de archivos cuelgan las diapositivas que hice yo, la tarea que entregó un compañero y los archivos de configuración que usa la propia computadora.
Sin reglas, cualquiera podría abrir mis diapositivas y reescribirlas o borrarlas, o tocar un archivo de configuración hasta que la computadora ya no arrancara.
Por eso lo primero que hace el sistema operativo es ponerle a cada archivo una etiqueta de propietario. Anota, archivo por archivo, quién lo creó y de quién es.

toca un archivo para ver su propietario

Toca los tres archivos uno por uno para descubrir a su dueño. El tuyo aparece en dorado, el de tu compañero y el del sistema aparecen atenuados, y no hay ni un archivo sin dueño.

Ya está claro qué archivo es de quién. Pero saber quién es el dueño no basta.
Que un compañero abra mis diapositivas solo para mirarlas es muy distinto de que las cambie o las borre. Puede que no me importe que las vea y aun así no quiera que nadie toque una palabra.
Así que, para cada archivo, hay que separar con más detalle qué acciones se permiten.

02

Tres acciones: leer, escribir, ejecutar

El sistema operativo reduce todo lo que se puede hacer con un archivo a tres acciones. Leer es mirar lo que contiene. Escribir es cambiar el contenido o borrarlo. Ejecutar vale cuando el archivo es un programa y significa ponerlo en marcha.
Cada una se enciende o se apaga por su cuenta. Si dejas leer encendido y apagas escribir, el archivo se puede mirar pero no cambiar.
Un archivo de programa con ejecutar apagado, sencillamente, no arranca.

Toca leer, escribir y ejecutar para encender y apagar cada uno. Al principio solo leer está encendido, así que el archivo solo se puede mirar. Encendido se pone verde (permitido), apagado se pone rojo (bloqueado), y cambiar uno no afecta a los otros dos.

Con solo tres interruptores, leer, escribir y ejecutar, ya se puede afinar bastante. Se puede permitir mirar y prohibir cambiar, o permitir solo ejecutar.
Pero todavía falta algo. Si leer está permitido, ¿permitido para quién? ¿Solo para el dueño o para cualquier persona del mundo? La respuesta lo cambia todo.
Un mismo archivo debe poder conceder cosas distintas según quién lo pida.

03

¿Para quién? Propietario, grupo, otros

El sistema operativo reparte a las personas en tres clases. La primera es el propietario, la persona a la que pertenece el archivo. La segunda es el grupo, las personas reunidas en un mismo equipo; piensa en los compañeros de tu grupo de trabajo. La tercera son los otros, es decir, todos los demás.
Luego fija leer, escribir y ejecutar por separado para cada una de las tres. El estado inicial de la tabla de abajo es un ejemplo: el propietario puede hacer las tres cosas, el grupo puede leer y ejecutar, y los otros solo pueden leer.
Así, un permiso se convierte en una sola tabla que cruza quién (tres filas) con qué (tres columnas).

leer
escribir
ejecutar
propietario
grupo
otros

Cada toque en una celda la cambia entre permitido (verde) y bloqueado (rojo). Las filas son propietario, grupo y otros, y las columnas leer, escribir y ejecutar, así que un mismo archivo puede dar a cada clase algo distinto.

Ahora incluso un solo archivo puede repartir derechos distintos entre personas distintas. Es un orden bastante fino.
Pero surge una pregunta difícil. Si cada archivo está bien cerrado para su dueño, ¿quién instala programas nuevos en la computadora o pone una contraseña nueva cuando alguien olvida la suya?
Parece que hace falta una persona especial capaz de abrir cualquier cerradura.

04

El administrador (root): una llave maestra por encima de las reglas

Esa persona especial es el administrador. En Linux y sistemas parecidos, la cuenta se llama root, o superusuario. El administrador se salta por completo la tabla de permisos: tiene una llave maestra que puede leer, cambiar y ejecutar cualquier archivo.
Así se instalan programas nuevos, se reparan configuraciones rotas y se restablecen contraseñas olvidadas.
Pero esa misma llave es peligrosa. Una sola orden equivocada como administrador puede estropear todo el sistema. Por eso lo normal es trabajar como usuario común y pedir prestado el poder de administrador solo en el momento en que de verdad hace falta.

secret.txtcompañero

Primero, como usuario común, intenta abrir el archivo cerrado de tu compañero: queda bloqueado (rojo). Cambia a root y ábrelo otra vez; la llave maestra te deja pasar (verde).

El archivo cerrado siguió cerrado para el usuario común y se abrió para el administrador. Como existe esa llave maestra, siempre hay alguien que puede cuidar la computadora y repararla.
También se ve por qué nadie debería andar como administrador sin motivo: frente a esa llave, todas las cerraduras pierden su fuerza.
El orden que llamamos permisos deja a los usuarios comunes dentro de una cerca y le da al administrador la fuerza para saltarla, con la idea de que la use con cuidado.

05

En resumen: quién por qué, y el administrador por encima

En una sola página queda así. Para proteger un árbol que comparten muchas personas, el sistema operativo pone una etiqueta de propietario en cada archivo y le cuelga una pequeña tabla.
A lo ancho va el qué: leer, escribir, ejecutar. A lo largo va el quién: propietario, grupo, otros. Cada celda es verde si está permitido y roja si está bloqueado.
Por encima de toda la tabla está el administrador con la llave maestra. Un usuario común solo puede hacer lo que la tabla permite; el administrador se salta la tabla y puede hacer cualquier cosa. El árbol ordenado de la lección anterior se ha convertido en un árbol que muchas personas pueden compartir con seguridad.

leer
escribir
ejecutar
propietario
✓
✓
✓
grupo
✓
✗
✓
otros
✓
✗
✗

La tabla resume en verde y rojo lo que pueden hacer el propietario, el grupo y los otros. Pulsa el botón de abajo para cambiar a root, y la llave maestra vuelve permitida toda la tabla de una vez (azul).

Sin embargo, aquí aparece un hueco extraño. Antes vimos que el sistema operativo levanta un muro para que los programas no toquen directamente el hardware ni el disco.
Entonces, ¿cómo abre mi programa incluso un archivo que tiene permiso para leer? La verdad es que no puede abrirlo por su cuenta. Tiene que pedirle al sistema operativo que lo abra.
La próxima lección trata de las llamadas al sistema, el mostrador oficial donde un programa le encarga trabajo al sistema operativo. Consultar esta tabla y comprobar los permisos ocurre en ese mismo mostrador.

En una líneaEl sistema operativo pone una etiqueta de propietario en cada archivo y fija quién puede hacer qué. Hay tres acciones, leer (ver el contenido), escribir (cambiar o borrar) y ejecutar (ponerlo en marcha como programa), y se conceden por separado al propietario, al grupo y a todos los demás. El administrador (root) está por encima de estas reglas con una llave maestra capaz de todo, y justo por eso solo se usa cuando de verdad hace falta. Al final, un permiso es una pequeña tabla de quién por qué, que mantiene el orden en un árbol que comparten muchas personas.
← Sistemas operativos
¿Te fue útil? Apoyar seegongsik