Administración de permisos especiales y umask en Linux

LinuxBeginner
Practicar Ahora

Introducción

En esta práctica de laboratorio, aprenderás a gestionar los permisos especiales y la configuración de umask en un entorno Linux para asegurar un espacio de trabajo colaborativo. Explorarás cómo controlar los permisos predeterminados asignados a los archivos recién creados y cómo utilizar bits de permisos especiales, como el sticky bit, para proteger los archivos dentro de un directorio compartido y evitar que otros usuarios los eliminen.

Comenzarás preparando un entorno compartido simulado, lo que implica la creación de un nuevo grupo de usuarios y un directorio, para luego asignar la propiedad y los permisos adecuados. Después, modificarás el valor de umask para aplicar permisos predeterminados más estrictos y verificarás su efecto creando un nuevo archivo. Finalmente, establecerás el sticky bit en el directorio compartido y confirmarás su aplicación, asegurando que solo los propietarios de los archivos puedan eliminar sus propios documentos dentro de ese espacio común.

Esta es una práctica guiada que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que esta es una práctica de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de valoraciones positivas del 99% por parte de los alumnos.

Preparar el entorno y acceder al directorio

En este paso, prepararás el entorno para gestionar permisos de archivos especiales. Esto implica crear un directorio dedicado que simule un espacio de trabajo compartido para un equipo de investigación. Crearás un nuevo grupo de usuarios, un directorio y luego le asignarás la propiedad y los permisos correspondientes. Todas las operaciones se realizarán en tu directorio de proyecto, ~/project.

Primero, vamos a crear un nuevo grupo llamado research. Este grupo representará a los miembros del equipo que tienen acceso al directorio compartido. Utiliza el comando sudo groupadd para crearlo. Se usa sudo porque la creación de grupos es una tarea administrativa.

sudo groupadd research

A continuación, crea un nuevo directorio llamado RandD dentro de tu directorio ~/project. Este será nuestro directorio de trabajo principal para esta práctica.

mkdir ~/project/RandD

Ahora, cambia la propiedad de grupo del directorio RandD recién creado al grupo research. El comando chgrp se utiliza para este propósito.

sudo chgrp research ~/project/RandD

Para asegurar que solo el propietario (usuario labex) y los miembros del grupo research puedan acceder a este directorio, configura sus permisos. Utilizaremos el comando chmod con el código numérico 770. Este código otorga permisos de lectura, escritura y ejecución (rwx, que es 4+2+1=7) al usuario y al grupo, y ningún permiso (---, que es 0) a otros.

chmod 770 ~/project/RandD

Puedes verificar los permisos y la propiedad del directorio utilizando el comando ls -ld. La opción -l proporciona un formato de listado largo y la opción -d muestra el directorio en sí, no su contenido.

ls -ld ~/project/RandD

Deberías ver una salida similar a esta, confirmando los permisos (drwxrwx---), el propietario (labex) y el grupo (research).

drwxrwx--- 2 labex research 4096 Dec 12 10:30 /home/labex/project/RandD

Finalmente, cambia tu ubicación actual al directorio RandD. Aquí es donde realizarás las tareas de los siguientes pasos.

cd ~/project/RandD

Has configurado con éxito el entorno de trabajo.

Restringir los permisos de archivos por defecto con umask 027

En este paso, aprenderás a controlar los permisos predeterminados para los archivos recién creados utilizando el comando umask. Cuando creas un archivo, el sistema le asigna un conjunto de permisos por defecto. A menudo, estos valores son demasiado permisivos; por ejemplo, permiten que "Otros" usuarios lean tus archivos. En un entorno seguro como nuestro directorio RandD, queremos restringir esto.

El comando umask (máscara de modo de creación de archivos de usuario) especifica los permisos que deben ser eliminados de los permisos base cuando se crea un nuevo archivo o directorio.

  • Para archivos, el permiso base es 666 (rw-rw-rw-).
  • Para directorios, el permiso base es 777 (rwxrwxrwx).

Configuraremos el umask en 027. Este valor le indica al sistema que elimine los siguientes permisos:

  • Usuario (propietario): 0 - No se eliminan permisos.
  • Grupo: 2 - Se elimina el permiso de escritura.
  • Otros: 7 (4+2+1) - Se eliminan los permisos de lectura, escritura y ejecución.

Esto significa que cualquier archivo nuevo creado tendrá permisos de 666 - 027 = 640 (rw-r-----), y cualquier directorio nuevo tendrá permisos de 777 - 027 = 750 (rwxr-x---).

Primero, cambia los permisos predeterminados para tu sesión de terminal actual ingresando umask 027 en la línea de comandos. Asegúrate de seguir en el directorio ~/project/RandD.

umask 027

A continuación, verifica el nuevo valor de umask ingresando el comando por sí solo.

umask

El comando debería mostrar el nuevo valor de umask. El cero inicial indica que no hay permisos especiales (como el sticky bit, del que aprenderás más adelante) formando parte de la máscara.

027

Has cambiado con éxito los permisos de creación de archivos predeterminados para tu sesión actual. En el siguiente paso, crearás un archivo para observar el efecto de este nuevo umask.

Crear un archivo y verificar los nuevos permisos de umask

En este paso, pondrás en práctica la nueva configuración de umask creando un archivo. Esto demostrará cómo los permisos predeterminados que configuraste en el paso anterior se aplican automáticamente, protegiendo tu nuevo documento de accesos no autorizados. Debes seguir en el directorio ~/project/RandD.

Vamos a crear un nuevo archivo vacío llamado schedule.odt utilizando el comando touch. El comando touch es una forma sencilla de crear archivos vacíos o actualizar la marca de tiempo de los existentes.

touch schedule.odt

Ahora que el archivo está creado, necesitas verificar sus permisos. Utiliza el comando ls -l para mostrar la información detallada de schedule.odt.

ls -l schedule.odt

Verás una salida similar a la siguiente. La parte más importante es la primera columna, que muestra los permisos del archivo.

-rw-r----- 1 labex research 0 Dec 12 10:35 schedule.odt

Desglosemos la cadena de permisos -rw-r-----:

  • El primer carácter - indica que se trata de un archivo.
  • Los siguientes tres caracteres rw- son los permisos para el usuario (propietario), que son lectura y escritura. Esto corresponde al valor numérico 6.
  • Los siguientes tres caracteres r-- son los permisos para el grupo, que son de solo lectura. Esto corresponde al valor numérico 4.
  • Los últimos tres caracteres --- son los permisos para otros, lo que significa que no tienen ningún permiso. Esto corresponde al valor numérico 0.

Estos permisos (640) son el resultado directo de aplicar el umask de 027 a los permisos de archivo predeterminados del sistema de 666. El umask eliminó con éxito los permisos de escritura para el grupo y todos los permisos para otros, tal como nos habíamos propuesto.

Configurar el Sticky Bit en un directorio con chmod 1771

En este paso, abordarás un problema común en los directorios compartidos. Actualmente, cualquier miembro del grupo research puede eliminar cualquier archivo dentro del directorio ~/project/RandD, incluso archivos creados por otros usuarios. Esto se debe a que el permiso de escritura en un directorio permite la creación y eliminación de archivos. Para evitar eliminaciones accidentales o malintencionadas, configurarás un permiso especial conocido como "sticky bit".

El sticky bit, cuando se aplica a un directorio, modifica este comportamiento. Asegura que un archivo dentro del directorio solo pueda ser eliminado o renombrado por el propietario del archivo, el propietario del directorio o el usuario root. Esto es ideal para entornos colaborativos como nuestro directorio RandD.

Utilizarás el comando chmod con un número octal de cuatro dígitos para configurar el sticky bit. El comando será chmod 1771 RandD.

  • El primer dígito, 1, representa el sticky bit.
  • Los siguientes tres dígitos, 771, establecen los permisos estándar: rwx para el usuario, rwx para el grupo y --x para otros.

Primero, necesitas estar en el directorio padre de RandD para modificar sus permisos. Como te encuentras actualmente en ~/project/RandD, utiliza el comando cd .. para subir un nivel a ~/project.

cd ..

Ahora, desde el directorio ~/project, aplica el sticky bit al directorio RandD.

chmod 1771 RandD

El sticky bit ya está configurado en el directorio RandD. En el paso final, utilizarás el comando ls -l para ver cómo se muestra este permiso especial y verificar su efecto.

Verificar el permiso Sticky Bit con ls -l

En este paso final, verificarás que el sticky bit se haya aplicado correctamente al directorio RandD. El comando ls -l proporciona un indicador visual para permisos especiales como el sticky bit. Debes seguir en el directorio ~/project.

En la línea de comandos, ingresa el comando ls -ld RandD para ver los permisos del directorio en sí.

ls -ld RandD

Examina la salida cuidadosamente. Debería verse similar a esto:

drwxrwx--t 2 labex research 4096 Dec 12 10:45 RandD

El cambio clave está en la cadena de permisos: drwxrwx--t.

  • La d indica que es un directorio.
  • El primer rwx muestra que el usuario (labex) tiene permisos totales.
  • El segundo rwx muestra que el grupo research tiene permisos totales.
  • La parte final, --t, es donde se muestra el sticky bit. La t reemplaza lo que normalmente sería el permiso de ejecución (x) para "otros". Una t minúscula indica que tanto el sticky bit como el permiso de ejecución para "otros" están activados. Esto confirma que tu comando chmod 1771 se ejecutó correctamente.

¡Felicidades! Has configurado con éxito un directorio compartido con permisos predeterminados seguros mediante umask y has protegido su contenido contra eliminaciones no autorizadas configurando el sticky bit.

Resumen

En esta práctica de laboratorio, aprendiste a preparar un directorio compartido seguro para un grupo de usuarios. Esto implicó la creación de un nuevo grupo con groupadd, la creación de un directorio y el uso de chgrp y chmod para asignar la propiedad de grupo correcta y permisos restrictivos (770). También practicaste la manipulación de los permisos predeterminados para archivos y directorios recién creados configurando un valor de umask específico (027), y luego verificaste su efecto creando un nuevo archivo e inspeccionando sus permisos.

Además, exploraste los permisos especiales aplicando el sticky bit al directorio compartido mediante el comando chmod 1771. Aprendiste que el sticky bit es esencial para entornos colaborativos, ya que garantiza que los usuarios solo puedan eliminar o renombrar archivos de su propiedad, evitando la eliminación accidental o malintencionada del trabajo de otros. Finalmente, verificaste que el sticky bit se aplicó correctamente utilizando ls -l e identificando la t en la cadena de permisos del directorio.