El Shell Bash de GNU/Linux 5.4 – Permisos

  1. El Shell Bash de GNU/Linux 1 – Introducción
  2. El Shell Bash de GNU/Linux 2 – Tuberías y filtros
  3. El Shell Bash de GNU/Linux 3 – Variables de entorno
  4. El Shell Bash de GNU/Linux 4 – Expresiones regulares
  5. El Shell Bash de GNU/Linux 5 – Sistema de ficheros
  6. El Shell Bash de GNU/Linux 5.1 – El árbol de directorios estándar
  7. El Shell Bash de GNU/Linux 5.2 – Tipos de ficheros
  8. El Shell Bash de GNU/Linux 5.3 – nombres, rutas absolutas y relativas
  9. El Shell Bash de GNU/Linux 5.4 – Permisos
  10. El Shell Bash de GNU/Linux 5.5 – Listar ficheros
  11. El Shell Bash de GNU/Linux 5.6 – Comandos para trabajas con archivos y carpetas
  12. El Shell Bash de GNU/Linux 5.7 – Otros comandos útiles
  13. El Shell Bash de GNU/Linux 5.8 – Montaje de sistemas de ficheros

5.4. Permisos

Usuario y grupo propietarios

Cada fichero y directorio del sistema pertenecen a un usuario y grupo determinados, podemos verlo al sacar el listado largo de un directorio:

ls -la
-rw-r--r-- 1 ppalotes alumnos 15 2011-03-21 16:34 claves.txt
-rw-r--r-- 1 jblanco profesores 32 2011-03-21 16:34 datos.txt

en el tercer campo tenemos el usuario (ppalotes), en el cuarto el grupo (alumnos) para el fichero llamado claves.txt

Permisos ordinarios

Los permisos, determinan quién puede leer y/o modificar el contenido de un fichero o directorio, y quién puede ejecutar un fichero de programa o acceder al contenido de un directorio.

Los permisos se pueden ver en el primer campo del listado largo de archivos:

-rw-r–r– 1 ppalotes alumnos 15 2011-03-21 16:34 claves.txt

El primer carácter indica el tipo de fichero, en este caso se trata de un archivo por el guión.

Los siguientes 9 caracteres son los permisos del fichero o directorio: rw-r–r–

En esos 9 caracteres hay 3 bloques de permisos:

  • Para el usuario (U) los tres primeros
  • Para el grupo (G) los tres siguientes
  • Para el otros (O) los tres últimos

En cada bloque hay 3 tipos de permiso:

  • r: lectura (read) → 4
  • w: escritura (write) → 2
  • x: ejecución (execute) → 1

Los números 4, 2 y 1 son números en octal, si a un archivo queremos dar permisos de lectura (4) y ejecución (1), deberemos asignarle el valor en octal 5=4+1

Los permisos se representan mediante 9 bits, 3 para U, 3 para G y 3 para O:

  • primeros 3 bit para → el usuario propietario del fichero → u
  • siguientes 3 bit para → el grupo propietario del fichero → g
  • siguientes 3 bit para → el resto de usuarios (otros) → o

Sistema de permisos

Vamos a introducir que son los permisos (rwx), así como el comando que nos permite modificarlos (chmod). 

Los permisos de acceso como ya hemos visto se establecen en tres niveles:

  • Usuario que ha creado el fichero (propietario, u)
  • Grupo al que pertenece el usuario (grupo, g)
  • Todos los demás usuarios del sistema (otros, o)

Para cada nivel hay tres tipos de acceso:

  • Lectura (r) → Permite ver el contenido del fichero o directorio
  • Escritura (w) → Permite modificar el contenido de un fichero, o crear y borrar ficheros y subdirectorios, si se trata de un directorio
  • Ejecución (x) Se puede ejecutar el fichero o acceder a él si es un directorio

Si se teclea la orden ls –l (listado largo) se nos presenta información detallada de cada fichero o directorio.

Por ejemplo si listo los ficheros que empiezan por m en la carpeta /etc y me quedo con alguna linea:

jblanco@tochox:/etc$ ls m* -l

-rw-r–r– 1 root root 111 2016-04-01 21:28 magic

lrwxrwxrwx 1 root root 13 2016-12-06 16:56 motd -> /var/run/motd

drwxr-xr-x 2 root root 4096 2016-08-16 12:11 1.0

La primera columna empezando por la izquierda muestra el tipo de fichero y la máscara de permisos. Ejemplo:

-rwxrw—x(-)(rwx)(rw-)(–x)

Es un fichero regular (-),

con permiso de lectura, escritura y ejecución para el propietario (rwx),

de lectura y escritura para el grupo (rw-)

y de ejecución para otros (–x).

Existe otra forma para referirnos a los permisos sobre ficheros: la máscara octal.

Para poner la máscara de numeración octal se siguen los siguientes pasos:

Se pasa la máscara rwx a binario utilizando tres dígitos para cada nivel:

  • propietario, grupo y otros
  • 0 → significa que no tiene permiso (un guión)
  • 1 → que sí lo tiene (la letra correspondiente rwx)

Las posibles combinaciones para 3 bit serían:

000 ↔ —

001 ↔ –x

010 ↔ -w-

011 ↔ -wx

100 ↔ r–

101 ↔ r-x

110 ↔ rw-

111 ↔ rwx

Aunque recordando sólo 3 combinaciones, podemos sacar las otras sumando, teniendo en cuenta los pesos:

4 → r–

2 → -w-

1 → –x

de cada dígito binario, para el ejemplo r-x, sería:

(4 2 1)

(1 0 1)

————–

4*1 + 2*0 + 1*1 = 4 + 2 = 5

De esta forma, la máscara octal para todos los permisos sería:

— → 000 → 0 + 0 + 0 = 0

–x → 001 → 0 + 0 + 1 = 1

-w- → 010 → 0 + 2 + 0 = 2

-wx → 011 → 0 + 2 + 1 = 3

r– → 100 → 4 + 0 + 0 = 4

r-x → 101 → 4 + 0 + 1 = 5

rw- → 110 → 4 + 2 + 0 = 6

rwx → 111 → 4 + 2 + 1 = 7

Chuleta:

4 2 1

r w x

chmod

Permite modificar los permisos de uno o varios ficheros.

chmod [opciones] modo[,modo] ficheros

chmod [opciones] modo_octal ficheros

Cambia los permisos de cada fichero dado según modo, que puede ser o bien una representación simbólica de los cambios a realizar, o bien un número octal que representa el patrón de bits de los nuevos permisos.

Modo simbólico

  • a, u, g, o → all, user, group, others
    • + → hace que los permisos seleccionados se añadan a los ya existentes en cada fichero
    • – → hace que se quiten de los que ya había
    • = → hace que sean los únicos que el fichero va a tener
    • r, w, x, s, t → read, write, execute, setuid/setgid, sticky
    • R Cambia ficheros y directorios recursivamente

Ejemplo: Establecer permisos en modo octal:

chmod 652 practica

El propietario de practica tendrá permiso de lectura y escritura (4+2=6), el grupo de lectura y ejecución (4+1=5) y otros de escritura (2).

Si quisiéramos expresar lo mismo mediante una máscara simbólica, pondríamos:

chmod u=rw, g=rx, o=w practica

Ejemplo: Comprobar con ls -l, antes y después de establecer permisos:

ls –l

-rw-r-x-w- 1 jblanco profesores 512 Feb 16 18:55 practica

chmod u+x, g-x practica

ls –l

-rwxr—w- 1 jblanco profesores 512 Feb 16 18:55 practica

Da permiso de ejecución del fichero al propietario y le quita el permiso de ejecución al grupo.

Otros ejemplos:

chmod u+x ~/scripts/ejercicio1.sh

→ Doy permisos de ejecución para el usuario (para mi login)

chmod 755 ~/scripts/ejercicio1.sh

→ Doy permisos de ejecución y lectura para todos (grupo y otros) y control total para el usuario (para mi login).

Espero que os haya gustado, nos vemos en el siguiente capítulo.

  1. El Shell Bash de GNU/Linux 1 – Introducción
  2. El Shell Bash de GNU/Linux 2 – Tuberías y filtros
  3. El Shell Bash de GNU/Linux 3 – Variables de entorno
  4. El Shell Bash de GNU/Linux 4 – Expresiones regulares
  5. El Shell Bash de GNU/Linux 5 – Sistema de ficheros
  6. El Shell Bash de GNU/Linux 5.1 – El árbol de directorios estándar
  7. El Shell Bash de GNU/Linux 5.2 – Tipos de ficheros
  8. El Shell Bash de GNU/Linux 5.3 – nombres, rutas absolutas y relativas
  9. El Shell Bash de GNU/Linux 5.4 – Permisos
  10. El Shell Bash de GNU/Linux 5.5 – Listar ficheros
  11. El Shell Bash de GNU/Linux 5.6 – Comandos para trabajas con archivos y carpetas
  12. El Shell Bash de GNU/Linux 5.7 – Otros comandos útiles
  13. El Shell Bash de GNU/Linux 5.8 – Montaje de sistemas de ficheros

14 comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.