Ahorre 15% en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código: Skills Comenzar
Secciones
Administración Seguridad

Usuarios, Grupos y Permisos de Linux: Un Flujo de Trabajo Práctico de Incorporación

The Monday-Morning Access Request

El lunes por la mañana, un nuevo compañero de equipo se une a tu proyecto y necesita acceso al espacio de trabajo de desarrollo compartido en tu Ubuntu VPS hoy. Debería poder iniciar sesión, abrir el directorio del equipo y hacer trabajo normal sin esperar a alguien más para cada pequeña tarea. No debería obtener acceso root. También debería mantenerse fuera del área restringida release-secret.

Administrator managing a secure server environment

Ahí es donde los usuarios, grupos y permisos de Linux dejan de sentirse como tres temas de libro de texto separados y comienzan a actuar como un sistema práctico. Quizás el servidor vive en un VPS de AlexHost, quizás vive en otro lugar, pero la pregunta de acceso es la misma en todas partes: ¿cómo das acceso útil sin dar control total?

Este tutorial sigue esa única solicitud de incorporación de principio a fin, así que cada comando tiene un trabajo claro y un lugar en la historia. Si términos como usuario, grupo y permiso alguna vez se han sentido confusos por su cuenta, esta es la forma más fácil de hacer que encajen juntos.

Workflow:
user account → group membership → ownership alignment → permissions → verification

Un Modelo Mental Antes de Cualquier Comando

Antes de cualquier comando, mantén una analogía en tu cabeza: piensa en el servidor como un edificio de oficinas. Un usuario es la credencial nombrada para una persona. Un grupo es el departamento al que pertenecen. Los permisos son las reglas de puerta en salas y armarios. El acceso a Linux se vuelve mucho más fácil una vez que lo lees de esa manera en lugar de memorizar comandos aislados.

Las tres preguntas centrales son simples:

  • Un usuario responde, “¿Quién es esto?”
  • Un grupo responde, “¿A qué equipo compartido pertenecen?”
  • Los permisos responden, “¿Qué pueden hacer aquí?”

Ese es también el corazón del principio de menor privilegio: dar a alguien exactamente el acceso suficiente para hacer el trabajo, y nada más. Los permisos por sí solos nunca resuelven el problema completo, porque la regla correcta en la identidad incorrecta o el equipo incorrecto aún produce el resultado incorrecto.

Person looking up definitions in an illustrated reference book

La misma lógica aparece en cada archivo y directorio. Linux primero verifica si eres el propietario, si coincides con el grupo de la ruta, o si caes en otros — es decir, todos los demás en la máquina. Solo entonces aplica la regla relevante. Por eso la misma ruta puede comportarse de manera diferente para diferentes usuarios.

La tabla de traducción compacta a continuación es suficiente para el resto de este artículo:

Término LinuxSignificado en lenguaje simplePregunta que responde
👤 usuarioUna cuenta nombrada para una persona¿Quién es esto?
👥 grupoUna membresía de equipo compartido¿En qué equipo están?
🔑 propietarioEl usuario asignado a un archivo o directorio¿A quién se asigna primero esta ruta?
📁 grupo (en una ruta)El equipo asignado a esa ruta¿Qué equipo obtiene la regla compartida?
🌐 otrosTodos los demás en la máquina¿Qué pueden hacer todos los demás?

📝 Nota: Los comandos a continuación usan ejemplos amigables con Ubuntu, pero el modelo mental en sí se aplica en Linux en general.

A partir de ahí, el primer paso se vuelve obvio: antes de que Maya pueda compartir algo con el equipo, el sistema necesita saber que existe como su propia persona.

Paso 1: Crear la Persona en el Sistema

Una cuenta de usuario Linux no es solo una etiqueta en una lista. Le da a Maya una identidad de inicio de sesión, un directorio de inicio y un contexto de trabajo separado de todos los demás en el servidor. Esa separación es lo que hace posible la responsabilidad. Si algo cambia, puedes saber quién lo cambió. Si el acceso debe mantenerse restringido, puedes limitarlo a una cuenta real en lugar de un inicio de sesión compartido misterioso.

En Ubuntu, la forma amigable para crear esa cuenta es:

sudo adduser maya

Ubuntu te guiará a través de la configuración normal y generalmente creará /home/maya al mismo tiempo. También puedes ver useradd en scripts o documentación de nivel inferior. En sistemas Debian/Ubuntu, adduser suele ser la opción más amigable para una cuenta de usuario normal.

Creating Maya's user account with adduser

Esta es también la razón por la que las cuentas compartidas son un mal hábito. Si varias personas inician sesión como el mismo usuario, o peor aún, “simplemente usan root”, pierdes la trazabilidad inmediatamente, y cada decisión de permisos posterior se vuelve más descuidada. Una cuenta de usuario responde quién es Maya. Aún no responde qué espacio de proyecto compartido puede usar.

Paso 2: Ponerlos en el Equipo Correcto

Ahora Maya existe, pero aún no tiene relación con el espacio de trabajo compartido. Aquí es donde los grupos se vuelven útiles. Un grupo primario sigue la cuenta por defecto. Los grupos suplementarios son los equipos adicionales que adjuntas a un usuario para que el acceso compartido se escale limpiamente entre múltiples personas y múltiples proyectos.

Si tu grupo de proyecto aún no existe, créalo primero. Luego añade Maya a ese grupo en lugar de reemplazar sus pertenencias suplementarias existentes.

⚠️ Advertencia: usermod -G devteam maya sin -a puede reemplazar los grupos suplementarios existentes de Maya. La bandera -a significa “append” (añadir), y es la parte que mantiene esto seguro.

Usa los siguientes comandos para crear el grupo y verificar que Maya es parte de él:

sudo groupadd devteam
sudo usermod -aG devteam maya
id maya

Si devteam ya existe, salta la línea groupadd. En la salida de id, quieres ver devteam listado entre los grupos de Maya:

Adding Maya to devteam and verifying her group membership

Esa salida prueba que la pertenencia al equipo está ahí. Aún no prueba que Maya pueda usar el espacio de trabajo. Estar en devteam aún no hace nada si el directorio en sí es propiedad y está agrupado de una manera que ignora ese equipo.

Paso 3: Alinear la Propiedad con el Espacio de Trabajo

Este es el eslabón perdido detrás de mucha frustración de principiantes. La siguiente pregunta es sobre el espacio de trabajo en sí: ¿quién lo posee y qué grupo está adjunto a él? Hasta que eso esté alineado, la membresía correcta del equipo de Maya no tiene dónde aplicarse útilmente.

Para este tutorial, usa una ruta compartida y una ruta restringida. El área del equipo compartido será /srv/devworkspace. El área privada será /srv/release-secrets, con un archivo de ejemplo dentro. Crea ambas rutas primero:

sudo mkdir -p /srv/devworkspace /srv/release-secrets
sudo touch /srv/release-secrets/deploy-key.txt

Creating the shared workspace and restricted directory

A continuación, inspecciona cómo se ven actualmente esas rutas:

ls -ld /srv/devworkspace /srv/release-secrets
ls -l /srv/release-secrets/deploy-key.txt

Inspecting the initial ownership and permissions of both paths

El -d importa aquí porque le dice a ls que describa el directorio en sí en lugar de listar su contenido. En el listado largo, comienza con tres piezas. Primero mira la cadena de permisos a la izquierda. Luego verifica el propietario y el grupo. Si ambas rutas aún muestran root root, la nueva membresía de devteam de Maya no tiene nada útil a lo que conectarse aún.

Si solo necesitaras cambiar el grupo, chgrp devteam /srv/devworkspace haría eso. Aquí, chown owner:group es más claro porque establece el objetivo completo en una línea. El espacio de trabajo compartido debe pertenecer a root:devteam, mientras que la ruta restringida debe permanecer como root:root:

sudo chown root:devteam /srv/devworkspace
sudo chown root:root /srv/release-secrets /srv/release-secrets/deploy-key.txt

Después de ese alineamiento de propiedad, las partes importantes del listado deberían verse así:

drwxr-xr-x  root devteam  /srv/devworkspace
drwxr-xr-x  root root     /srv/release-secrets
-rw-r--r--  root root     /srv/release-secrets/deploy-key.txt

permissions  owner  group

💡 Consejo: Mantén los secretos restringidos fuera del espacio de trabajo escribible por el grupo. Eso mantiene la configuración fácil de razonar y evita casos extremos de escritura de directorio desordenados que no son útiles en un flujo de incorporación de principiantes.

En este punto, la propiedad le dice a Linux a qué área está adjunta cada ruta. El paso final es definir qué pueden hacer realmente el propietario, ese grupo y todos los demás allí.

Paso 4: Establecer Permisos que Coincidan con el Trabajo

Con la propiedad alineada, ahora puedes establecer la regla real para cada ruta: quién puede leerla, cambiarla o entrarla. Piensa en el trabajo primero, en los números segundo. No estás intentando memorizar todo el universo de permisos aquí; estás expresando una regla práctica para un espacio de trabajo compartido y un área secreta restringida.

Person presenting a rules document with a warning symbol

La pequeña matriz a continuación es la única que la mayoría de los principiantes necesitan:

PermisoEn un archivoEn un directorio
rLeer el contenido del archivoListar los nombres dentro
wCambiar el contenido del archivoCrear, renombrar o eliminar entradas dentro
xEjecutar el archivo como un programa o scriptEntrar/atravesar el directorio

La fila del directorio es la trampa. En un directorio, x no significa “ejecutar la carpeta”. Significa que puedes entrar en esa ruta o atravesarla en el camino hacia algo más profundo. Por eso un archivo puede parecer legible en teoría y aún así fallar en la práctica si no puedes cruzar la ruta del directorio que conduce a él.

Ahora aplica las reglas que coinciden con esta historia de incorporación. El espacio de trabajo del equipo debe ser utilizable por root y devteam, pero cerrado para todos los demás. El directorio secreto debe permanecer solo para root, y el archivo secreto dentro de él debe permanecer legible solo para root:

sudo chmod 770 /srv/devworkspace
sudo chmod 700 /srv/release-secrets
sudo chmod 600 /srv/release-secrets/deploy-key.txt

Esos números son más fáciles de lo que parecen al principio cuando los mantienes vinculados al trabajo. 770 en /srv/devworkspace significa que root obtiene acceso completo, y devteam obtiene el mismo acceso compartido. Todos los demás no obtienen nada allí. 700 en /srv/release-secrets significa que solo root puede entrar en ese directorio. 600 en deploy-key.txt significa que solo root puede leer o cambiar el archivo. La parte importante no es la aritmética. Es que cada modo refleja una decisión que ya tomaste sobre esta ruta.

drwxrwx---  root devteam  /srv/devworkspace
drwx------  root root     /srv/release-secrets
-rw-------  root root     /srv/release-secrets/deploy-key.txt

⚠️ Advertencia: chmod 777 no es una solución real. Generalmente significa que el diseño de propiedad o ruta es incorrecto, por lo que alguien rocía permisos completamente abiertos sobre el error en lugar de arreglar el diseño de acceso real.

Una nota avanzada, mantenida intencionalmente breve: en directorios compartidos más ocupados, los administradores a veces usan el comportamiento setgid del directorio para que los archivos recién creados hereden automáticamente el grupo del equipo. Eso es útil más adelante, pero pertenece a un artículo de seguimiento. Para este flujo de trabajo, usuarios simples, grupos, propiedad y reglas básicas de rwx son suficientes.

Paso 5: Verificar Tanto el Acceso como los Límites

La configuración es solo la mitad del trabajo. Un buen onboarding de Linux también prueba el límite. La condición de éxito no es solo “Maya puede hacer algo”. Es “Maya puede hacer el trabajo previsto y aún no puede cruzar hacia la ruta restringida”.

Inicia un contexto de inicio de sesión nuevo para Maya, luego prueba una acción permitida y una acción denegada:

su - maya
cd /srv/devworkspace
touch first-day-check.txt
ls -l /srv/devworkspace

Maya entering the shared workspace and creating a test file

Luego prueba el límite:

cd /srv/release-secrets
cat /srv/release-secrets/deploy-key.txt

La prueba del espacio de trabajo debería funcionar. Maya debería poder entrar en /srv/devworkspace y crear un archivo simple allí. La prueba del límite debería fallar con un error de permiso, y ese fallo es la señal de éxito. El principio de menor privilegio se supone que tiene límites.

💡 Consejo: Si Maya aún no puede usar /srv/devworkspace aunque los comandos se vean correctos, abre una sesión de inicio de sesión nueva y prueba de nuevo. La pertenencia a grupos suplementarios nuevos no siempre aparece de manera consistente dentro de shells más antiguos.

Esta es la forma tranquila de verificar el onboarding: confirma la ruta feliz, luego confirma el límite. Una vez que hagas ambas cosas, el flujo de trabajo deja de ser teoría y se convierte en algo en lo que puedes confiar en el próximo servidor también.

Errores Comunes Que Rompen el Modelo

La mayoría de la confusión sobre permisos en Linux no es que Linux sea misterioso. Generalmente proviene del mismo pequeño conjunto de errores de categoría. A veces el usuario está en el equipo incorrecto. A veces la propiedad de la ruta es incorrecta. A veces el problema real es una suposición incorrecta sobre qué significa x, o un atajo de permisos utilizado en lugar de un diseño adecuado.

Facts and myths shown side by side with check and rejection symbols

La tabla a continuación es una forma práctica de depurar esa confusión:

MitoCorrección
“Maya está en devteam, así que el acceso ya debería funcionar.”La pertenencia al grupo solo importa si la propiedad/grupo y los permisos de la ruta coinciden con ese modelo de equipo.
“usermod -G está bien por sí solo.”Sin -a, puede reemplazar los grupos suplementarios existentes en lugar de agregar uno más.
“La nueva pertenencia al grupo se aplica instantáneamente en todas partes.”Las sesiones existentes pueden necesitar un nuevo inicio de sesión antes de que el cambio se muestre de manera consistente.
“El directorio x es lo mismo que el archivo x.”En un directorio, x significa entrar/atravesar la ruta, no ejecutar un programa.
“chmod 777 soluciona problemas de permisos.”Oculta el problema real de propiedad o diseño de ruta al dar acceso amplio a todos.
“Si esto es molesto, simplemente da derechos de administrador.”sudo o root omite el modelo en lugar de arreglarlo, lo que anula el principio de menor privilegio.

La mayoría de los problemas de permisos provienen de omitir una capa y recurrir a chmod demasiado pronto. Una vez que sabes si el problema es identidad, pertenencia al equipo, propiedad o la regla de ruta, la solución se vuelve mucho más obvia.

El Resultado Práctico

El control de acceso en Linux se vuelve mucho más fácil cuando trabajas en orden en lugar de tratar usuarios, grupos y permisos como trivias separadas. En este ejemplo, Maya obtuvo exactamente lo que necesitaba. Tiene un login real y acceso de equipo al espacio de trabajo compartido. No tiene acceso a la ruta release-secret.

Person standing beside a completed practical checklist

Usa esta lista de verificación en cualquier VPS Ubuntu o pequeño servidor Linux alojado:

  1. Crea la identidad.
  2. Asigna el equipo compartido.
  3. Alinea la propiedad de la ruta y el grupo.
  4. Establece la regla de permiso para ese trabajo.
  5. Prueba tanto el acceso como los límites.

Esta es la lista de verificación reutilizable: identidad → equipo → regla, con la alineación de ruta en el medio para que la regla tenga un lugar correcto donde aplicarse. Si quieres profundizar más, los siguientes pasos naturales incluyen acceso SSH y sudo. Los patrones de directorio compartido y la gestión más amplia de usuarios/grupos en Linux se basan en la misma base. La lógica central no cambia; simplemente la aplicas a situaciones más específicas.