Saltar la navegación

4.- Permisos de ficheros y directorios.

Recordemos que al listar las propiedades de un archivo con ls -l, aparece el primer campo con 10 caracteres. Después del primer carácter para decir si es directorio o fichero, los 9 caracteres siguientes son los permisos. Si un fichero tuviera todos los permisos, los 9 caracteres serían: rwxrwxrwx

En esos caracteres pueden aparecer los símbolos “r”, “w”, “x” “-“

Interpretación de los permisos

Los 9 caracteres son 3 grupos de 3 caracteres cada uno. (rwxrwxrwx)
Significado de los 3 caracteres rwx

  • “r” significa permiso de lectura (read)
  • “w” significa permiso de escritura (write)
  • “x” significa permiso de ejecución (execute)
  • Si aparece un “-” en lugar de la letra, significa que no se tiene ese permiso

¿Por qué son 3 grupos de letras? Cada grupo va dirigido a unos usuarios:

  • Primer grupo: (user) permisos del usuario propietario del fichero.
  • Segundo grupo: (group) permisos del grupo propietario del fichero excluido el propietario, que puede incluso no pertenecer al grupo.
  • Tercer grupo: (other) permisos del resto de usuarios

Ejemplo
En el archivo listado a continuación, ¿quién puede leer y quién puede hacer modificaciones? ¿Alguien lo puede ejecutar?
- r w - r - - - - - 1 pablo electricista 40 2018-02-01 22:27 archivo.txt
Respuesta:

  • El usuario propietario es pablo y sus permisos son lectura y escritura (r w -)
  • El grupo propietario es electricista, y los usuarios del grupo electricista (salvo pablo), solo pueden leer el fichero (r - - ).
  • El resto de los usuarios no pueden ni leerlo (- - -)
  • Nadie puede ejecutar el fichero

Observación:
Recordar que en Windows un fichero es ejecutable, cuando tiene la extensión exe, com o bat. Sin embargo en Linux no tienen ninguna extensión. Lo importante es que tenga la x en los permisos.
Incluso, si en el anterior ejemplo el grupo electricista tuviera mayores permisos que pablo, pablo no tendría esos permisos aunque pertenezca al grupo. Observa la diferencia con Windows donde los permisos eran acumulativos.

Significado de los permisos en directorios
Para un fichero es trivial diferenciar que significa leer, escribir o ejecutar, pero ¿qué significa que un directorio se pueda leer o ejecutar? Para los directorios estos permisos significan lo siguiente:

  • r: Permiso para listar el contenido del directorio. (No se puede ejecutar ls sino se tiene este permiso)
  • w: Permiso para crear o borrar entradas en el directorio, es decir, que quien protege el borrado de un fichero es la escritura del directorio al que pertenece.
  • x: Permiso para acceder a las entradas. (No se puede ejecutar cd sino se tiene este permiso)

En los directorios, la r y la x van relacionadas, de forma que se permiten ambas o ninguna, pues no tiene mucho sentido permitir listar un directorio (ls), y no permitir cambiar a ese directorio (cd).

Cambiar permisos: comando chmod

Los permisos solo los pueden cambiar 2 usuarios: el usuario propietario del fichero y el usuario root.

Sintaxis:  # chmod permisos nombre_fichero
Hay dos notaciones distintas para cambiar los permisos.

1ª Forma (Notación octal)

Se convierte cada grupo de permisos (rwx) a un número octal. ¿Cómo?
Se sustituye cada letra por 1 ó 0. Después sumamos a los que son 1, el valor siguiente: lectura(4) + escritura(2) + ejecución (1)
Ejemplo
Queremos que archivo.txt tenga los permisos siguientes: r w - r w x - -x
Para calcular los permisos, sustituimos las letras por 1 y los guiones por 0:
r w -  r w x   - - x
1 1 0 1 1 1  0 0 1
(4+2) (4+2+1) (1)
6 7 1
La línea a ejecutar es:      # chmod 671 archivo.txt

2ª Forma (Notación simbólica)

Se utiliza un patrón de texto formado por:
1. Las categorías afectadas:
u: para el propietario
g: para el grupo
o: para el resto de usuarios
2. Un carácter para retirar los permisos (-), dejarlos igual (=) o añadir (+)
3. Las abreviaturas de los tipos de permisos:
r: lectura
w: escritura
x: ejecución
Ejemplos

  1. Dar permisos de escritura al resto de usuarios sobre el fichero 'prueba':   # chmod o+w /home/usuario1/prueba
  2. Quitar todos los permisos de escritura del fichero a todos excepto al propietario:     # chmod go-w /home/usuariol/prueba

Autoevaluación

Pregunta

Si encuentro los siguientes permisos en el directorio /datos:

drwxr-x--- ana usuarios /datos

¿Indica la opción incorrecta?

Respuestas

El grupo usuarios tiene acceso de lectura y ejecución.

Todos los usuarios tienen acceso de lectura.

El usuario root tiene acceso completo.

El usuario ana tiene acceso completo.

Retroalimentación