← Terminal y Línea de Comandos en Linux Bloque 4 · Usuarios, grupos y permisos · Tema 18 de 43

Tema 18

Cambiar permisos y dueños

En el tema anterior aprendimos a leer los nueve caracteres. Ahora los escribimos. Tres comandos modifican lo que el inodo dice sobre el acceso a un archivo: chmod cambia los permisos, chown el dueño y chgrp el grupo. Un cuarto, umask, explica con qué permisos nace cada archivo. Son herramientas simples y de uso diario, y también aquellas con las que más fácilmente se abre un agujero de seguridad por apuro.

1. Quién puede cambiar qué

Antes de los comandos, las reglas. Los permisos, el dueño y el grupo de un archivo están anotados en su inodo, y no cualquiera puede modificarlos:

Para cambiar…ComandoPuede hacerlo
Los permisoschmodEl dueño del archivo, y root.
El grupochgrpEl dueño, pero solo hacia un grupo al que él pertenezca; y root, hacia cualquiera.
El dueñochownSolo root.

Hay un detalle en la primera fila que conviene notar. Para cambiar los permisos de un archivo no hace falta tener permiso de escritura sobre él: alcanza con ser el dueño. Los permisos no forman parte del contenido. Por eso, en el caso paradójico del tema anterior, la dueña de un archivo de solo lectura siempre puede devolverse la escritura.

Preparamos un taller con un archivo, un directorio y un script de una línea:

terminal
$ cd ~/practica
$ mkdir taller
$ cd taller
$ touch informe.txt
$ mkdir docs
$ echo 'echo "Hola desde un script"' > hola.sh
$ ls -l
total 8
drwxrwxr-x 2 ana ana 4096 oct 12 16:30 docs
-rw-rw-r-- 1 ana ana   28 oct 12 16:30 hola.sh
-rw-rw-r-- 1 ana ana    0 oct 12 16:30 informe.txt

2. chmod y sus dos notaciones

chmod, de change mode, recibe una descripción de permisos y uno o más archivos. «Modo» es el nombre técnico del conjunto de permisos de un archivo. La descripción se puede escribir de dos maneras:

NotaciónEjemploDice
Simbólicachmod g-w informe.txtUn cambio: «quítale la escritura al grupo». Lo demás queda como está.
Octalchmod 644 informe.txtUn estado: «que los permisos sean exactamente estos», sin importar los anteriores.

Las dos producen los mismos resultados y las dos se usan a diario. Las vemos por separado y al final las comparamos.

3. La notación simbólica

Una expresión simbólica tiene tres partes, que responden tres preguntas: a quién, qué operación, qué permiso.

anatomía de una expresión simbólica
chmod g-w informe.txt
      │││
      ││└─ qué permiso: w, escritura
      │└─ qué operación: -, quitar
      └─ a quién: g, el grupo
A quiénOperaciónPermiso
u — el dueño (user)+ — agregarr — lectura
g — el grupo- — quitarw — escritura
o — los otros= — fijar exactamentex — ejecución
a — todos (all): los tres a la vez

Las letras de la primera columna son las que presentamos en el tema 17. Veamos una serie de cambios sobre informe.txt, que empieza en rw-rw-r--. La opción -v hace que chmod informe lo que hizo, en las dos notaciones:

terminal, en ~/practica/taller
$ chmod -v g-w informe.txt          # quitar escritura al grupo
mode of 'informe.txt' changed from 0664 (rw-rw-r--) to 0644 (rw-r--r--)
$ chmod -v o-r informe.txt          # quitar lectura a los otros
mode of 'informe.txt' changed from 0644 (rw-r--r--) to 0640 (rw-r-----)
$ chmod -v a+r informe.txt          # dar lectura a todos
mode of 'informe.txt' changed from 0640 (rw-r-----) to 0644 (rw-r--r--)

Cada comando tocó un solo permiso y dejó intactos los demás. Esa es la virtud de la notación simbólica: no hace falta saber cómo estaba el archivo para modificarle una cosa.

Con ella se puede reproducir la situación del tema anterior, y comprobar que el algoritmo del kernel no tiene contemplaciones con el dueño:

terminal
$ chmod u-w informe.txt             # la dueña se quita la escritura
$ ls -l informe.txt
-r--r--r-- 1 ana ana 0 oct 12 16:30 informe.txt
$ echo "una línea" >> informe.txt
bash: informe.txt: Permission denied
$ chmod u+w informe.txt             # pero puede devolvérsela

4. Simbólica: combinar, fijar y copiar

La expresión admite varias letras en cada parte y varias cláusulas separadas por comas, sin espacios:

ExpresiónEfecto
go-wQuita la escritura al grupo y a los otros.
u+rwAgrega lectura y escritura al dueño.
u+x,go-wDos cambios en un solo comando.
go=Deja al grupo y a los otros sin ningún permiso.
u=rw,g=r,o=Fija los tres tríos completos: rw-r-----.
g=uDa al grupo los mismos permisos que tiene el dueño.
+xSin indicar a quién: agrega la ejecución a todos los que la configuración del sistema permita.

El operador = se comporta distinto de los otros dos, y es el que acerca la notación simbólica a la octal: no agrega ni quita, sino que reemplaza el trío entero. g=r deja al grupo solo con lectura, tuviera lo que tuviera.

terminal
$ chmod go= informe.txt
$ ls -l informe.txt
-rw------- 1 ana ana 0 oct 12 16:30 informe.txt
$ chmod u=rw,g=r,o= informe.txt
$ ls -l informe.txt
-rw-r----- 1 ana ana 0 oct 12 16:30 informe.txt

Queda una letra más, que veremos en la sección 9: la X mayúscula, pensada para los cambios recursivos.

5. Hacer ejecutable un script

El uso más repetido de chmod en la vida de un programador es este. Un script recién escrito no se puede ejecutar, porque los archivos nacen sin la x:

terminal
$ ./hola.sh
bash: ./hola.sh: Permission denied
$ chmod +x hola.sh
$ ls -l hola.sh
-rwxrwxr-x 1 ana ana 28 oct 12 16:30 hola.sh
$ ./hola.sh
Hola desde un script

Con el permiso otorgado, el archivo de texto pasó a funcionar como un comando. ls lo muestra ahora en verde. El ./ delante sigue siendo necesario por lo que vimos en el tema 3: la shell no busca comandos en el directorio actual.

ComandoQuién puede ejecutarlo después
chmod +x scriptTodos. Es la forma habitual.
chmod u+x scriptSolo el dueño. Lo indicado para un script personal.

El permiso de ejecución se da a lo que se entiende y en lo que se confía. Antes de hacer ejecutable un archivo descargado, conviene leerlo: es texto, y less lo muestra. Los scripts son el tema 41, y la materia de todo el curso siguiente.

6. La notación octal

La segunda notación describe los nueve permisos con tres dígitos, uno por trío. Cada dígito se obtiene sumando el valor de los permisos presentes:

PermisoValor
r — lectura4
w — escritura2
x — ejecución1
- — ausente0
Cálculo de la notación octal para rwxr-xr--: el dueño tiene rwx, cuatro más dos más uno, siete; el grupo tiene r-x, cuatro más cero más uno, cinco; los otros tienen r--, cuatro más cero más cero, cuatro. El resultado es 754 dueño r w x 4 + 2 + 1 7 grupo r - x 4 + 0 + 1 5 otros r - - 4 + 0 + 0 4
Los permisos rwxr-xr-- se escriben 754: cada trío se convierte en un dígito sumando 4, 2 y 1.

Como los tres valores son distintas potencias de dos, cada suma corresponde a una sola combinación. Hay ocho posibles, del 0 al 7, y de ahí el nombre: es un número en base ocho.

DígitoSumaTríoSignifica
74 + 2 + 1rwxTodo.
64 + 2rw-Leer y escribir.
54 + 1r-xLeer y ejecutar.
44r--Solo leer.
32 + 1-wxEscribir y ejecutar.
22-w-Solo escribir.
11--xSolo ejecutar.
00---Nada.

En la práctica se usan cinco: 7, 6, 5, 4 y 0. No hace falta memorizar la tabla; alcanza con recordar 4, 2, 1 y sumar. La conversión inversa es igual de mecánica: un 6 solo puede ser 4 + 2, es decir, rw-.

terminal
$ chmod 640 informe.txt
$ chmod 755 hola.sh
$ chmod 700 docs
$ ls -l
total 8
drwx------ 2 ana ana 4096 oct 12 16:30 docs
-rwxr-xr-x 1 ana ana   28 oct 12 16:30 hola.sh
-rw-r----- 1 ana ana    0 oct 12 16:30 informe.txt

7. Los números de todos los días

Unos pocos valores cubren casi todos los casos, y terminan reconociéndose como palabras. Son los que en el tema anterior mostraba stat:

NúmeroEn un archivoEn un directorioUso
644rw-r--r--—Archivo que todos leen y solo su dueño modifica.
600rw-------—Archivo privado: claves, contraseñas, datos personales.
640rw-r-----—Legible para un grupo, cerrado al resto.
664rw-rw-r--—Archivo de trabajo compartido con el grupo.
755rwxr-xr-xrwxr-xr-xPrograma o script público; directorio que todos pueden recorrer.
700rwx------rwx------Script o directorio privados.
750rwxr-x---rwxr-x---Accesible para el grupo, cerrado al resto.
775rwxrwxr-xrwxrwxr-xDirectorio de trabajo de un grupo.

La tabla tiene una regularidad que sirve de control. Los números de los archivos comunes son pares —6, 4, 0—, porque no llevan x. Los de los directorios y los programas son impares —7, 5—, o cero, porque la x, que vale 1, acompaña a la r. Un 6 o un 4 en un directorio, o un 7 en un documento, casi siempre son un error.

Verás a veces cuatro dígitos, como 0644, en la salida de stat y de chmod -v. El primero corresponde a los permisos especiales del tema 21; cuando vale cero se puede omitir.

8. Simbólica u octal

SimbólicaOctal
ExpresaUn cambio respecto de lo que hayEl estado final completo
Lo que no se nombraSe conservaSe reemplaza
Hay que saber cómo estabaNoNo, pero hay que decidir los nueve permisos
VentajaSe lee como una frase; no altera lo demásBreve y sin ambigüedad: después del comando, se sabe exactamente qué quedó
RiesgoEl resultado depende del punto de partidaPisa permisos que quizá convenía conservar
SituaciónConvieneEjemplo
Agregar o quitar un permiso puntualSimbólicachmod +x script.sh
Dejar un archivo en un estado conocidoOctalchmod 600 clave.pem
Cambiar muchos archivos con permisos distintos entre síSimbólicachmod -R go-w proyecto
Seguir una documentación o un mensaje de errorLa que useCasi siempre, octal

La tercera fila es el caso en que la diferencia importa de verdad. En un directorio con programas, documentos y subdirectorios, cada uno con sus permisos, go-w les quita a todos la escritura ajena respetando lo demás. Un número los igualaría a todos, con los resultados de la sección siguiente.

9. Cambios recursivos

La opción -R aplica el cambio a un directorio y a todo lo que contiene. Es potente, y tiene una trampa que conviene ver ocurrir. Ponemos algo dentro de docs y cometemos el error clásico: aplicar a un árbol entero el número de un archivo.

terminal
$ touch docs/a.txt docs/b.txt
$ mkdir docs/sub
$ chmod -R 644 docs                 # «que sean todos de lectura»
chmod: cannot access 'docs/a.txt': Permission denied
chmod: cannot access 'docs/b.txt': Permission denied
chmod: cannot access 'docs/sub': Permission denied
$ ls -ld docs
drw-r--r-- 3 ana ana 4096 oct 12 16:41 docs
$ cd docs
bash: cd: docs: Permission denied

chmod aplicó el 644 al directorio, y con eso le quitó la x. Sin permiso de paso no pudo llegar a los archivos de adentro, ni puede entrar su dueña. El número era correcto para un archivo y fatal para un directorio. Se repara devolviendo el permiso:

terminal
$ chmod 755 docs

El problema de fondo es que archivos y directorios necesitan permisos distintos: los directorios requieren x, los documentos no deben tenerla. Para eso existe la X mayúscula de la notación simbólica:

La X mayúscula otorga el permiso de ejecución solo a los directorios, y a los archivos que ya lo tienen para alguien. A los archivos comunes no se lo da.

terminal
$ chmod -R u=rwX,go=rX docs
$ ls -l docs
total 4
-rw-r--r-- 1 ana ana    0 oct 12 16:41 a.txt
-rw-r--r-- 1 ana ana    0 oct 12 16:41 b.txt
drwxr-xr-x 2 ana ana 4096 oct 12 16:41 sub

Un solo comando dejó los archivos en 644 y los directorios en 755. La otra manera de lograrlo es separar los dos casos con find, del tema 10, que es más larga y más explícita:

terminal: lo mismo, con find
$ find docs -type d -exec chmod 755 {} +
$ find docs -type f -exec chmod 644 {} +
Con -R, la ruta se revisa dos veces

Un cambio recursivo no tiene deshacer: los permisos anteriores de cada archivo, que podían ser distintos entre sí, se pierden. Un chmod -R o un chown -R lanzado con sudo sobre /, /etc o /usr por una ruta mal escrita deja el sistema inservible, y la reparación suele ser reinstalar. Valen las comprobaciones del rm -r: dónde estoy, sobre qué voy a actuar, y la línea releída.

10. chown y chgrp: dueño y grupo

Los otros dos datos del inodo se cambian con comandos propios. chgrp, de change group, cambia el grupo, y el dueño de un archivo puede usarlo siempre que el grupo de destino sea uno de los suyos:

terminal
$ chgrp users informe.txt           # ana pertenece a «users»: puede
$ ls -l informe.txt
-rw-r----- 1 ana users 0 oct 12 16:30 informe.txt
$ chgrp root informe.txt            # no pertenece a «root»: no puede
chgrp: changing group of 'informe.txt': Operation not permitted

Con el primer comando, el archivo quedó legible para todos los miembros de users, porque el trío del grupo es r--. Así se comparte: se elige el grupo, y se ajusta su trío.

chown, de change owner, cambia el dueño, y admite cambiar el grupo en la misma operación. Requiere ser root, de modo que se usa con sudo:

ComandoCambia
chown luis archivoEl dueño.
chown luis:ventas archivoEl dueño y el grupo.
chown :ventas archivoSolo el grupo. Equivale a chgrp.
chown luis: archivoEl dueño, y el grupo por el primario de ese usuario.
chown -R luis:ventas directorioLo mismo, en todo un árbol.
terminal
$ chown root informe.txt
chown: changing ownership of 'informe.txt': Operation not permitted
$ sudo chown root:root informe.txt
[sudo] password for ana:
$ ls -l informe.txt
-rw-r----- 1 root root 0 oct 12 16:30 informe.txt
$ cat informe.txt
cat: informe.txt: Permission denied

El archivo está en el directorio de ana, lo creó ella, y ya no puede leerlo: no es la dueña ni pertenece al grupo root, y el trío de los otros es ---. El algoritmo del tema 17, aplicado sin excepciones.

Lo que sí puede hacer es borrarlo, y es la demostración práctica de la regla más extraña del tema anterior:

terminal
$ rm informe.txt
rm: remove write-protected regular empty file 'informe.txt'? y
$ ls
docs  hola.sh

Un archivo de root, sin ningún permiso para ella, eliminado por una usuaria común. Borrar es modificar el directorio, y el directorio taller es suyo.

El uso más frecuente de chown es precisamente reparar esta situación: archivos que quedaron a nombre de root dentro del directorio personal por haber usado sudo donde no hacía falta. Se corrige con sudo chown -R ana:ana directorio.

11. Por qué no se puede regalar un archivo

Que el dueño no pueda ceder lo suyo a otro usuario parece una restricción innecesaria. Tiene dos razones:

Si un usuario pudiera cambiar el dueño de sus archivos…Consecuencia
Podría atribuir a otro lo que él creó.El dueño de un archivo dejaría de ser una prueba de quién lo puso allí.
Podría eludir los límites de espacio.Donde hay cuotas de disco por usuario, llenaría el disco a nombre de otro.

El dueño de un archivo es, por eso, un dato confiable: solo el administrador lo asigna. La manera de pasarle un archivo a otra persona sin ser root es que ella lo copie, con lo que la copia nace a su nombre.

Esto explica también una diferencia entre dos mensajes que hasta ahora parecían sinónimos:

MensajeSignifica
Permission deniedLos permisos del archivo o de un directorio no te autorizan. Otro usuario, o tú con otros permisos, podría.
Operation not permittedLa operación está reservada a root, o al dueño. No depende de los nueve caracteres.

12. umask: los permisos de nacimiento

Queda una pregunta que el taller plantea desde el principio: ¿por qué los archivos nuevos aparecieron con rw-rw-r-- y los directorios con rwxrwxr-x? No lo decidimos nosotros.

Un programa que crea un archivo propone permisos amplios: 666 para un archivo común, 777 para un directorio. El sistema recorta esa propuesta con un filtro que cada proceso lleva consigo:

La máscara de creación, o umask, es un número que indica qué permisos se quitan a todo archivo o directorio nuevo.

terminal
$ umask
0002
$ umask -S                          # en forma simbólica: lo que se concede
u=rwx,g=rwx,o=rx

Se lee con los mismos valores 4, 2 y 1, pero al revés: cada dígito dice lo que no se da. El valor de Ubuntu, 002, quita solo la escritura (2) a los otros:

ArchivoDirectorio
Propuesta del programa666 — rw-rw-rw-777 — rwxrwxrwx
Máscara 002quita -------w-quita -------w-
Resultado664 — rw-rw-r--775 — rwxrwxr-x

Son exactamente los permisos que venimos viendo desde el tema 2. Los archivos nunca nacen ejecutables porque la propuesta de partida, 666, no incluye la x: es la protección de la que hablamos en el tema anterior.

umaskArchivos nuevosDirectorios nuevosCarácter
002664775Compartido con el grupo. El valor de Ubuntu, razonable porque cada usuario tiene su grupo privado.
022644755Solo el dueño escribe. El valor tradicional, y el de root.
027640750El grupo lee; los otros, nada.
077600700Todo privado.

El comando umask seguido de un número cambia la máscara de la shell actual, y afecta a lo que se cree a partir de ese momento. Los archivos existentes no cambian.

terminal
$ umask 077
$ touch privado.txt
$ mkdir reservado
$ ls -ld privado.txt reservado
-rw------- 1 ana ana    0 oct 12 16:55 privado.txt
drwx------ 2 ana ana 4096 oct 12 16:55 reservado
$ umask 002                         # volver al valor habitual

Es útil antes de generar archivos delicados: nacen cerrados, en lugar de quedar abiertos un instante hasta que se les aplique chmod. El cambio dura lo que la shell; para hacerlo permanente se escribe en ~/.bashrc, que estudiamos en el tema 34. umask es un comando interno, por la misma razón que cd: modifica un dato de la propia shell.

13. Recetas

Quiero…Comando
Ejecutar un script que escribíchmod +x script.sh
Que un archivo sea solo míochmod 600 archivo
Que un directorio sea solo míochmod 700 directorio
Proteger un archivo de mis propios descuidoschmod a-w archivo
Que nadie más que yo modifique un árbolchmod -R go-w directorio
Dejar un árbol con permisos normaleschmod -R u=rwX,go=rX directorio
Compartir un directorio con un grupochgrp -R grupo dir y chmod -R g+rwX dir
Recuperar archivos que quedaron a nombre de rootsudo chown -R ana:ana directorio
Copiar los permisos de un archivo a otrochmod --reference=modelo destino

La segunda fila es de aplicación obligada en algunos casos. Ciertos programas se niegan a usar un archivo secreto si otros usuarios pueden leerlo. El más conocido es ssh, que rechaza una clave privada con permisos distintos de 600, con un aviso de que el archivo está «demasiado abierto».

14. Las malas ideas

Hay una receta que no está en la tabla y que circula por todos los foros como solución universal:

chmod 777 no arregla nada: quita la cerradura

777 concede lectura, escritura y ejecución a todos los usuarios y a todos los programas del sistema. El Permission denied desaparece, sí, porque ya no hay permisos que negar. Cualquier proceso, incluido un servicio comprometido, puede modificar o reemplazar esos archivos. Cuando un problema «se resuelve» con 777, la causa real era otra —el dueño equivocado, un grupo que faltaba, un directorio del camino— y sigue sin resolverse. El diagnóstico del tema 17 lleva dos minutos y da la solución correcta.

Mala ideaQué sale malEn su lugar
chmod -R 777 directorioTodo queda abierto y todos los documentos pasan a ser ejecutables.Ajustar el dueño o el grupo, y dar g+rwX.
chmod -R 644 directorioLos directorios pierden la x y quedan inaccesibles.u=rwX,go=rX, o find por tipo.
chmod -R 755 directorioTodos los archivos pasan a ser ejecutables.Lo mismo.
sudo chown -R ana / y variantesEl sistema deja de funcionar: muchos programas exigen que ciertos archivos sean de root.Limitar el cambio al directorio que corresponde.
sudo para trabajar en el directorio personalDeja archivos de root que luego no se pueden modificar.Sin sudo; y reparar con chown lo que haya quedado.

Desarmamos el taller. Todo lo que queda en él es de ana:

terminal
$ cd ~/practica
$ rm -r taller
$ ls
fotos  informe.txt  notas.txt  tareas.txt

Y la referencia del tema:

ComandoQué hace
chmod u+x archivoAgrega un permiso. Las clases son u, g, o, a; las operaciones, +, -, =.
chmod 644 archivoFija los permisos. r vale 4, w vale 2, x vale 1.
chmod -R … directorioAplica el cambio a todo un árbol.
chmod -v …Informa cada cambio.
chgrp grupo archivoCambia el grupo.
sudo chown usuario:grupo archivoCambia el dueño y el grupo.
umaskMuestra la máscara de creación.
umask 077La cambia para la shell actual.

A lo largo del tema usamos sudo como una fórmula. En el tema 19 lo estudiamos: qué es actuar como administrador, qué diferencia hay entre su y sudo, y cómo se decide quién puede hacerlo.

15. Resumen

16. Preguntas de repaso

Intenta responder cada una antes de abrir la respuesta.

1. ¿Quién puede cambiar los permisos de un archivo? ¿Y su dueño?

Los permisos, el dueño del archivo y root. El dueño, solamente root.

2. ¿Qué hace chmod go-w archivo?

Quita el permiso de escritura al grupo y a los otros. Los demás permisos no cambian.

3. ¿Qué diferencia hay entre chmod g+r y chmod g=r?

La primera agrega la lectura al grupo, conservando lo que tuviera. La segunda deja al grupo únicamente con lectura, quitándole cualquier otro permiso.

4. Escribiste un script y al ejecutarlo recibes «Permission denied». ¿Qué comando lo resuelve?

chmod +x script.sh, o chmod u+x script.sh si solo debe poder ejecutarlo su dueño.

5. ¿Cuánto valen r, w y x en la notación octal?

4, 2 y 1. Cada dígito es la suma de los permisos presentes en un trío.

6. Convierte a octal: rw-r--r--, rwxr-x--- y rw-------.

644, 750 y 600.

7. Convierte a letras: 755, 640 y 700.

rwxr-xr-x, rw-r----- y rwx------.

8. ¿Por qué un número de permisos impar en un documento de texto suele ser un error?

Porque un dígito impar incluye el 1, la ejecución, y un documento no debería ser ejecutable.

9. ¿Cuándo conviene la notación simbólica y cuándo la octal?

La simbólica, para agregar o quitar un permiso sin alterar los demás, sobre todo en muchos archivos. La octal, para dejar un archivo en un estado exacto y conocido.

10. ¿Qué ocurre con chmod -R 644 proyecto, y cómo se hace bien?

Los directorios pierden el permiso de paso y quedan inaccesibles. Lo correcto es chmod -R u=rwX,go=rX proyecto, o aplicar permisos distintos a archivos y directorios con find.

11. ¿Qué hace la X mayúscula?

Da el permiso de ejecución solo a los directorios y a los archivos que ya son ejecutables para alguien. No lo da a los archivos comunes.

12. ¿Qué hace sudo chown -R luis:ventas /srv/datos?

Asigna el usuario luis como dueño y ventas como grupo del directorio y de todo su contenido.

13. ¿Qué diferencia hay entre «Permission denied» y «Operation not permitted»?

El primero indica que los permisos del archivo o de un directorio no autorizan el acceso. El segundo, que la operación está reservada a root o al dueño, como cambiar el dueño de un archivo.

14. Con umask 022, ¿con qué permisos nacen un archivo y un directorio?

El archivo, con 644: 666 menos la escritura del grupo y de los otros. El directorio, con 755.

15. ¿Por qué chmod 777 no es una solución?

Porque no corrige la causa del problema: elimina todas las restricciones, y deja los archivos modificables por cualquier usuario y cualquier programa del sistema.

Para practicar

  1. En un directorio de pruebas, crea un archivo y llévalo, con la notación simbólica y de a un cambio, por estos estados: rw-r--r--, rw-------, r--------, rwxr-x---. Verifica cada paso con ls -l.
  2. Repite el recorrido con la notación octal, usando chmod -v para ver las dos formas.
  3. Crea un script de una línea con echo 'date' > fecha.sh. Intenta ejecutarlo, dale permiso solo al dueño, y ejecútalo.
  4. Quítale la lectura a ese script dejando la ejecución, con chmod u-r, e intenta ejecutarlo. ¿Por qué falla?
  5. Crea un directorio con dos archivos. Quítale sucesivamente la r, la w y la x al dueño, devolviendo cada una antes de quitar la siguiente, y prueba en cada caso ls, cd, cat de un archivo y touch de uno nuevo. Compara con la tabla del tema 17.
  6. Reproduce la trampa de la sección 9 con chmod -R 644 sobre un árbol de prueba, repárala, y déjalo bien con la X mayúscula.
  7. Cambia el grupo de un archivo tuyo a otro de tus grupos, y ajusta los permisos para que ese grupo pueda leerlo y los demás no.
  8. Con sudo, crea un archivo en tu directorio de pruebas: sudo touch ajeno.txt. Mira su dueño, intenta escribir en él, y devuélvelo a tu nombre con chown.
  9. Ejecuta umask 027, crea un archivo y un directorio, y explica sus permisos. Restablece la máscara y comprueba que los ya creados no cambiaron.
  10. Averigua con stat -c '%a %n' los permisos de ~/.bashrc, ~/.bash_history y, si existe, ~/.ssh. ¿Coinciden con lo que cabría esperar por su contenido?