1. Quién puede hacer qué
En el tema 16 vimos los dos lados de cada acceso. De un lado, un proceso, que lleva una identidad: un usuario y una lista de grupos. Del otro, un archivo, que lleva anotados un dueño y un grupo. Falta la tercera pieza, la que los relaciona:
Los permisos de un archivo son una tabla, guardada en su inodo, que establece qué operaciones puede realizar sobre él cada clase de usuario.
El modelo es deliberadamente pequeño. Hay tres clases de usuarios y tres operaciones, lo que da nueve respuestas de sí o no. Con esas nueve respuestas se gobierna el acceso a todos los archivos del sistema, y por eso cada una se expresa con un solo carácter.
$ cd ~/practica
$ ls -l
total 28
drwxrwxr-x 2 ana ana 4096 oct 12 10:40 fotos
-rw-rw-r-- 1 ana ana 12813 oct 12 10:41 informe.txt
-rw-rw-r-- 1 ana ana 18 oct 12 10:32 notas.txt
-rw-rw-r-- 1 ana ana 70 oct 12 13:20 tareas.txt
2. Los nueve caracteres
El primer carácter de la cadena es el tipo de archivo, que conocemos del tema 7. Los nueve restantes son los permisos, y se leen de a tres:
-rw-rw-r-- de notas.txt, separada en sus cuatro partes. Cada trío responde por una clase de usuario.Dentro de cada trío, las posiciones son fijas. La primera es siempre la de lectura, la segunda la de escritura y la tercera la de ejecución:
| Posición en el trío | Si el permiso está | Si no está |
|---|---|---|
| Primera | r, de read | - |
| Segunda | w, de write | - |
| Tercera | x, de execute | - |
No hay otras letras posibles en cada lugar, salvo las de los permisos especiales del tema 21. Una w nunca aparece en la primera posición ni una r en la tercera. Por eso, con un poco de costumbre, la cadena se lee de un vistazo: rw- es «leer y escribir», r-x es «leer y ejecutar», --- es «nada».
3. Dueño, grupo y otros
Los tres tríos corresponden, en orden, a las tres clases en que el sistema divide a los usuarios respecto de un archivo dado:
| Clase | Letra | Quiénes son | En ls -l |
|---|---|---|---|
| Dueño | u, de user | El usuario al que pertenece el archivo. Uno solo. | La tercera columna. |
| Grupo | g, de group | Los miembros del grupo del archivo. | La cuarta columna. |
| Otros | o, de others | Cualquier usuario que no sea el dueño ni pertenezca al grupo. | No figura: son «el resto». |
Las letras u, g y o no aparecen en el listado, pero conviene aprenderlas ya: son las que se usan para cambiar los permisos, en el tema siguiente. La trampa es la o, que no es de owner, dueño, sino de others.
Las tres clases son relativas a cada archivo. Un mismo usuario es dueño de unos, pertenece al grupo de otros, y es «otro» frente a la mayoría. Para notas.txt, ana es la dueña; para /etc/passwd, que es de root, es una más entre los otros.
4. Leer, escribir y ejecutar
En un archivo común, las tres operaciones significan lo que su nombre sugiere:
| Permiso | Permite | Comandos que lo necesitan |
|---|---|---|
r — lectura | Ver el contenido. | cat, less, head, cp (sobre el origen), abrirlo en un editor. |
w — escritura | Modificar el contenido: cambiarlo, agregarle, vaciarlo. | Guardar desde un editor, > y >>, cp (sobre un destino existente). |
x — ejecución | Ejecutarlo como un programa. | Escribir su nombre, o su ruta, como comando. |
Hay que señalar lo que no está en esa tabla. El permiso de escritura sobre un archivo permite cambiar su contenido; no permite borrarlo ni cambiarle el nombre. Esas operaciones dependen del directorio, como veremos en la sección 10. Tampoco hay un permiso para «ver que existe» o para leer su tamaño y su fecha: eso también depende del directorio.
Los tres permisos son independientes entre sí, y casi todas las combinaciones tienen algún sentido:
| Trío | En un archivo significa |
|---|---|
rw- | Se puede leer y modificar. Lo normal para un documento propio. |
r-- | Solo lectura. |
r-x | Se puede leer y ejecutar, no modificar. Lo normal para un programa. |
rwx | Todo. Lo normal para un script propio. |
--- | Ningún acceso. |
-w- | Se puede escribir sin poder leer. Raro, pero útil para un buzón donde se deposita sin ver lo que hay. |
5. Cómo decide el kernel
Cuando un proceso intenta abrir un archivo, el kernel elige uno solo de los tres tríos y responde según lo que ese trío diga. El procedimiento es siempre el mismo, y vale la pena aprenderlo como un algoritmo:
- ¿El proceso es de
root? Se permite, sin mirar los permisos. UID 0 - ¿El usuario del proceso es el dueño del archivo? Se aplica el primer trío, y no se sigue. dueño
- ¿Alguno de los grupos del proceso es el grupo del archivo? Se aplica el segundo trío, y no se sigue. grupo
- En cualquier otro caso, se aplica el tercer trío. otros
Lo esencial es el «no se sigue». Las clases no se suman: se usa la primera que corresponde, y solo esa. De ahí sale una consecuencia que parece una paradoja:
-r--rw-rw- 1 ana ana 120 oct 12 16:00 extrano.txt
¿Puede ana modificar este archivo? Pertenece al grupo ana, que tiene escritura; y los otros también la tienen. Sin embargo, no puede. Es la dueña, de modo que se le aplica el primer trío, r--, y el kernel no mira más. Cualquier otro usuario del sistema podría escribir en ese archivo, y su dueña no.
Es un caso artificial, pero muestra que los permisos se leen con el algoritmo y no por intuición. En la práctica, los tríos se ordenan de más a menos —el dueño puede más que el grupo, y el grupo más que el resto— y la paradoja no aparece. El dueño, además, siempre conserva la facultad de cambiar los permisos de lo suyo.
6. Leer permisos reales
Apliquemos el algoritmo a archivos del sistema, desde la identidad que nos dio id en el tema anterior: usuario ana, con los grupos ana, adm, sudo y otros.
$ ls -l /etc/passwd /etc/shadow /etc/sudoers /usr/bin/ls /var/log/syslog
-rw-r--r-- 1 root root 2847 oct 5 09:12 /etc/passwd
-rw-r----- 1 root shadow 1523 oct 5 09:12 /etc/shadow
-r--r----- 1 root root 1800 ene 29 2024 /etc/sudoers
-rwxr-xr-x 1 root root 142312 abr 5 2024 /usr/bin/ls
-rw-r----- 1 syslog adm 684213 oct 12 15:40 /var/log/syslog
| Archivo | ¿Qué es ana? | Trío aplicado | Puede |
|---|---|---|---|
/etc/passwd | Ni dueña ni del grupo root: otros. | r-- | Leerlo. No modificarlo. |
/etc/shadow | Ni dueña ni del grupo shadow: otros. | --- | Nada. Es el Permission denied del tema 16. |
/etc/sudoers | Otros. | --- | Nada. |
/usr/bin/ls | Otros. | r-x | Leerlo y ejecutarlo. Por eso ls funciona. |
/var/log/syslog | No es dueña, pero pertenece al grupo adm. | r-- | Leerlo. Un usuario fuera de ese grupo no podría. |
El último caso muestra el uso de los grupos del que hablamos en el tema anterior: el registro del sistema es legible para un conjunto elegido de usuarios, los que administran el equipo, y cerrado para el resto.
Y /etc/sudoers tiene una rareza: ni su dueño, root, tiene permiso de escritura. No es un impedimento real, porque a root los permisos no se le aplican. Es una señal: el archivo no debe editarse directamente, sino con una herramienta que lo valida, visudo. Lo vemos en el tema 19.
7. El permiso de ejecución
De los tres permisos, el de ejecución es el que no tiene equivalente en otros sistemas, y conviene detenerse en él. En el tema 6 dijimos que en Linux la extensión no determina qué es un archivo. Lo que hace que un archivo pueda usarse como comando es este permiso.
Un archivo recién creado no lo tiene. Lo comprobamos intentando ejecutar un archivo de texto cualquiera:
$ ls -l tareas.txt
-rw-rw-r-- 1 ana ana 70 oct 12 13:20 tareas.txt
$ ./tareas.txt
bash: ./tareas.txt: Permission denied
$ echo $?
126
El archivo existe y se puede leer; lo que falta es la x. El código de salida 126 es el que en el tema 3 anotamos como «encontrado, pero no se puede ejecutar». Este mensaje es el primer tropiezo de todo el que escribe un script: lo crea con el editor, intenta ejecutarlo y recibe exactamente esto. La solución es otorgar el permiso, con el comando del tema 18.
La regla es una protección. Un archivo no se vuelve ejecutable por descargarlo o por copiarlo: alguien tiene que decidirlo. Con ella se evita ejecutar por accidente lo que no se pensaba ejecutar.
| Clase de archivo | Para ejecutarlo hace falta | Por qué |
|---|---|---|
Un programa compilado, como /usr/bin/ls | x | El kernel lo carga directamente. |
| Un script: un texto con comandos | x y también r | El intérprete tiene que leer el texto para ejecutarlo. |
En los colores de ls, los archivos con permiso de ejecución aparecen en verde, y con la opción -F llevan un asterisco.
8. En un directorio significan otra cosa
Los directorios tienen las mismas nueve posiciones, con las mismas letras. Pero un directorio no tiene un «contenido» que leer ni se puede «ejecutar», y las tres operaciones cambian de significado. Esta es la parte del tema que más cuesta, y se vuelve simple con una idea del tema 14: un directorio es una lista de nombres, cada uno con una referencia a su archivo.
| Permiso | En un archivo | En un directorio | Comandos que lo necesitan |
|---|---|---|---|
r | Leer el contenido. | Leer la lista: ver qué nombres contiene. | ls, los comodines, Tab. |
w | Modificar el contenido. | Modificar la lista: agregar, quitar o cambiar nombres. | touch, mkdir, cp hacia él, mv, rm. |
x | Ejecutarlo. | Atravesarlo: usar el directorio como parte de una ruta para llegar a lo que hay dentro. | cd, y cualquier acceso a un archivo que esté dentro. |
La x en un directorio suele llamarse permiso de búsqueda o de paso. Es la más importante de las tres. Sin ella, el directorio es una puerta cerrada: no se puede entrar con cd, ni abrir ningún archivo de su interior, ni siquiera conociendo su nombre exacto y teniendo todos los permisos sobre él.
Lo vimos en el tema 6, al intentar entrar en el directorio personal del administrador:
$ ls -ld /root
drwx------ 6 root root 4096 oct 5 09:30 /root
$ cd /root
bash: cd: /root: Permission denied
$ ls /root
ls: cannot open directory '/root': Permission denied
Para ana, que es «otros» frente a /root, el trío es ---. Los dos comandos fallan por permisos distintos: cd, porque falta la x; ls, porque falta la r.
9. Las combinaciones en directorios
Como la r y la x controlan cosas distintas, pueden estar una sin la otra, con resultados que conviene conocer:
| Trío | Listar los nombres | Entrar y usar los archivos | Crear y borrar | Uso |
|---|---|---|---|---|
rwx | Sí | Sí | Sí | Acceso completo. Tus propios directorios. |
r-x | Sí | Sí | No | Solo consulta. Lo normal en los directorios del sistema. |
--x | No | Sí, si se conoce el nombre exacto | No | Dejar pasar sin dejar ver. Para llegar a un subdirectorio sin exponer el resto. |
r-- | Sí, solo los nombres | No | No | Casi inútil: se ven los nombres y no se puede usar nada. |
-wx | No | Sí | Sí | Un buzón: se puede depositar, no ver qué hay. |
--- | No | No | No | Cerrado. |
La regla práctica que resume la tabla: en un directorio, la r y la w casi no sirven sin la x. Listar nombres sin poder acceder a nada es de poca utilidad, y la w sin la x no tiene efecto alguno, porque crear o borrar una entrada exige llegar hasta ella.
Tu directorio personal es un ejemplo de configuración pensada:
$ ls -ld /home/ana /etc /tmp
drwxr-xr-x 132 root root 12288 oct 12 09:05 /etc
drwxr-x--- 17 ana ana 4096 oct 12 10:32 /home/ana
drwxrwxrwt 18 root root 4096 oct 12 11:05 /tmp
| Directorio | Permisos | Lectura |
|---|---|---|
/etc | rwxr-xr-x | root lo administra; todos los demás pueden recorrerlo y listar, sin crear ni borrar. |
/home/ana | rwxr-x--- | La dueña, todo. Su grupo privado, consultar. Los demás usuarios, nada: no pueden entrar. |
/tmp | rwxrwxrwt | Todos pueden crear archivos. La t final es una protección adicional, del tema 21. |
10. Borrar depende del directorio
La consecuencia más contraria a la intuición de todo el modelo es esta:
Borrar, renombrar y mover son cambios en la lista del directorio. Lo que se necesita es permiso de escritura y de paso, w y x, sobre el directorio que lo contiene. Un archivo sobre el que no tienes ningún permiso, y que ni siquiera es tuyo, puede ser borrado por ti si está en un directorio donde puedes escribir.
Lo anticipamos en el tema 11, y ahora es una deducción: rm quita un nombre de una lista, y la lista es el directorio. La tabla ordena qué se necesita para cada operación:
| Operación | Permiso sobre el archivo | Permiso sobre el directorio |
|---|---|---|
| Leer el contenido | r | x |
| Modificar el contenido | w | x |
| Ejecutarlo | x | x |
Ver que existe, con ls | Ninguno | r |
Ver su tamaño, fecha y permisos, con ls -l | Ninguno | r y x |
| Crear un archivo | — | w y x |
| Borrarlo | Ninguno | w y x |
| Cambiarle el nombre | Ninguno | w y x |
Una cortesía de rm puede hacer creer lo contrario. Si intentas borrar un archivo sobre el que no tienes permiso de escritura, rm pregunta antes: remove write-protected regular file?. Es una advertencia del programa, no un impedimento del sistema; respondiendo y, el archivo se borra.
De esto se desprende un criterio de seguridad: quitar la escritura a un archivo lo protege de modificaciones, pero no de ser eliminado o reemplazado. Para proteger lo que hay en un directorio hay que cuidar los permisos del directorio.
11. El camino completo
Una ruta atraviesa varios directorios, y hace falta permiso de paso en todos. Para abrir /home/ana/practica/notas.txt se necesita x en /, en /home, en /home/ana y en /home/ana/practica, además de r en el archivo. Si falla uno solo, el acceso se niega, aunque los demás sean generosos.
Revisarlos de a uno con ls -ld es tedioso. El comando namei muestra los permisos de cada tramo de una ruta:
$ namei -l ~/practica/notas.txt
f: /home/ana/practica/notas.txt
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxr-x--- ana ana ana
drwxrwxr-x ana ana practica
-rw-rw-r-- ana ana notas.txt
Leído de arriba abajo, es el recorrido que hace el kernel. Y explica algo que el listado de ~/practica no deja ver. El archivo notas.txt tiene lectura para otros, r--, y parecería que cualquier usuario del equipo puede leerlo. No es así: en la tercera línea, /home/ana niega el paso a los otros. Un usuario distinto no llega hasta el archivo, y sus permisos ni se consultan.
Es un patrón muy usado: un directorio cerrado arriba protege todo lo que cuelga de él, sin necesidad de ajustar cada archivo. Y es la primera hipótesis ante un Permission denied inexplicable: el problema no está en el archivo, sino en algún directorio del camino.
12. Los permisos habituales
De las muchas combinaciones posibles, en la práctica se repiten unas pocas. Reconocerlas a simple vista ahorra el análisis letra por letra. El comando stat las muestra también en su forma numérica, que aprenderemos a calcular en el tema siguiente:
$ stat -c '%A %a %U:%G %n' *
drwxrwxr-x 775 ana:ana fotos
-rw-rw-r-- 664 ana:ana informe.txt
-rw-rw-r-- 664 ana:ana notas.txt
-rw-rw-r-- 664 ana:ana tareas.txt
| Cadena | Número | Se lee | Dónde se la ve |
|---|---|---|---|
-rw-r--r-- | 644 | El dueño escribe; todos leen. | Archivos de configuración, documentos públicos. |
-rw-rw-r-- | 664 | Dueño y grupo escriben; todos leen. | Los archivos que creas en Ubuntu. |
-rw------- | 600 | Solo el dueño, y nadie más. | Claves privadas, .bash_history. |
-rw-r----- | 640 | El dueño escribe; el grupo lee; el resto, nada. | /etc/shadow, registros. |
-rwxr-xr-x | 755 | El dueño modifica; todos ejecutan. | Los programas de /usr/bin. |
-rwx------ | 700 | Un script que solo su dueño puede usar. | Scripts personales. |
drwxr-xr-x | 755 | El dueño administra; todos entran y listan. | Los directorios del sistema. |
drwxrwxr-x | 775 | Dueño y grupo administran; todos entran. | Los directorios que creas en Ubuntu. |
drwx------ | 700 | Privado: solo el dueño. | /root, ~/.ssh. |
drwxr-x--- | 750 | El dueño administra; el grupo consulta; el resto no entra. | Los directorios personales en Ubuntu. |
Dos regularidades ayudan a leerlas. En los archivos comunes casi nunca hay x; en los directorios y en los programas, la x acompaña a la r. Y una cadena que termina en --- indica algo reservado; una que termina en rwx o rw- —escritura para cualquiera— es casi siempre un error, y merece una segunda mirada.
13. Diagnosticar un Permission denied
Con lo anterior, un Permission denied deja de ser un obstáculo opaco. Se resuelve respondiendo, en orden, las mismas preguntas que se hace el kernel:
- ¿Quién soy?
id: mi usuario y mis grupos. identidad - ¿Qué quise hacer? Leer, modificar, ejecutar; o crear, borrar, renombrar. operación
- ¿Sobre qué se decide? Las tres primeras, sobre el archivo. Las tres últimas, sobre el directorio que lo contiene. objeto
- ¿Qué dicen sus permisos?
ls -lpara un archivo,ls -ldpara un directorio. mirar - ¿Qué trío me toca? Dueño, grupo u otros, en ese orden, y el primero que corresponda. algoritmo
- Si el trío lo permitía, revisar el camino con
namei -l: falta laxen algún directorio. camino
Un ejemplo. El comando touch /etc/prueba falla. Quise crear un archivo, así que se decide sobre el directorio, /etc. Sus permisos son drwxr-xr-x root root. No soy root ni pertenezco al grupo root: me toca el tercer trío, r-x. No tiene w. El diagnóstico es completo, y dice también qué haría falta: actuar como root.
Anteponer sudo hace desaparecer casi cualquier Permission denied, y por eso mismo es un mal reflejo. Antes conviene entender por qué se negó el acceso. A veces la negativa es correcta, y lo que está mal es la ruta. A veces se soluciona de un modo más limitado, como pertenecer a un grupo. Y un archivo creado con sudo en tu directorio personal queda siendo de root, lo que produce el siguiente error de permisos.
14. Lo que los permisos no hacen
Para terminar, los límites del modelo. Conocerlos evita atribuirle una protección que no da:
| Límite | Consecuencia |
|---|---|
No se aplican a root. | Ningún permiso protege un archivo del administrador, ni de quien use sudo. |
| No cifran nada. | Los aplica el sistema en funcionamiento. Un disco conectado a otra máquina, o leído desde otro sistema, entrega todo su contenido. Para eso existe el cifrado de disco. |
| No protegen del dueño. | Quien posee un archivo puede cambiarle los permisos. Quitarse la escritura es un recordatorio, no un candado. |
| Son solo tres clases. | No permiten decir «este usuario sí y aquel no» dentro de los otros. Para eso hay un mecanismo adicional, las listas de control de acceso. |
| No distinguen programas. | Todo lo que ejecutas tiene tus permisos, incluido un programa en el que no deberías confiar. |
El cuarto punto deja una huella que quizá veas en algún listado. Cuando un archivo tiene reglas adicionales de ese tipo, ls -l agrega un signo + al final de la cadena, como en -rw-rw-r--+. Indica que los nueve caracteres no cuentan toda la historia, y que el detalle se consulta con getfacl.
También pueden aparecer letras distintas de r, w y x: una s o una t en el lugar de una x, como la de /tmp. Son los permisos especiales, que cierran el bloque en el tema 21.
La referencia del tema:
| Comando | Qué muestra |
|---|---|
ls -l archivo | Los permisos, el dueño y el grupo de un archivo. |
ls -ld directorio | Los de un directorio. |
stat -c '%A %a %U:%G %n' archivo | Los permisos en letras y en número, con dueño y grupo. |
namei -l ruta | Los permisos de cada tramo de una ruta. |
id | La identidad con la que se evaluarán. |
Sabemos leer. En el tema 18 aprendemos a escribir: cambiar los permisos con chmod, en sus dos notaciones, y el dueño y el grupo con chown.
15. Resumen
- Los permisos establecen qué puede hacer cada clase de usuario con un archivo. Son nueve respuestas de sí o no: tres clases por tres operaciones.
- En
ls -l, tras el carácter de tipo, hay tres tríos: el del dueño, el del grupo y el de los otros. - En cada trío, las posiciones son lectura, escritura y ejecución:
r,w,x, o un guion si el permiso falta. - En un archivo,
rpermite ver el contenido,wmodificarlo yxejecutarlo como programa. - El kernel aplica un solo trío: el del dueño si el proceso es del dueño; si no, el del grupo si pertenece a él; si no, el de los otros. No se suman.
- A
rootno se le aplican los permisos. - Un archivo no es ejecutable hasta que alguien le otorga la
x. Sin ella, ejecutarlo daPermission denied. - En un directorio,
rpermite listar los nombres,wcrear, borrar y renombrar entradas, yxatravesarlo para llegar a lo que contiene. - Sin
x, un directorio es inaccesible, y lary lawsirven de poco. - Borrar o renombrar un archivo requiere permisos sobre el directorio que lo contiene, no sobre el archivo.
- Para llegar a un archivo hace falta
xen todos los directorios de su ruta.namei -llos muestra. - Ante un
Permission denied: quién soy, qué operación, sobre qué objeto se decide, qué trío me corresponde, y el camino. - Los permisos no cifran, no limitan a
rootni al dueño, y no distinguen entre programas.
16. Preguntas de repaso
Intenta responder cada una antes de abrir la respuesta.
1. Divide la cadena -rwxr-x--- en sus partes y di qué indica cada una.
El guion inicial: archivo común. rwx: el dueño puede leer, escribir y ejecutar. r-x: el grupo puede leer y ejecutar. ---: los demás no pueden nada.
2. ¿Quiénes son «otros»?
Todos los usuarios que no son el dueño del archivo ni pertenecen a su grupo.
3. ¿En qué orden evalúa el kernel las tres clases?
Primero comprueba si el proceso es del dueño; si no, si pertenece al grupo; si no, aplica el trío de los otros. Usa el primero que corresponde y no mira los demás. A root le permite todo.
4. Un archivo tiene permisos -r--rw-r--, y eres su dueño y miembro de su grupo. ¿Puedes modificarlo?
No. Como dueño se te aplica el primer trío, r--, y el del grupo no se consulta. Podrías, eso sí, cambiarle los permisos.
5. El archivo /var/log/syslog es -rw-r----- syslog adm. ¿Por qué ana puede leerlo?
Porque pertenece al grupo adm, y el trío del grupo, r--, incluye la lectura.
6. Creas un script y al ejecutarlo recibes «Permission denied». ¿Qué falta?
El permiso de ejecución. Los archivos nuevos se crean sin la x.
7. ¿Qué significan r, w y x en un directorio?
r, listar los nombres que contiene. w, crear, borrar y renombrar entradas. x, atravesarlo: entrar con cd y acceder a lo que hay dentro.
8. Un directorio tiene r-- para ti. ¿Qué puedes hacer?
Ver los nombres de lo que contiene, y nada más. Sin x no puedes entrar ni abrir ninguno de sus archivos.
9. Un directorio tiene --x para ti. ¿Qué puedes hacer?
Atravesarlo y acceder a un archivo de su interior si conoces el nombre exacto y sus permisos lo permiten. No puedes listarlo.
10. ¿Qué permisos hacen falta para borrar un archivo?
Escritura y paso, w y x, sobre el directorio que lo contiene. Sobre el archivo, ninguno.
11. Un archivo tiene permisos -rw-rw-rw- y aun así otro usuario no puede leerlo. ¿Cuál es la explicación más probable?
Que le falta permiso de paso en alguno de los directorios de la ruta. Se comprueba con namei -l.
12. ¿Por qué los demás usuarios no pueden leer ~/practica/notas.txt, si tiene r-- para otros?
Porque el directorio personal, /home/ana, tiene --- para otros. No pueden atravesarlo, y no llegan al archivo.
13. ¿Qué describe cada una: -rw-------, -rwxr-xr-x y drwxr-xr-x?
Un archivo privado, que solo su dueño lee y escribe. Un programa que el dueño puede modificar y todos pueden ejecutar. Un directorio que el dueño administra y en el que todos pueden entrar y listar.
14. mkdir /usr/prueba falla. Razona por qué, sin ejecutarlo.
Crear una entrada requiere w y x sobre el directorio, /usr, que es drwxr-xr-x root root. Un usuario común cae en «otros», con r-x: no tiene escritura.
15. ¿Protegen los permisos un archivo si alguien se lleva el disco?
No. Los permisos los aplica el sistema que está funcionando. Leído desde otro sistema, o por alguien que allí sea root, el contenido es accesible. La protección contra eso es el cifrado.
Para practicar
- Para cada línea de
ls -l ~/practica, escribe en palabras qué puede hacer el dueño, el grupo y los otros. - Ejecuta
ls -l /etc/hostname /etc/shadow /usr/bin/passwd /var/log/auth.log. Para cada uno, determina con el algoritmo qué trío se te aplica y qué puedes hacer. Comprueba concatohead. - Ejecuta
ls -ld / /home /home/* /root /tmp /var/logy describe quién puede listar y quién puede crear archivos en cada uno. - Ejecuta
namei -lsobre/etc/ssl/private, sobre/var/log/syslogy sobre tu~/.bashrc. ¿En qué tramo se detendría un usuario cualquiera? - Sin ejecutarlos, predice cuáles de estos comandos fallan y por qué:
touch /tmp/a,touch /etc/a,cat /etc/sudoers,ls /root,cd /var/log,rm /etc/hostname. Luego prueba los cinco primeros. - Intenta ejecutar
./notas.txtdesde~/practicay mira el código de salida conecho $?. - Usa
stat -c '%A %a %n'sobre diez archivos y directorios distintos del sistema, y arma tu propia tabla de equivalencias entre letras y números. - Con
find /usr/bin -maxdepth 1 -type f ! -executable, comprueba si hay algún archivo no ejecutable en ese directorio. - Busca en tu directorio personal los archivos y directorios cerrados a todos menos a ti:
find ~ -maxdepth 1 \( -perm 700 -o -perm 600 \). ¿Qué guardan? - Explica con tus palabras por qué un directorio con permisos
drwxrwxrwxes peligroso aunque todos los archivos que contiene sean de solo lectura.