Saltar al contenido

Establecer Permisos Especiales en Linux: Guía para Sysadmins

  • por

Si alguna vez te has preguntado cómo puedes gestionar mejor los permisos en Linux, estás en el lugar correcto. En este artículo, te explicaré paso a paso cómo establecer permisos especiales en Linux, especialmente el setuid y setgid. Estos permisos son herramientas poderosas que todo sysadmin debe conocer para garantizar la seguridad y la eficiencia en la gestión de archivos y directorios. ¡Vamos a sumergirnos en el tema!

¿Qué Son los Permisos Especiales en Linux?

Antes de entrar en detalles sobre cómo establecer estos permisos, es crucial entender qué son y por qué son importantes. En Linux, los permisos estándar incluyen lectura (r), escritura (w) y ejecución (x). Sin embargo, hay permisos especiales que ofrecen comportamientos adicionales: setuid y setgid.

¿Qué es el setuid?

El setuid (Set User ID) es un permiso especial que se utiliza en archivos ejecutables. Cuando un archivo tiene el setuid activado, cualquier usuario que ejecute ese archivo lo hará con los privilegios del propietario del archivo, no con los suyos propios. Esto es útil para tareas que requieren permisos elevados.

Ejemplo:

  • Crear un archivo ejecutable:
echo -e '#!/bin/bash\necho "Ejecutado con permisos de: $(whoami)"' > programa.sh
chmod +x programa.sh

En este ejemplo, programa.sh es un simple script que muestra el usuario que lo ejecuta.

Cambiar el propietario del archivo a root (necesitas privilegios de root):

sudo chown root programa.sh

Esto cambia el propietario del archivo a root.

Aplicar el permiso setuid:

sudo chmod u+s programa.sh

Esta línea activa el setuid en programa.sh.

Verificar el setuid:

ls -l programa.sh

Deberías ver algo como:

-rwsr-xr-x 1 root root 38 may 25 12:00 programa.sh
  • El s en rwsr indica que el setuid está activo.

¿Qué es el setgid?

El setgid (Set Group ID) también se usa en archivos ejecutables y directorios. En archivos ejecutables, cualquier usuario que ejecute el archivo lo hará con los privilegios del grupo del archivo. En directorios, todos los archivos creados dentro del directorio heredarán el grupo del directorio.

Ejemplo en Archivos Ejecutables:

  • Crear un archivo ejecutable:
echo -e '#!/bin/bash\necho "Grupo efectivo: $(id -gn)"' > programa.sh
chmod +x programa.sh

Este script muestra el grupo efectivo del usuario que lo ejecuta.

Cambiar el grupo del archivo:

sudo chown :staff programa.sh

Esto cambia el grupo del archivo a staff.

Aplicar el permiso setgid:

sudo chmod g+s programa.sh

Esta línea activa el setgid en programa.sh.

Verificar el setgid:

ls -l programa.sh

Deberías ver:

-rwxr-sr-x 1 root staff 38 may 25 12:00 programa.sh
  • El s en r-sr indica que el setgid está activo.

Ejemplo en Directorios:

  • Crear un directorio:
mkdir mi_directorio
  • Creamos un directorio llamado mi_directorio.
  • Cambiar el grupo del directorio:
sudo chown :staff mi_directorio 
  • Esto cambia el grupo del directorio a staff.
  • Aplicar el permiso setgid:
sudo chmod g+s mi_directorio
  • Activamos el setgid en mi_directorio.
  • Verificar el setgid:
ls -ld mi_directorio

Deberías ver:

drwxr-sr-x 2 root staff 4096 may 25 12:00 mi_directorio 

El s en r-sr indica que el setgid está activo en el directorio.

Resumen y Consejos Finales

Los permisos especiales setuid y setgid son esenciales para cualquier administrador de sistemas Linux. Permiten que los archivos ejecutables se ejecuten con los privilegios del propietario o del grupo, lo que puede ser crucial para tareas que requieren permisos específicos. Además, en directorios, el setgid asegura que todos los archivos creados hereden el grupo del directorio, facilitando la administración de grupos de trabajo.

Recuerda siempre verificar los permisos aplicados con ls -l y tener cuidado al establecer estos permisos, ya que pueden tener implicaciones de seguridad.

¡Ahora estás listo para aplicar estos conocimientos en tu entorno Linux y gestionar los permisos como un verdadero sysadmin!

Join the conversation

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *