Uso del comando Chmod y comando Chown para la gestión de servidores

15min

Los comandos chmod y chown son dos de los principales que debemos de conocer para el trabajo con los servidores Linux que administremos, ya se trate de un VPS, un Servidor Cloud o un Servidor Dedicado. Sirven para gestionar permisos y propiedad de los archivos de los discos del servidor, algo muy importante de cara al buen funcionamiento de las aplicaciones desplegadas y, por supuesto, para la seguridad.

Aunque sean comandos independientes, los vemos juntos porque los problemas que solucionan están muy relacionados y debemos tener presentes algunas consideraciones para no equivocarnos a la hora de escoger el que realmente se debería usar, algo que explicaremos a continuación.

Índice

¿Qué es el comando Chmod?

El comando chmod (change mode) sirve para gestionar los permisos de los archivos o directorios del sistema. Cuando usamos este comando debemos tener presentes los tres niveles de gestión de permisos que existen:

  • Lectura (r)
  • Escritura (w)
  • Ejecución (x)

Además, tener que tener en cuenta a los tres tipos de usuarios a los que podemos asignar permisos de manera independiente:

  • Propietario (Owner): El dueño del archivo (o directorio)
  • Grupo (Group): El grupo al que pertenece
  • Otros (Others): Todos los usuarios en general

Sintaxis del comando chmod

Aclarados estos puntos, podremos entender la sintaxis del comando chmod:

chmod [opciones] permisos archivo/directorio/s

Los permisos se pueden indicar de dos maneras, por medio de una sintaxis en números octales (base 8) o por medio de caracteres. ¿Y cómo funciona la base octal? Puede resultar un poco más compleja, pero resulta más abreviada y universal. En base octal, los permisos se expresan con tres dígitos (del 0 al 7).

  • El primer dígito corresponde a los permisos del usuario
  • El segundo dígito a los del grupo
  • El tercer dígito a los del resto de usuarios

Por ejemplo, posibles valores de permisos podrían ser 000, 644, 755, 777, etc.

Para entender lo que cada opción significa, debemos saber que los números octales tienen su correspondencia con números binarios (ceros y unos). Un cero binario significa que no se tiene permiso y un uno binario que sí se tiene.

La tabla de transformación de octal a binario sería la siguiente:

Número Binario Lectura (r) Escritura (w) Ejecución (x)
0 000 No No No
1 001 No No
2 010 No No
3 011 No
4 100 No No
5 101 No
6 110 No
7 111
  • Así, 0 significa que no hay ningún permiso y 7 que los tiene todos.
  • 000 significa que nadie tiene permiso para hacer nada con el fichero.
  • 777 significa que todo el mundo tiene permisos para hacer cualquier cosa.
  • 700 significa que existen permisos totales para el dueño del archivo, pero no para el resto de los usuarios.

Un ejemplo completo de comando sería el siguiente:

chmod 764 archivo.txt

Esto indica que:

  • El usuario dueño tendrá permisos totales sobre el fichero archivo.txt
  • El grupo tiene permiso de lectura y escritura (pero no de ejecución)
  • El resto de usuarios sólo tienen permiso de lectura

Como modificadores u opciones del comando encontramos una muy útil, que sirve para gestionar los permisos de manera recursiva, en todas las carpetas y subcarpetas de un directorio.

chmod -R 755 mi_carpeta

¿Para qué sirve el comando chmod?

El comando chmod (change mode) en sistemas Unix y Linux permite modificar los permisos de archivos y directorios. Es esencial para gestionar la seguridad y el acceso a los recursos del sistema, asegurando que solo los usuarios adecuados puedan leer, escribir o ejecutar determinados archivos.

Asignación de permisos de lectura, escritura y ejecución con Chmod

En Linux, los permisos se dividen en tres tipos:

  • Lectura (r – read): Permite ver el contenido del archivo o el listado de directorios.
  • Escritura (w – write): Permite modificar el archivo o crear/eliminar archivos dentro de un directorio.
  • Ejecución (x – execute): Permite ejecutar archivos como programas o scripts.

Existen dos formas de asignar permisos con chmod:

  1. Modo simbólico:
    chmod u+rwx archivo.txt # Otorga permisos de lectura, escritura y ejecución al usuario chmod g+rw archivo.txt # Permite lectura y escritura al grupo chmod o-r archivo.txt # Quita el permiso de lectura a otros
  2. Modo numérico:
    chmod 755 script.sh # Usuario: lectura, escritura, ejecución; Grupo y otros: lectura, ejecución chmod 644 documento.txt # Usuario: lectura y escritura; Grupo y otros: solo lectura

Cómo usar Chmod para mejorar la seguridad de archivos y directorios de tu web

Para evitar vulnerabilidades en un servidor web, sigue estas recomendaciones:

  • Archivos públicos:
    chmod 644 index.html # Todos pueden leer, pero solo el propietario puede escribir
  • Directorios:
    chmod 755 /var/www/html # Permite lectura y ejecución para todos, pero solo el dueño puede modificar
  • Archivos sensibles (configuraciones, credenciales, etc.):
    chmod 600 config.php # Solo el propietario puede leer y escribir

Diferencias entre permisos para usuarios, grupos y otros en Chmod

Cada archivo y directorio en Linux tiene tres niveles de permisos:

  1. Usuario (u – owner): El dueño del archivo.
  2. Grupo (g – group): Usuarios que pertenecen al mismo grupo que el propietario.
  3. Otros (o – others): Todos los demás usuarios del sistema.

Para verificar los permisos, usa:

ls -l archivo.txt -rw-r–r– 1 usuario grupo 1234 Feb 1 12:34 archivo.txt

Aquí, el propietario puede leer y escribir, mientras que el grupo y otros solo pueden leer.

Configuración de permisos en servidores web con Chmod

Para evitar errores de acceso o problemas de seguridad en servidores como Apache o Nginx, usa los siguientes permisos:

  • Archivos estáticos (HTML, CSS, JS, imágenes): 644
  • Directorios web: 755
  • Archivos de configuración: 600 o 640
  • Archivos ejecutables (scripts, cgi, etc.): 700

Para aplicar estos permisos de forma masiva:

chmod -R 755 /var/www/html find /var/www/html –type f –exec chmod 644 {} \; find /var/www/html –type d –exec chmod 755 {} \;

Solución de errores comunes de permisos con Chmod en VPS Linux

Al administrar un VPS, es común encontrar errores de permisos. Algunas soluciones incluyen:

  1. Error «403 Forbidden» en Apache/Nginx:
    • Asegúrate de que los archivos tengan permiso 644 y los directorios 755.
    • Verifica que el usuario del servidor web (www-data, apache, nginx) tenga acceso.
    sudo chown -R www-data:www-data /var/www/html
  2. Error «Permission denied» al ejecutar scripts:
    • Asegura permisos de ejecución con:
    chmod +x script.sh
  3. Problema con claves SSH en VPS:
    • La clave privada debe tener permisos 600:
    chmod 600 ~/.ssh/id_rsa

Con estas prácticas y el uso correcto de chmod, mejorarás la seguridad y funcionalidad de tu sistema Linux.

¿Qué es el comando Chown?

El comando chown (change owner) sirve para indicar quién es el dueño y el grupo de un archivo. Su uso es mucho más sencillo de chmod. Vamos a verlo con un ejemplo directamente.

chown usuariox:grupoy archivo.txt

Como se aprecia, se puede especificar el usuario (en este caso usuariox) y el grupo (grupoy), separados por el carácter. A continuación, se indica el nombre del archivo o directorio afectados por esta nueva configuración.

Igual que chmod, se puede especificar que la operación se realice de manera recursiva.

chown -R www-data:www-data html

Así, se especifica que la carpeta de nombre html y todo su contenido pertenecerán al usuario y grupo www-data.

¿Para qué sirve el comando Chown?

El comando chown (change owner) en sistemas Linux y Unix permite cambiar el propietario y el grupo de archivos o directorios. Es fundamental para administrar la seguridad y los permisos en servidores, asegurando que los archivos sean accesibles solo por los usuarios autorizados.

Cómo cambiar el propietario de un archivo o directorio de tu web con Chown

En un servidor web, es común que los archivos sean propiedad del usuario que los creó, lo que puede causar problemas de permisos. Con chown, puedes asignar la propiedad correcta a los archivos para garantizar su funcionamiento adecuado.

Ejemplo de cambio de propietario:

chown usuario archivo.txt

Este comando asigna el archivo archivo.txt al usuario usuario.

Si también deseas cambiar el grupo propietario:

chown usuario:grupo archivo.txt

Para aplicar el cambio a todos los archivos dentro de un directorio:

chown -R usuario:grupo /ruta/del/directorio

Si trabajas con un servidor web (Apache o Nginx), es posible que necesites asignar los archivos al usuario del servidor, por ejemplo:

chown -R www-data:www-data /var/www/html

Gestión de permisos de usuario y grupo con Chown

En Linux, cada archivo tiene un propietario y un grupo asignado. chown permite gestionar estos permisos de manera eficiente:

  • Usuario: Es el propietario del archivo y tiene control total sobre él.
  • Grupo: Un conjunto de usuarios que pueden compartir permisos sobre un archivo o directorio. Ver los permisos de un archivo con ls -l:
ls -l archivo.txt
-rw-r--r-- 1 usuario grupo 1234 Feb 1 12:34 archivo.txt

Aquí, usuario es el propietario y grupo es el grupo asignado. Cambiar solo el grupo sin modificar el propietario:

chown :nuevo_grupo archivo.txt

Esto es útil cuando varios usuarios necesitan acceso a los mismos archivos sin modificar la propiedad del usuario principal.

Uso de Chown para administrar archivos en servidores VPS Linux

En un servidor VPS, el uso adecuado de chown es clave para evitar problemas de acceso y seguridad. Algunos casos comunes incluyen:

  1. Errores de permisos en archivos web. Si tu página web muestra errores de permisos, asegúrate de que los archivos sean propiedad del usuario correcto:
    chown -R www-data:www-data /var/www/html
  2. Problemas con claves SSH. Para evitar problemas de seguridad, la clave privada debe pertenecer a tu usuario y no ser accesible por otros:
    chown usuario ~/.ssh/id_rsa
    chmod 600 ~/.ssh/id_rsa
  3. Archivos creados por root. Si ejecutaste un comando con sudo y ahora tu usuario no puede editar los archivos, cambia la propiedad:
sudo chown -R tu_usuario:tu_grupo /ruta/del/directorio

Diferencias clave entre Chmod y Chown

chmod y chown son dos comandos esenciales en la administración de sistemas Linux y Unix, utilizados para gestionar permisos y propiedad de archivos y directorios. Aunque ambos afectan el acceso a los archivos, tienen funciones distintas:

  • chmod (change mode): Modifica los permisos de lectura, escritura y ejecución de archivos y directorios.
  • chown (change owner): Cambia el propietario y el grupo asignado a un archivo o directorio. Ejemplo de uso:

Ejemplo de uso:

  • Cambiar permisos de un archivo con chmod:
chmod 644 archivo.txt
  • Cambiar el propietario de un archivo con chwon:
chown usuario archivo.txt

Cuándo utilizar cada comando en la gestión de servidores

Para administrar correctamente los archivos y directorios de un servidor, es importante saber cuándo usar chmod y cuándo usar chown:

Situación Comando adecuado Ejemplo
Un archivo necesita ser ejecutable chmod chmod +x script.sh
Un usuario debe ser propietario de un archivo chown chown usuario archivo.txt
Un directorio debe permitir acceso de grupo chmod chmod 770 /carpeta
Un archivo debe pertenecer a un grupo específico chown chown usuario:grupo archivo.txt

Seguridad y mejores prácticas con Chmod y Chown

El uso incorrecto de chmod y chown puede generar vulnerabilidades en un servidor. Algunas buenas prácticas incluyen:

  • Evitar permisos demasiado abiertos:
chmod 777 archivo.txt # Inseguro: otorga acceso total a todos los usuarios
chmod 644 archivo.txt # Seguro: el propietario puede escribir, los demás solo leer
  • No ejecutar chown sin precaución en todo el sistema:
chown -R usuario:grupo / # Puede generar problemas críticos
  • Proteger archivos sensibles como claves SSH:
chmod 600 ~/.ssh/id_rsa
chown usuario ~/.ssh/id_rsa

Impacto de los permisos en la administración de servidores

Los permisos y la propiedad de los archivos afectan directamente la seguridad y estabilidad de un servidor. Algunos problemas comunes incluyen:

    • Errores «403 Forbidden» en sitios web:
    • Solución: Verificar que los archivos tienen permisos 644 y los directorios 755:
chmod -R 755 /var/www/html
  • Problemas con la ejecución de scripts:
  • Solución: Asegurar que el archivo tiene permiso de ejecución:
chmod +x script.sh
  • Acceso denegado a archivos después de usar sudo:
    • Solución: Restaurar la propiedad del archivo:
sudo chown usuario:grupo archivo.txt

Conocer y aplicar correctamente chmod y chown es clave para administrar de manera segura y eficiente cualquier servidor Linux.

Recomendaciones de uso para los comandos chmod y chown

Como habíamos comentado, estos comandos son muy relevantes en lo que respecta a la seguridad de los ficheros y carpetas del servidor. Por tanto, queremos finalizar con unos consejos importantes sobre la seguridad.

  • Nunca debemos asignar permisos 777. Aunque a veces pueda parecer que una aplicación web no funciona si no le asignamos esos permisos a una carpeta donde se desea escribir información, el nivel 777 es muy peligroso, ya que estamos asignando permisos totales a esos archivos o carpetas. Generalmente, hay que buscar soluciones de permisos más restrictivas y, en cambio, modificar los propietarios o el grupo de los archivos o carpetas.
  • Generalmente, trabajamos con 644 para ficheros y 755 para directorios. Esos son los permisos más estándar para los archivos y carpetas del servidor. Esta opción genérica no tiene por qué ser la necesaria para todos los proyectos, pero siempre es una solución bastante apropiada.

Nuevamente, si nuestra aplicación no funciona bien con este nivel de permisos, conviene estudiar quién se encuentra asignado como propietario y grupo de los archivos y carpetas. Un problema habitual es que el propietario sea root. Esto podría suponer que, cuando desde un lenguaje de programación se intenta acceder al archivo para su escritura, nos arroje un error de acceso. La solución adecuada nunca sería asignar 777 para que la aplicación funcione, sino encontrar el usuario y grupo adecuados para el contenido de la carpeta.

Cómo usar Chmod y Chown para administrar permisos en un servidor VPS

Cuando administramos un servidor VPS, es esencial configurar correctamente los permisos y propietarios de los archivos y directorios. Esto garantiza tanto la seguridad como el correcto funcionamiento de las aplicaciones alojadas en el servidor.

Configuración de permisos en un VPS Linux con Chmod

El comando chmod se usa para modificar los permisos de archivos y directorios en sistemas Linux. La sintaxis básica es:

chmod [opciones] [permisos] [archivo/directorio]

Existen dos formas de establecer los permisos:

Notación octal: Usa números para definir los permisos (ej. chmod 755 archivo.txt). Notación simbólica: Usa letras y signos para agregar o quitar permisos (ej. chmod u+rwx,g+rx,o+r archivo.txt). Los valores octales más comunes son:

  • 777: Permisos completos (no recomendado por razones de seguridad).
  • 755: Permite ejecución para el propietario y lectura/ejecución para otros.
  • 644: Solo el propietario puede escribir, pero todos pueden leer.
  • 600: Solo el propietario puede leer y escribir.

Asignación de propietarios en un servidor VPS con Chown

El comando chown se usa para cambiar el propietario y grupo de archivos o directorios. Su sintaxis básica es:

chown [usuario:grupo] archivo/directorio

Ejemplos:

  • Cambiar el propietario de un archivo: chown usuario archivo.txt
  • Cambiar propietario y grupo: chown usuario:grupo archivo.txt
  • Aplicar cambios recursivamente: chown -R usuario:grupo directorio/

Mejores prácticas para la seguridad de archivos en VPS

Para mantener seguro un servidor VPS, considera lo siguiente:

  • Evitar permisos 777 en archivos críticos.
  • Establecer permisos correctos para archivos y directorios web (644 para archivos, 755 para directorios).
  • Restringir acceso a configuraciones sensibles (600 en archivos de configuración como .env).
  • Ejecutar procesos con usuarios específicos en lugar de root.

Configuración de permisos en hosting web con Chmod y Chown

Al configurar un sitio web en un hosting compartido o VPS, los permisos inadecuados pueden provocar errores de acceso o vulnerabilidades de seguridad.

Cómo evitar errores de permisos en hosting compartido

En entornos de hosting compartido:

  • Evitar permisos excesivos: No usar 777 en directorios accesibles públicamente.
  • Usar chown correctamente: Asegurar que los archivos sean propiedad del usuario correcto.
  • Verificar los permisos recomendados del proveedor de hosting.

Configuración de permisos para archivos y directorios web

Para servidores web como Apache o Nginx, los permisos recomendados suelen ser:

  • Archivos PHP y HTML: 644
  • Directorios: 755
  • Archivos de configuración sensibles: 600
  • Carpeta uploads/ de WordPress o similares: 755

Cómo solucionar errores de acceso en WordPress con Chmod y Chown

Si WordPress muestra errores de permisos:

Asegurar que el propietario sea el usuario web (ej. www-data en Apache):

chown -R www-data:www-data /var/www/html/

Establecer permisos correctos:

find /var/www/html/ -type d -exec chmod 755 {} \\;
find /var/www/html/ -type f -exec chmod 644 {} \\;

Revisar el archivo .htaccess y configuraciones adicionales.

Uso de Chmod y Chown en servidores VPS con múltiples dominios

En servidores con múltiples dominios:

  • Usar usuarios separados para cada dominio para evitar accesos no autorizados.
  • Establecer grupos adecuados para colaboración sin comprometer seguridad.
  • Configurar permisos personalizados para cada sitio web, evitando permisos globales excesivos.

Configurar correctamente chmod y chown en un servidor VPS es fundamental para la seguridad y estabilidad del sistema. Siguiendo estas recomendaciones, se minimizan riesgos y se garantiza un funcionamiento óptimo del servidor y sus aplicaciones.

Conclusiones para comandos chmod y chown

La gestión de servidores es una tarea que requiere precisión y control, y los comandos chmod y chown son herramientas fundamentales para lograrlo. Al comprender cómo utilizar estos comandos y cuándo aplicarlos, puedes garantizar un servidor seguro y bien organizado.

Además, su importancia se extiende hasta el mundo de los dominios y el hosting web, donde una configuración adecuada de permisos y propietarios es esencial para asegurar el funcionamiento y la seguridad para crear una página web. La administración de servidores y de sitios web van de la mano, y una gestión adecuada de estos comandos es esencial para crear un entorno seguro y eficiente.

Manuel León

Productos relacionados: