03- GESTIÓN DE PERMISOS EN ARCHIVOS Y DIRECTORIOS

Comandos para la gestión de permisos de recursos en ambientes Linux.

INFORMACION BASICA

Cuando usamos la opción -l en el comando ls para listar ls -l, mostrará el contenido de la carpeta en la que nos encontramos, o la que se indique en el comando, por ejemplo: ls -l /root/Desktop

-rw-r–rwx root root 4566 mar 24 06:21 iptables.sh

El resultado mostrado, dará información importante. Lo primero que nos encontramos, son un conjunto de 10 caracteres:

-rw-r–rwx

  • El primero elemento nos indica si es un archivo o una carpeta. En este caso al ser un guión (-), sabemos que es un archivo. Si este paquete fuese (d) nos indicaría que es una carpeta, pudiendo acceder con el comando cd.

  • El segundo paquete (rw-): Esto nos dice que permisos tiene el propietario de este archivo, en este caso r y w, es decir de lectura y escritura. No de ejecución, ya que en vez de tener una (x) en su último caracter, tiene un guión -.

  • Tercer paquete (r–): Son los permisos, NO del usuario propietario, si no del grupo propietario. En este caso, todos los miembros del grupo propietario tienen solo permiso de r (read) o lectura, no de (w), ni de (x), es decir, no pueden escribir, ni ejecutar este archivo.

  • Cuarto paquete(rwx): Nos dice que todos los usuarios, que NO sean el propietario (segundo paquete), ni sean miembros del grupo de propietarios (tercer paquete), tienen permiso de r (lectura), de w (escritura) y de x (ejecución).

Estos permisos pueden tener unos bits especiales en ejecucion:

drwxrwxrwx --> esto es lo normal ---s------ --> SUID (todos los usuarios lo pueden ejecutar como propietario) ------s--- --> SGID (todo lo que entra en el directorio hereda el grupo propietario) ---------t --> STICKY (evita que los archivos sean borrados por usuarios no propietarios INCLUSO ROOT)

Nos encontramos datos numéricos como su tamaño, fecha y hora. Finalmente el nombre del archivo, pero lo que quiero explicar es que son esas palabras: root root

  • El primer root, es el usuario propietario, correspondiente al segundo paquete (rw-)

  • El segundo root, es el grupo (no usuario) propietario, perteneciente a los permisos del tercer paquete (r–)

FICHEROS RELEVANTES

/home/strelock/.profile --> fichero oculto que contiene toda la informacion del usuario ricardo. en este fichero se almacena la umask de cada usuario:

umask 022 (equivale a permisos 755 predeterminados) Representa la diferencia entre los permisos maximos (777 para directorio o 666 para archivo) y los permisos predeterminados al crearlo. Se puede modificar para cada usuario.

/home/strelock/.bashrc --> fichero oculto que contiene toda la configuracion del usuario ricardo

COMANDOS

UMASK --> permite cambiar la mascara de permisos.

CHMOD --> Change mode (nos permite cambiar los permisos de un archivo o directorio) -R --> Cambia los permisos de todos los archivos contenidos en una carpeta.

P.E. (octal)--> sudo chmod 037 /home/username/Escritorio/prueba.txt

OCTAL: Los permisos se dan con números del 0 al 7 0 --> - - - 1 --> - - x (permiso de ejecución) 2 --> - w - (permiso de escritura) 3 --> - w x 4 --> r - - (permiso de lectura) 5 --> r - x 6 --> r w - 7 --> r w x

3 grupos de permisos:

  1. Primer número para el creador.

  2. Segundo número para el grupo.

  3. Tercer número para el resto.

CARACTER: Los permisos se cambian usando 3 modificadores:

  1. u (user) g (group) o (other) a (all)

  2. + - = (añadir, eliminar o igualar)

  3. r w x (tipo de permiso)

P.E. sudo chmod u=+x /home/username/Escritorio/prueba.txt

EJEMPLO

Si quisiera cambiar el usuario propietario, a otro usuario existente, por ejemplo javier, usaría el comando:

chown javier iptables.sh

Dando un ls -l aparecería lo siguiente:

-rw-r–rwx javier root 4566 mar 24 06:21 iptables.sh

Si ahora además quiero cambiar el grupo propietario por ejemplo a alumnos (debe existir o ser creado antes), uso el siguiente comando:

chgrp alumnos iptables.sh

Vuelvo a ejecutar ls -l y el resultado debe ser el siguiente:

-rw-r–rwx javier alumnos 4566 mar 24 06:21 iptables.sh

Última actualización