Control de Acceso a Archivos en Red Hat Enterprise Linux

Red Hat Enterprise LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, obtendrás una comprensión completa de la gestión de permisos del sistema de archivos de Linux, una habilidad crucial para cualquier administrador de RHEL. Aprenderás a interpretar los permisos de los archivos usando ls -l, a modificarlos con chmod en modos simbólico y octal, y a cambiar la propiedad de los archivos con chown. Además, explorarás y aplicarás permisos especiales como SUID, SGID y el Bit pegajoso, y configurarás los permisos predeterminados eficazmente con umask. Esta experiencia práctica te dotará del conocimiento necesario para asegurar y controlar el acceso a archivos y directorios en un entorno Linux.

Interpretar Permisos del Sistema de Archivos de Linux con ls -l

En este paso, aprenderás a interpretar los permisos del sistema de archivos de Linux utilizando el comando ls -l. Comprender los permisos de los archivos es crucial para administrar el acceso a archivos y directorios en un entorno Linux.

Cada archivo y directorio en Linux tiene permisos asociados que determinan quién puede leer, escribir o ejecutar el archivo. Estos permisos se dividen en tres categorías:

  • Usuario (propietario): Los permisos para el propietario del archivo.
  • Grupo: Los permisos para los usuarios que son miembros del grupo del archivo.
  • Otros: Los permisos para todos los demás usuarios del sistema.

Cada categoría puede tener tres tipos de permisos:

  • Lectura (r): Permite ver el contenido de un archivo o listar el contenido de un directorio.
  • Escritura (w): Permite modificar el contenido de un archivo o crear/eliminar archivos dentro de un directorio.
  • Ejecución (x): Permite ejecutar un archivo ejecutable o entrar en un directorio.

Empecemos creando un nuevo directorio y un archivo dentro de tu directorio ~/project para observar sus permisos predeterminados.

Primero, crea un directorio llamado my_files:

mkdir ~/project/my_files

A continuación, crea un archivo vacío llamado document.txt dentro del directorio my_files:

touch ~/project/my_files/document.txt

Ahora, utiliza el comando ls -l para ver los permisos detallados del archivo document.txt. El comando ls -l proporciona una lista detallada, incluyendo los permisos del archivo, propietario, grupo, tamaño y fecha de modificación.

ls -l ~/project/my_files/document.txt

Debes ver una salida similar a esta:

-rw-rw-r-- 1 labex labex 0 Jun  6 17:36 /home/labex/project/my_files/document.txt

Analicemos la primera parte de la salida, -rw-rw-r--.:

  • El primer carácter (-) indica el tipo de archivo.
    • - significa que es un archivo regular.
    • d significa que es un directorio.
    • l significa que es un enlace simbólico.
  • Los siguientes nueve caracteres se dividen en tres conjuntos de tres:
    • rw-: Permisos para el propietario (labex). r (lectura), w (escritura), - (sin ejecución).
    • rw-: Permisos para el grupo (labex). r (lectura), w (escritura), - (sin ejecución).
    • r--: Permisos para otros. r (lectura), - (sin escritura), - (sin ejecución).

Esto significa que el usuario labex (propietario) y los usuarios del grupo labex pueden leer y escribir en document.txt, mientras que todos los demás usuarios solo pueden leerlo.

Ahora, examinemos los permisos del propio directorio my_files. Al usar ls -l en un directorio, se listan los contenidos del directorio. Para ver los permisos del directorio en sí, necesitas usar la opción -d con ls -l.

ls -ld ~/project/my_files

Debes ver una salida similar a esta:

drwxrwxr-x 2 labex labex 4096 Jun  6 17:36 /home/labex/project/my_files

Analicemos los permisos drwxrwxr-x.:

  • El primer carácter (d) indica que es un directorio.
  • rwx: Permisos para el propietario (labex). r (lectura), w (escritura), x (ejecución).
  • rwx: Permisos para el grupo (labex). r (lectura), w (escritura), x (ejecución).
  • r-x: Permisos para otros. r (lectura), - (sin escritura), x (ejecución).

Para los directorios:

  • r (lectura) permite listar el contenido del directorio.
  • w (escritura) permite crear, eliminar o renombrar archivos dentro del directorio.
  • x (ejecución) permite entrar en el directorio (usando cd) y acceder a sus archivos y subdirectorios.

Esto significa que el usuario labex y los usuarios del grupo labex pueden listar, crear/eliminar archivos y entrar en el directorio my_files. Otros usuarios pueden listar y entrar en el directorio, pero no pueden crear o eliminar archivos dentro de él.

Cambiar Permisos de Archivos con chmod (Modo Simbólico)

En este paso, aprenderás a cambiar los permisos de archivos utilizando el comando chmod en modo simbólico. El modo simbólico utiliza letras y símbolos para representar los cambios de permisos, lo que facilita agregar, quitar o establecer permisos específicos de forma intuitiva.

El comando chmod en modo simbólico sigue la sintaxis: chmod QUIÉN OPERACIÓN PERMISOS ARCHIVO.

  • QUIÉN: Especifica a quién se aplican los cambios de permisos.
    • u: usuario (propietario)
    • g: grupo
    • o: otros
    • a: todos (usuario, grupo y otros)
  • OPERACIÓN: Especifica cómo modificar los permisos.
    • +: Agregar un permiso.
    • -: Quitar un permiso.
    • =: Establecer los permisos exactamente como se especifican, reemplazando los existentes.
  • PERMISOS: Especifica el tipo de permiso.
    • r: lectura
    • w: escritura
    • x: ejecución

Continuemos trabajando con el archivo ~/project/my_files/document.txt y el directorio ~/project/my_files creados en el paso anterior.

Primero, quitemos el permiso de escritura para el grupo y otros de document.txt. Recuerde que sus permisos actuales son -rw-rw-r--.

chmod go-w ~/project/my_files/document.txt

Ahora, verifique el cambio usando ls -l:

ls -l ~/project/my_files/document.txt

La salida ahora debería mostrar:

-rw-r--r-- 1 labex labex 0 Jun  6 17:36 /home/labex/project/my_files/document.txt

Observe que el permiso w (escritura) para el grupo y otros ha sido quitado.

A continuación, agreguemos el permiso de ejecución para el propietario (u) a document.txt. Esto se hace a menudo para scripts para hacerlos ejecutables.

chmod u+x ~/project/my_files/document.txt

Verifique el cambio:

ls -l ~/project/my_files/document.txt

La salida ahora debería ser:

-rwxr--r-- 1 labex labex 0 Jun  6 17:36 /home/labex/project/my_files/document.txt

El propietario ahora tiene el permiso de ejecución (x).

Ahora, practiquemos con el directorio ~/project/my_files. Sus permisos actuales son drwxrwxr-x. Quitemos el permiso de escritura para otros (o) del directorio.

chmod o-w ~/project/my_files

Verifique el cambio:

ls -ld ~/project/my_files

La salida ahora debería mostrar:

drwxr-xr-x 2 labex labex 4096 Jun  6 17:36 /home/labex/project/my_files

Espere, ¿por qué o-w no cambió la salida? Esto se debe a que los o (otros) ya no tenían permiso de escritura. El r-x para otros significa lectura y ejecución, pero no escritura. Esto demuestra que chmod solo aplica cambios si son diferentes del estado actual.

Probemos a establecer los permisos exactamente. Estableceremos los permisos de document.txt a rw-r--r-- para todos (propietario, grupo, otros). Esto significa que el propietario obtiene lectura/escritura, el grupo obtiene lectura y otros obtienen lectura.

chmod a=rw,g=r,o=r ~/project/my_files/document.txt

Verifique el cambio:

ls -l ~/project/my_files/document.txt

La salida ahora debería ser:

-rw-r--r-- 1 labex labex 0 Jun  6 17:36 /home/labex/project/my_files/document.txt

Este comando a=rw,g=r,o=r es un poco redundante, ya que a=rw aplicaría rw a todos, luego g=r establecería el grupo en r (anulando el w de a=rw), y o=r establecería otros en r (anulando el w de a=rw). Una forma más simple de lograr rw-r--r-- sería chmod u=rw,go=r. Probemos eso.

chmod u=rw,go=r ~/project/my_files/document.txt

Verifique el cambio:

ls -l ~/project/my_files/document.txt

La salida debería ser:

-rw-r--r-- 1 labex labex 0 Jun  6 17:36 /home/labex/project/my_files/document.txt

Finalmente, hagamos que document.txt sea ejecutable para todos.

chmod a+x ~/project/my_files/document.txt

Verifique el cambio:

ls -l ~/project/my_files/document.txt

La salida ahora debería ser:

-rwxr-xr-x 1 labex labex 0 Jun  6 17:36 /home/labex/project/my_files/document.txt

Cambiar Permisos de Archivos con chmod (Modo Octal)

En este paso, aprenderás a cambiar los permisos de archivos utilizando el comando chmod en modo octal (numérico). El modo octal es una forma concisa de representar los permisos, donde cada permiso (lectura, escritura, ejecución) se asigna a un valor numérico.

Los valores numéricos para los permisos son:

  • Lectura (r): 4
  • Escritura (w): 2
  • Ejecución (x): 1
  • Sin permiso (-): 0

Para determinar el valor octal para un conjunto de permisos (usuario, grupo u otros), se suman los valores de los permisos concedidos.

Por ejemplo:

  • rwx (lectura, escritura, ejecución) = 4 + 2 + 1 = 7
  • rw- (lectura, escritura, sin ejecución) = 4 + 2 + 0 = 6
  • r-x (lectura, sin escritura, ejecución) = 4 + 0 + 1 = 5
  • r-- (lectura, sin escritura, sin ejecución) = 4 + 0 + 0 = 4
  • --- (sin permisos) = 0 + 0 + 0 = 0

El comando chmod en modo octal utiliza un número de tres dígitos, donde cada dígito representa los permisos para el propietario, el grupo y otros, respectivamente. La sintaxis es: chmod OGO ARCHIVO.

  • O: Valor octal para los permisos del propietario.
  • G: Valor octal para los permisos del grupo.
  • O: Valor octal para los permisos de otros.

Continuemos trabajando con ~/project/my_files/document.txt y ~/project/my_files.

Primero, establezcamos los permisos de document.txt en rw-r--r--.

  • Propietario: rw- = 6
  • Grupo: r-- = 4
  • Otros: r-- = 4

Por lo tanto, el valor octal será 644.

chmod 644 ~/project/my_files/document.txt

Verifique el cambio:

ls -l ~/project/my_files/document.txt

La salida ahora debería ser:

-rw-r--r-- 1 labex labex 0 Jun  6 00:48 /home/labex/project/my_files/document.txt

A continuación, hagamos que document.txt sea ejecutable solo por el propietario, manteniendo la lectura/escritura para el propietario y solo lectura para el grupo y otros. Esto significa que el propietario tendrá rwx (7), el grupo r-- (4) y otros r-- (4). El valor octal será 744.

chmod 744 ~/project/my_files/document.txt

Verifique el cambio:

ls -l ~/project/my_files/document.txt

La salida ahora debería ser:

-rwxr--r-- 1 labex labex 0 Jun  6 00:48 /home/labex/project/my_files/document.txt

Ahora, cambiemos los permisos del directorio ~/project/my_files. Sus permisos actuales son drwxr-xr-x. Establezcamos sus permisos en rwxr-x---.

  • Propietario: rwx = 7
  • Grupo: r-x = 5
  • Otros: --- = 0

Por lo tanto, el valor octal será 750.

chmod 750 ~/project/my_files

Verifique el cambio:

ls -ld ~/project/my_files

La salida ahora debería mostrar:

drwxr-x--- 2 labex labex 26 Jun  6 00:48 /home/labex/project/my_files

Esto significa que el propietario (labex) tiene permisos completos (lectura, escritura, ejecución), el grupo (labex) puede leer y ejecutar (entrar) en el directorio, y otros no tienen ningún permiso.

Finalmente, creemos un nuevo archivo de script ejecutable para demostrar la configuración de permisos de ejecución directamente.

echo '#!/bin/bash' > ~/project/my_script.sh
echo 'echo "Hola desde mi script!"' >> ~/project/my_script.sh

De forma predeterminada, los nuevos archivos no son ejecutables. Verifiquemos sus permisos:

ls -l ~/project/my_script.sh

Probablemente verá permisos como -rw-r--r--. Para hacerlo ejecutable para el propietario y el grupo, pero no para otros, queremos rwxrwx---.

  • Propietario: rwx = 7
  • Grupo: rwx = 7
  • Otros: --- = 0

Por lo tanto, el valor octal será 770.

chmod 770 ~/project/my_script.sh

Verifique el cambio:

ls -l ~/project/my_script.sh

La salida ahora debería ser:

-rwxrwx--- 1 labex labex 41 Jun  6 00:52 /home/labex/project/my_script.sh

Ahora puede ejecutar el script:

~/project/my_script.sh

Debería ver la salida:

Hola desde mi script!

Cambiar la Propiedad de un Archivo con chown

En este paso, aprenderás a cambiar el propietario y el grupo de archivos y directorios utilizando el comando chown. Esta es una tarea administrativa crucial, ya que solo el usuario root puede cambiar el propietario de un archivo. El usuario labex tiene privilegios sudo, lo que te permitirá realizar estas acciones.

La sintaxis básica de chown es: chown [OPCIONES] NUEVO_PROPIETARIO[:NUEVO_GRUPO] ARCHIVO(s).

Comencemos creando un nuevo usuario y grupo que podamos usar para demostrar los cambios de propiedad. Dado que este entorno es basado en contenedores, crearemos un usuario y grupo simples para fines demostrativos.

Primero, crea un nuevo grupo llamado devs:

sudo groupadd devs

A continuación, crea un nuevo usuario llamado developer y agrégalo al grupo devs. Crearemos un usuario del sistema sin directorio de inicio ni shell de inicio de sesión para esta demostración.

sudo useradd -r -g devs -s /sbin/nologin developer

Ahora, cambiemos el propietario de ~/project/my_files/document.txt de labex a developer.

sudo chown developer ~/project/my_files/document.txt

Verifica el cambio usando ls -l:

ls -l ~/project/my_files/document.txt

La salida ahora debería mostrar a developer como propietario:

-rwxr--r-- 1 developer labex 0 Jun  6 00:48 /home/labex/project/my_files/document.txt

Observa que la propiedad del grupo (labex) no se ha modificado.

También puedes cambiar tanto el propietario como el grupo simultáneamente usando la sintaxis propietario:grupo. Cambiemos el propietario de document.txt de nuevo a labex y su grupo a devs.

sudo chown labex:devs ~/project/my_files/document.txt

Verifica el cambio:

ls -l ~/project/my_files/document.txt

La salida ahora debería mostrar a labex como propietario y devs como grupo:

-rwxr--r-- 1 labex devs 0 Jun  6 00:48 /home/labex/project/my_files/document.txt

El comando chown también admite la opción -R (recursivo), que te permite cambiar la propiedad de un árbol de directorios completo. Cambiemos el propietario del directorio ~/project/my_files y todo su contenido a developer, y el grupo a devs.

sudo chown -R developer:devs ~/project/my_files

Verifica el cambio para el directorio:

ls -ld ~/project/my_files

La salida debería reflejar la nueva propiedad:

drwxr-x--- 2 developer devs 26 Jun  6 00:48 /home/labex/project/my_files

Ten en cuenta que después de cambiar la propiedad del directorio a developer:devs, el usuario labex ya no puede acceder al archivo dentro del directorio porque los permisos del directorio son drwxr-x--- (el propietario y el grupo tienen acceso, pero otros no), y labex no es ni el propietario (developer) ni miembro del grupo (devs). Si intentas listar el archivo ahora:

ls -l ~/project/my_files/document.txt

Obtendrás un error de "Permiso denegado". Esto demuestra cómo la propiedad y los permisos trabajan juntos para controlar el acceso.

También puedes cambiar solo la propiedad del grupo usando chown :NUEVO_GRUPO ARCHIVO(s). Esto es equivalente al comando chgrp. Cambiemos el grupo de ~/project/my_script.sh a devs.

sudo chown :devs ~/project/my_script.sh

Verifica el cambio:

ls -l ~/project/my_script.sh

La salida debería mostrar a devs como propietario del grupo, mientras que labex sigue siendo el propietario del archivo:

-rwxrwx--- 1 labex devs 41 Jun  6 00:52 /home/labex/project/my_script.sh

Finalmente, limpiemos cambiando la propiedad de nuevo a labex:labex y luego eliminando el usuario developer y el grupo devs.

sudo chown -R labex:labex ~/project/my_files
sudo userdel developer
sudo groupdel devs

Comprender y Aplicar Permisos Especiales (SUID, SGID, Bit de Adhesión)

En este paso, explorará los permisos especiales en Linux: SUID (Set User ID), SGID (Set Group ID) y el Sticky Bit. Estos permisos proporcionan un control mejorado sobre la ejecución de archivos y el comportamiento de los directorios.

Los permisos especiales se representan mediante un dígito adicional en el modo de permiso octal, colocado antes de los tres dígitos estándar (propietario, grupo, otros).

  • SUID (Set User ID):
    • Valor octal: 4
    • Efecto en archivos: Cuando se ejecuta un archivo ejecutable con SUID, se ejecuta con los permisos del propietario del archivo, no del usuario que lo ejecutó. Esto se usa comúnmente para programas que necesitan privilegios elevados para realizar ciertas tareas, como el comando passwd (que necesita escribir en /etc/shadow, un archivo propiedad de root).
    • En la salida de ls -l: Una s aparece en lugar del permiso de ejecución x del propietario. Si el propietario no tiene permiso de ejecución, aparece una S mayúscula.
  • SGID (Set Group ID):
    • Valor octal: 2
    • Efecto en archivos: Similar a SUID, pero el ejecutable se ejecuta con los permisos del propietario del grupo del archivo.
    • Efecto en directorios: Los archivos y subdirectorios creados dentro de un directorio habilitado para SGID heredan la propiedad del grupo de ese directorio, en lugar del grupo principal del usuario que los creó. Esto es muy útil para directorios compartidos donde todos los archivos deben pertenecer a un grupo específico.
    • En la salida de ls -l: Una s aparece en lugar del permiso de ejecución x del grupo. Si el grupo no tiene permiso de ejecución, aparece una S mayúscula.
  • Sticky Bit:
    • Valor octal: 1
    • Efecto en archivos: Ninguno.
    • Efecto en directorios: Los usuarios pueden crear archivos en el directorio, pero solo pueden eliminar o renombrar archivos que les pertenezcan. Esto evita que los usuarios eliminen o muevan archivos de otros usuarios en un directorio compartido (por ejemplo, /tmp).
    • En la salida de ls -l: Una t aparece en lugar del permiso de ejecución x de otros. Si otros no tienen permiso de ejecución, aparece una T mayúscula.

Demostremos estos permisos especiales.

Ejemplo de SUID

Crearemos un programa C simple que intenta leer un archivo restringido.

Primero, cree un archivo que solo root pueda leer:

sudo touch ~/project/secret_data.txt
sudo chmod 600 ~/project/secret_data.txt
sudo chown root:root ~/project/secret_data.txt

Verifique sus permisos:

ls -l ~/project/secret_data.txt

Salida:

-rw------- 1 root root 0 Jun  6 17:36 /home/labex/project/secret_data.txt

Ahora, cree un programa C read_secret.c que intente leer este archivo:

nano ~/project/read_secret.c

Pegue el siguiente código en read_secret.c:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main() {
    FILE *fp;
    char buffer[256];

    printf("Attempting to read /home/labex/project/secret_data.txt...\n");

    fp = fopen("/home/labex/project/secret_data.txt", "r");
    if (fp == NULL) {
        perror("Error opening file");
        return 1;
    }

    while (fgets(buffer, sizeof(buffer), fp) != NULL) {
        printf("%s", buffer);
    }

    fclose(fp);
    printf("Successfully read file.\n");
    return 0;
}

Guarde y salga de nano (Ctrl+S, Ctrl+X).

Compile el programa:

gcc ~/project/read_secret.c -o ~/project/read_secret

Ahora, intente ejecutarlo como labex:

~/project/read_secret

Debería ver un mensaje "Error opening file: Permission denied", ya que labex no tiene acceso de lectura a secret_data.txt.

Ahora, hagamos que read_secret sea propiedad de root y establezcamos el bit SUID.

sudo chown root:root ~/project/read_secret
sudo chmod u+s ~/project/read_secret

Verifique los permisos:

ls -l ~/project/read_secret

Salida:

-rwsr-xr-x 1 root root 17704 Jun  6 01:02 /home/labex/project/read_secret

Observe la s en el conjunto de permisos del propietario. Ahora, ejecute el programa de nuevo como labex:

~/project/read_secret

Esta vez, debería leer el archivo con éxito (aunque está vacío, por lo que no se imprimirá ningún contenido, pero el mensaje "Successfully read file." indica éxito). Esto se debe a que el bit SUID hizo que el programa se ejecutara con los permisos de root.

Ejemplo de SGID (en Directorio)

Creemos un directorio compartido y un nuevo grupo.

sudo groupadd shared_group
sudo mkdir ~/project/shared_dir
sudo chown labex:shared_group ~/project/shared_dir
sudo chmod 770 ~/project/shared_dir

Ahora, establezca el bit SGID en shared_dir:

sudo chmod g+s ~/project/shared_dir

Verifique los permisos:

ls -ld ~/project/shared_dir

Salida:

drwxrws--- 2 labex shared_group 6 Jun  6 01:02 /home/labex/project/shared_dir

Observe la s en el conjunto de permisos del grupo.

Ahora, cree un archivo dentro de shared_dir:

touch ~/project/shared_dir/new_file.txt

Verifique la propiedad de new_file.txt:

ls -l ~/project/shared_dir/new_file.txt

Salida:

-rw-r--r-- 1 labex shared_group 0 Jun  6 01:02 /home/labex/project/shared_dir/new_file.txt

Aunque el grupo principal de labex es labex, el new_file.txt heredó la propiedad del grupo shared_group de shared_dir debido al bit SGID.

Ejemplo de Sticky Bit

El directorio /tmp es un ejemplo clásico de un directorio con el sticky bit establecido. Creemos un directorio similar.

sudo mkdir ~/project/public_upload
sudo chmod 1777 ~/project/public_upload

El 1 en 1777 es el valor octal para el sticky bit. 777 otorga permisos completos al propietario, grupo y otros.

Verifique los permisos:

ls -ld ~/project/public_upload

Salida:

drwxrwxrwt 2 root root 6 Jun  6 01:02 /home/labex/project/public_upload

Observe la t en el conjunto de permisos de otros.

Ahora, simulemos que otro usuario crea un archivo en este directorio. Como solo tenemos el usuario labex, crearemos un archivo como labex y luego intentaremos eliminarlo después de cambiar su propiedad a root (simulando a otro usuario).

Cree un archivo como labex:

touch ~/project/public_upload/labex_file.txt

Cambie su propiedad a root:

sudo chown root:root ~/project/public_upload/labex_file.txt

Ahora, intente eliminar labex_file.txt como labex:

rm ~/project/public_upload/labex_file.txt

Verá un mensaje que le pregunta si desea eliminar el archivo protegido contra escritura, y después de confirmar con y, obtendrá un error "Operation not permitted". Esto se debe a que el sticky bit impide que los usuarios eliminen archivos que no les pertenecen dentro de ese directorio, aunque labex tenga permiso de escritura en el directorio public_upload. Solo root o el propietario de labex_file.txt (root en este caso) pueden eliminarlo.

Para limpiar, necesitará sudo para eliminar labex_file.txt:

sudo rm ~/project/public_upload/labex_file.txt

Limpieza

Elimine los archivos y directorios creados, y el usuario/grupo:

sudo rm -f ~/project/secret_data.txt ~/project/read_secret.c ~/project/read_secret
sudo rm -rf ~/project/shared_dir ~/project/public_upload
sudo groupdel shared_group

Configurar Permisos Predeterminados con umask

En este paso final, aprenderá sobre umask, que controla los permisos predeterminados asignados a los archivos y directorios recién creados. El umask (máscara de modo de creación de archivos del usuario) es una máscara de bits que elimina permisos de los permisos máximos posibles.

Los permisos máximos para un archivo nuevo son 666 (rw-rw-rw-), lo que significa lectura y escritura para todos. Los archivos nuevos típicamente no obtienen permisos de ejecución de forma predeterminada por razones de seguridad.
Los permisos máximos para un directorio nuevo son 777 (rwxrwxrwx), lo que significa lectura, escritura y ejecución para todos.

El valor de umask se resta de estos permisos máximos para determinar los permisos predeterminados reales.

Para ver su valor actual de umask, simplemente escriba umask:

umask

Probablemente verá 0002 o 0022. En este entorno, es 0022 para el usuario labex.

Un umask de 0022 significa:

  • El primer 0 es para permisos especiales (SUID, SGID, Sticky Bit), que no se ven afectados por umask de forma predeterminada.
  • El segundo 0 significa que no se eliminan permisos del propietario.
  • El tercer 2 significa que el permiso de escritura (valor 2) se elimina del grupo.
  • El cuarto 2 significa que el permiso de escritura (valor 2) se elimina de otros.

Calculemos los permisos predeterminados con un umask de 0022:

  • Para archivos (máx. 666):

    • Propietario: 6 - 0 = 6 (rw-)
    • Grupo: 6 - 2 = 4 (r--)
    • Otros: 6 - 2 = 4 (r--)
    • Permisos de archivo resultantes: 644 (rw-r--r--)
  • Para directorios (máx. 777):

    • Propietario: 7 - 0 = 7 (rwx)
    • Grupo: 7 - 2 = 5 (r-x)
    • Otros: 7 - 2 = 5 (r-x)
    • Permisos de directorio resultantes: 755 (rwxr-xr-x)

Probemos esto. Cree un nuevo archivo y directorio:

touch ~/project/new_file_umask.txt
mkdir ~/project/new_dir_umask

Verifique sus permisos:

ls -l ~/project/new_file_umask.txt
ls -ld ~/project/new_dir_umask

Debería ver permisos como -rw-r--r-- para el archivo y drwxr-xr-x para el directorio, confirmando el efecto del umask de 0022.

Ahora, cambiemos el umask a 0077. Este umask eliminará todos los permisos de grupo y otros.

umask 0077

Verifique que el umask haya cambiado:

umask

Salida:

0077

Ahora, calculemos los permisos predeterminados con un umask de 0077:

  • Para archivos (máx. 666):

    • Propietario: 6 - 0 = 6 (rw-)
    • Grupo: 6 - 7 = -1 (efectivamente 0, ---)
    • Otros: 6 - 7 = -1 (efectivamente 0, ---)
    • Permisos de archivo resultantes: 600 (rw-------)
  • Para directorios (máx. 777):

    • Propietario: 7 - 0 = 7 (rwx)
    • Grupo: 7 - 7 = 0 (---)
    • Otros: 7 - 7 = 0 (---)
    • Permisos de directorio resultantes: 700 (rwx------)

Probemos este nuevo umask. Cree otro nuevo archivo y directorio:

touch ~/project/restricted_file.txt
mkdir ~/project/restricted_dir

Verifique sus permisos:

ls -l ~/project/restricted_file.txt
ls -ld ~/project/restricted_dir

Ahora debería ver permisos como -rw------- para el archivo y drwx------ para el directorio.

La configuración de umask se configura típicamente en los archivos de inicialización del shell (como ~/.bashrc o /etc/profile) para aplicarse automáticamente cuando un usuario inicia sesión. Para este laboratorio, el cambio de umask es temporal y solo se aplica a la sesión actual de la terminal.

Para revertir el umask a su valor predeterminado para el usuario labex, simplemente puede volver a configurarlo en 0022:

umask 0022

Finalmente, limpie los archivos y directorios creados en este paso:

rm ~/project/new_file_umask.txt ~/project/restricted_file.txt
rmdir ~/project/new_dir_umask ~/project/restricted_dir

Resumen

En este laboratorio, profundizamos en los aspectos fundamentales de la gestión de permisos del sistema de archivos de Linux. Empezamos dominando el comando ls -l para interpretar los permisos de archivos y directorios, comprendiendo la importancia de las categorías de usuario, grupo y otros, y los permisos de lectura, escritura y ejecución. Este conocimiento fundamental se aplicó luego para modificar permisos usando chmod en modos simbólico y octal, proporcionando flexibilidad en la configuración de los derechos de acceso.

Además, aprendimos cómo cambiar la propiedad de los archivos con el comando chown, lo cual es crucial para asignar control administrativo. El laboratorio también cubrió la comprensión y aplicación de permisos especiales (SUID, SGID y Sticky Bit), que ofrecen un control avanzado sobre el comportamiento de ejecución y creación de archivos. Finalmente, exploramos cómo configurar permisos predeterminados para archivos y directorios recién creados usando umask, asegurando configuraciones de permisos consistentes en todo el sistema.