Permisos: un mismo árbol, quién puede hacer qué
La vez pasada levantamos un árbol ordenado de archivos y carpetas sobre un disco plano. Pero si muchas personas comparten una computadora, ese árbol sostiene mis archivos y los de otros uno al lado del otro. ¿Debería cualquiera poder abrir, cambiar o borrar los archivos de otro? Sin orden se vuelve un caos. Necesitamos una regla sobre quién puede hacer qué.
Un árbol, muchos dueños: una etiqueta de propietario en cada archivo
Supongamos que toda una clase comparte una computadora de la escuela. El árbol de archivos sostiene las diapositivas que hice yo, la tarea de mi amigo y los archivos de configuración que usa la propia computadora, todos colgando juntos. Sin ninguna regla, cualquiera podría abrir mis diapositivas y cambiarlas, o borrarlas por completo. Solo imaginarlo inquieta. Así que lo primero que hace el sistema operativo es estampar en cada archivo una etiqueta de propietario. Escribe con claridad de quién es este archivo, quién es el dueño.
Toca un archivo para ver su propietario. Los tuyos salen en dorado; los de otros y los del sistema salen atenuados. Todo archivo tiene un dueño.
Ahora está claro qué archivo pertenece a quién. Pero saber el dueño no es el final. Que un amigo solo abra mis diapositivas para mirar es algo completamente distinto de cambiarlas o borrarlas. Así que una etiqueta de propietario sola no basta; hay que dividir, con más finura, exactamente qué acciones se permiten sobre un archivo. Cuáles son esas acciones, lo veremos a continuación.
Tres acciones: leer, escribir, ejecutar
El sistema operativo ve exactamente tres cosas que puedes hacer con un archivo. Primero, leer: mirar el contenido del archivo. Segundo, escribir: cambiar el contenido, o borrarlo del todo. Tercero, ejecutar: si el archivo es un programa, correrlo para que haga su trabajo. Estas tres se pueden encender y apagar por separado. Por ejemplo, un archivo puede permitir leer pero bloquear escribir, así que solo puedes mirar y no cambiar. Y un archivo de programa solo corre cuando ejecutar está encendido.
Toca leer, escribir y ejecutar para encenderlos y apagarlos. Encendido es verde (permitido), apagado es rojo (bloqueado). Los tres se fijan por separado.
Leer, escribir, ejecutar. Solo con estos tres interruptores ya se logra un control bastante fino. Puedes permitir mirar y bloquear cambiar, o permitir solo correr. Pero falta una cosa. Cuando decimos que leer está permitido, ¿permitido para quién exactamente? ¿Solo el dueño? ¿O cada persona del mundo? Para el mismo archivo, el permiso debería variar según quién lo pida. A continuación, dividamos ese quién.
¿Para quién? Propietario, grupo, otros
El sistema operativo ordena a las personas en tres grupos. El primero es el propietario, el dueño del archivo en persona. El segundo es el grupo, personas reunidas en un mismo equipo; piénsalo como los amigos de tu grupo de proyecto. El tercero son los otros, todos los que quedan fuera. Y las tres acciones que acabamos de ver, leer, escribir y ejecutar, se fijan por separado para cada uno de estos tres grupos. Así que para el mismísimo archivo, el propietario puede leer y escribir, el grupo solo leer, y los otros no pueden hacer nada. Un permiso se vuelve una tabla tejida entre quién y qué.
Toca una celda para encenderla y apagarla. Las filas son propietario, grupo, otros; las columnas son leer, escribir, ejecutar. Verde es permitido, rojo es bloqueado. Mismo archivo, derechos distintos por clase.
Ahora, incluso para el mismo archivo, podemos conceder derechos distintos a personas distintas. Es un orden bastante fino. Pero aquí surge una situación complicada. Si cada archivo está firmemente cerrado para su dueño, ¿quién instala un programa nuevo en la computadora, o arregla las cosas cuando alguien olvida su contraseña? Parece que necesitamos a una persona especial que pueda abrir cada cerradura. A continuación, conozcamos a esa persona.
El administrador (root): una llave maestra por encima de las reglas
Esa persona especial es el administrador. En inglés se le llama root o superusuario. El administrador se salta las reglas de permisos comunes. Tiene una llave maestra que puede leer, cambiar y correr cualquier archivo. Gracias a eso, puede instalar programas nuevos, reparar configuraciones rotas y restablecer una contraseña olvidada. Pero esta llave también da miedo. Un solo error como administrador puede romper todo el sistema. Por eso normalmente vives como un usuario común y tomas prestado el poder de administrador solo cuando de verdad hace falta.
Como usuario común, intenta abrir el archivo bloqueado. Queda bloqueado (rojo). Cambia a administrador e inténtalo de nuevo. Con la llave maestra queda permitido (verde).
La puerta cerrada quedó bloqueada para el usuario común y abierta para el administrador. Gracias a esta llave maestra, la computadora puede cuidarse y repararse. Al mismo tiempo, seguramente sientes por qué no deberías andar como administrador a la ligera: cada cerradura queda sin poder. El orden llamado permisos mantiene al usuario común dentro de una cerca, y le da al administrador el poder de cruzarla, pero tratándolo como algo grave. Ahora, juntemos el cuadro entero de una vez.
En resumen: quién por qué, y el administrador por encima
Puesto en una página, va así. Para proteger un árbol compartido, el sistema operativo estampa en cada archivo una etiqueta de propietario y le cuelga una pequeña tabla. A lo ancho está el qué, es decir leer, escribir, ejecutar. A lo largo está el quién, es decir propietario, grupo, otros. Cada celda es verde si permitido, roja si bloqueado. Y por encima de toda esta tabla está el administrador, con la llave maestra. Un usuario común hace solo lo que la tabla permite; el administrador se salta la tabla y hace cualquier cosa. El árbol ordenado de la lección pasada se ha vuelto ahora un árbol que podemos compartir con seguridad.
Toca las celdas para explorar la tabla de permisos. Luego cambia a administrador. La llave maestra convierte toda la tabla en permitido de una vez.
Pero aquí aparece un hueco curioso. Antes dijimos que el sistema operativo amuralla a los programas para que no toquen el hardware ni el disco directamente. Si es así, ¿cómo abre mi programa incluso un archivo que tiene permitido leer? En verdad, no puede abrirlo por sí mismo. En cambio, tiene que pedírselo al sistema operativo con cortesía. En la próxima lección empezamos la historia de las llamadas al sistema, el mostrador oficial donde un programa le pide al sistema operativo que haga el trabajo. Comprobar los permisos sucede en ese mismo mostrador.