Tabla de Contenido
Introducción
En el ámbito de la ciberseguridad, es importante establecer permisos a cada directorio,
archivo o
sistema en Linux, siendo una mala configuración un riesgo de seguridad alto.
Esta guía ayuda a los profesionales que desean ingresar al área de ciberseguridad,
Conceptos básicos
Permisos en Linux
Cuando se trata de establecer permisos en Linux, se debe considerar los iguiente aspectos
más importantes a la hora de establecerlos.
Write
Esta opción permite la escritura o edición de archivos por parte del usuario, grupo u
otro
que tenga este permiso.
Puede verlo en la línea de comando como w en el siguiente comando:
chmod u-w project_k.txt
Este comando le quitará el permiso de escritura/write a otros usuarios que no sea el propietario o el grupo, del archivo project_k.txt.
Read
La opción de lectura/read permite que los usuarios puedan leer el directorio o archivo especificado, el símbolo que permite la lectura está representado por la letra r.
chmod u+r project_k.txt
La funcionalidad del comando anterior es el de darle permisos de lectura del archivo project_k.txt al usuario.
Execute
Esta opción permite el acceso a la información correspondiente de directorio o archivo, identificándose con la letra x. Como se puede observar en el siguiente código:
chmod u+x project_k.txt
Este comando le da acceso para que el usuario visualice la información contenida en el archivo project_k.txt.
Tipos de Usuarios
Propietario (User)
Identifica al usuario que haya creado el archivo, quien se convierte en el propietario. Representado por la letra u.
Grupo (Group)
Tal como se conoce en los demás sistemas operativos, un grupo permite gestionar actividades que hayan sido asignadas al usuario dentro del grupo de trabajo. Dicho también de otro modo, consta de varios usuarios, siendo también una forma de administrar un entorno de usuarios múltiples. Represantado por la la letra g.
Otros usuarios (Others)
Este tipo de usuario no pertenece a ninguna de los tipos de usuaios anteriores, y se refiere a otros usuarios exluyentes del propietario o grupo de trabajo perteneciente a los usuarios globales de la empresa. Representado por la letra o.
Comandos esenciales
chmod
Permite el cambio de permisos de directorios y archivos dentro del sistema.
chmod o-w project_k.txt
Donde:
chown
Se encarga de cambiar el propietario del archivo o directorio.
Para cambiar el propietario del archivo, se coloca el siguiente comando:
chown fgarcia access.txt
Donde:
chgrp
Comando usado para el cambio de grupo al que pertenece el archivo o directorio.
chgrp desarrollo access.txt
Donde:
Caso practico
1. Configuración de Permisos para un Proyecto de Desarrollo
Situacion
Se tiene un equipo de desarrollo que trabaja en un proyecto compartido en un servidor Linux. Necesita asegurarse de que todos los desarrolladores puedan leer y escribir en los archivos del proyecto, pero sólo el líder del equipo pueda ejecutar scripts importantes.
Objetivos
Solución
Preparando el entorno en Debian
Es importante revisar que el sistema tenga las actualizaciones
necesarias para poder realizar esta práctica.
Recuerda ingresar al modo root para poder realizar los cambios
correspondientes dentro del equipo.
Crear grupo de Desarrolladores
Para crear el grupo correspondiente es importante
considerar la información proporcionada en la descripción del caso.
Donde:
| Grupo |
|---|
| Desarrollo |
Con las especificaciones mostradas en la tabla anterior, el comando para crear un grupo dentro del sistema es el siguiente:
sudo groupadd desarrolladores
Donde:
Crear usuarios
Para crear el grupo correspondiente de "desarrolladores" es importante
considerar la información proporcionada en la descripción del caso.
Donde:
| Grupo | Usuario | Categoría | Permisos |
|---|---|---|---|
| Desarrollo | jgarcia | Líder | w + r + x |
| rlopez | Desarrollador1 | w + r | |
| mmorgan | Desarrollador2 | w + r | |
| osmith | Desarrollador3 | w + r |
Para este caso, como estamos integrando usuarios desde cero, deben ser creados dentro del equipo. Y para ello colocamos los siguientes comandos:
sudo useradd jgarcia
sudo useradd rlopez
sudo useradd mmorgan
sudo useradd osmith
Donde:
Asignar usuarios al grupo
Luego, asignamos cada usuario al grupo de “desarrollo” con los siguientes comandos:
sudo usermod -a -G desarrolladores jgarcia
sudo usermod -a -G desarrolladores rlopez
sudo usermod -a -G desarrolladores mmorgan
sudo usermod -a -G desarrolladores osmith
O se puede colocar “-aG” sin separase, para cada usuario, como lo siguiente:
sudo usermod -aG desarrolladores jgarcia
Donde:
Establecer permisos de lectura y escritura para el grupo en el directorio del proyecto
Para asignar permisos de lectura y escritura, primeramente, se debe asignar el directorio, junto con todo su contenido, al grupo. Para ello, colocaremos el siguiente comando:
sudo chown -R :desarrolladores /home/analyst/desarrolladores
Donde:
Con esto realizado, seguimos con el cambio de permisos específicos. Tanto el
propietario
como el grupo tienen los permisos de escritura, lectura y ejecución, pero cero
permisos
para oros usuarios ajenos al proyecto.
Esto lo aplicamos de dos maneras, donde asignamos a cada tipo de usuarios sus
permisos, o la asignación por representación numérica al usuario propietario, grupo
y otros.
Para ello seguimos los comandos (para asignación por tipo de usuario):
sudo chmod -R g+wrx /home/analyst/desarrolladores
sudo chmod -R u+wrx /home/analyst/desarrolladores
sudo chmod -R o-wrx /home/analyst/desarrolladores
Donde:
Como se puede observar, el directorio “desarrolladores” (d),
gestionado por el grupo “desarrolladores”, tiene los tres permisos (escritura,
redacción y ejecución) para el propietario (los primeros rwx después de “d”), y para
el grupo (los siguientes rwx), pero se observan guiones en los tres últimos
espacios, esto indica que no hay ningún permiso para otros usuarios externos del
proyecto de desarrolladores.
Con la representación numérica ocurre algo similar, pues para definir que un tipo de
usuario tenga los máximos accesos (rwx), se coloca el número 7. Podemos
identificarlos de mejor manera de acuerdo la siguiente tabla:
| Valor | Tipo de permiso |
|---|---|
| 4 | Lectura |
| 2 | Escritura |
| 1 | Ejecución |
| 0 | Ningún permiso |
Ahora, consideremos que, para agilizar definición de permisos a algún directorio o
archivo específico, se deberán asignar permisos a los tres tipos de usuarios, por
lo tanto, es común que se vean tres valores, correspondientes a: propietario (u),
grupo (g) y otros (o), en este orden se asignan los valores.
Entonces, basándonos en nuestro caso, debemos considerar nuevamente que tanto el
propietario tiene los permisos de escritura, lectura y ejecución, escritura y
lectura para el grupo, pero cero permisos para oros usuarios ajenos al proyecto.
| Propietario | Grupo | otro |
|---|---|---|
| rwx | rwx | --- |
| 4 + 2 + 1 | 4 + 2 + 1 | 0 |
| 7 | 7 | 0 |
Por lo tanto, el comando quedaría de la siguiente manera:
sudo chmod -R 770 /home/analyst/desarrolladores
Mayormente se usa esta representación numérica porque ahorra tipeos, tiempo al ser más directa, reduce la longitud del comando.
Configuración de permisos específicos para el script
Para establecer permisos específicos del script importante al líder del equipo, es
importante primero asignarlo como propietario.
Para ello, cambiamos el propietario del srcipt, colocando el siguiente comando:
sudo chown jgarcia /home/analyst/desarrolladores/crear_carpetas.sh
Donde:
Aseguramos que los permisos estén asignados correctamente, donde solo lectura y escritura las tenga el propietario y el grupo. Luego, se establecen permisos para que solo el propietario (líder del proyecto) pueda ejecutar el script importante, y el grupo únicamente pueda leerlo con el siguiente comando:
sudo chmod -R 740 /home/analyst/desarrolladores/crear_carpetas.sh
| Propietario | Grupo | Otro |
|---|---|---|
| rwx | r-- | --- |
| 4 + 2 + 1 | 4 | 0 |
| 7 | 4 | 0 |
Explicación resumida de comandos
Resultado
Con esta configuración, todos los desarrolladores podrán leer y escribir en los archivos del proyecto, pero sólo el líder del equipo podrá ejecutar los scripts importantes. Esto ayuda a mantener la seguridad y el control de acceso adecuado en el entorno de desarrollo.
Buenas Prácticas
Seguridad
Mantén la segurridad de los equipos siguiente los siguientes puntos:
Eficiencia
Aplicar las mejores prácticas para administrar permisos de manera eficiente con las siguientes recomendaciones:
Conclusiones
Una configuración adecuada de los permisos de los usuarios en Linux es crucial para desempeñarse en entornos seguros dentro de los equipos empresariales. En conclusión, los aspectos realizados en la presente práctica son los siguientes:
Como recomendación, es importante considerar el correcto uso de los permisos al momento
de asignarlos a los usuarios específicos, es necesario verificar si se asignan
correctamente para evitar acceso no autorizados o falta de algún tipo de acceso
necesario para el equipo.
Se necesita informar a los desarrolladores que deben cerrar y volver a iniciar sesión
después de ser agregados al grupo desarrolladores.
Como proceso de automatización, se puede diseñar un script que configure automáticamente
permisos, grupos y usuarios para futuros proyectos con el objetivo de agilizar estos
procedimientos.
Es factible realizar auditorías periódicas en los permisos del servidor para identificar
y corregir posibles desviaciones o configuraciones erróneas.
El manejo correcto de permisos en Linux es crítico para la seguridad, la productividad y
la colaboración en proyectos compartidos.
A través de esta práctica, los participantes no solo aprenden a manejar permisos
correctamente, sino que también desarrollan habilidades transferibles a otros sistemas y
entornos profesionales. Esto refuerza la importancia de buenas prácticas en la
administración de servidores y sistemas operativos.
Agradezco mucho la vista a este espacio, espero que la información te haya sido de ayuda
y la encuentres favorable para tu propio aprendizaje. Sientete libre de intercambiar
información a mi correo electrónico para poder charlar sobre más estrategias para asegurars
los equipos de la empresa.
¡Muchas gracias, espero verte nuevamente!
Última modificación: 19-03-2025