Cambiar permisos por SSH en Linux con bash: Guía completa con chmod y chown
Cuando migrás, copiás o instalás un CMS como Joomla, PrestaShop o WordPress en un servidor Linux vía SSH, uno de los problemas más comunes es que los permisos de archivos y carpetas quedan mal configurados. Esto puede causar errores 403, fallos en la escritura de archivos, problemas con la caché o incluso vulnerabilidades de seguridad.
En esta guía vas a encontrar los comandos bash exactos para corregir permisos de forma recursiva, cambiar el propietario de archivos y configurar correctamente un entorno de servidor web.
¿Qué son los permisos en Linux y por qué importan?
En Linux, cada archivo y carpeta tiene permisos asignados para tres tipos de usuarios: el propietario, el grupo y otros. Estos permisos definen quién puede leer, escribir o ejecutar cada recurso.
Los valores más usados en servidores web son:
- 755 para carpetas: el propietario puede leer, escribir y ejecutar; el resto solo leer y ejecutar.
- 644 para archivos: el propietario puede leer y escribir; el resto solo leer.
Usar permisos más permisivos como 777 es un riesgo de seguridad que debe evitarse en producción.
Cuándo necesitás cambiar permisos
Los casos más comunes son:
- Después de copiar archivos de Joomla, PrestaShop o WordPress vía SSH o FTP.
- Al restaurar un backup desde otro servidor.
- Cuando el servidor web (Apache o Nginx) no puede escribir en carpetas de caché o logs.
- Al instalar un CMS por primera vez en un VPS.
- Después de clonar un repositorio Git en producción.
Paso 1: Cambiar permisos recursivamente solo a directorios (755)
Este comando bash busca todos los directorios desde la ubicación actual y les aplica el permiso 755:
find . -type d -exec chmod 0755 {} \;
El punto . representa el directorio actual. Podés reemplazarlo por una ruta absoluta, por ejemplo:
find /home/usuario/public_html -type d -exec chmod 0755 {} \;
Paso 2: Cambiar permisos recursivamente solo a archivos (644)
Este comando bash aplica el permiso 644 a todos los archivos del directorio actual y subdirectorios:
find . -type f -exec chmod 0644 {} \;
Para una ruta específica:
find /home/usuario/public_html -type f -exec chmod 0644 {} \;
Paso 3: Cambiar el propietario con chown
Si los archivos quedaron con un propietario incorrecto (por ejemplo, root en lugar del usuario del servidor web), el CMS no va a poder escribir. Para corregirlo usás chown desde bash:
chown -R www-data:www-data /home/usuario/public_html
En servidores con Apache, el usuario suele ser www-data. En cPanel o Plesk puede variar según la configuración. Podés verificarlo ejecutando en bash:
ps aux | grep apache
O para Nginx:
ps aux | grep nginx
Permisos recomendados para Joomla, PrestaShop y WordPress
Cada CMS tiene sus propias recomendaciones:
- Joomla: carpetas en 755, archivos en 644. La carpeta
tmpycachenecesitan ser escribibles por el servidor web. - PrestaShop: similar a Joomla. Carpetas como
var/cache,imgyuploadrequieren escritura para el usuario web. - WordPress: carpetas en 755, archivos en 644. La carpeta
wp-content/uploadsdebe ser escribible.
Errores comunes y cómo resolverlos
- Error 403 Forbidden: la carpeta no tiene permiso de lectura o ejecución para "otros". Revisá que los directorios tengan al menos 755.
- No puede escribir en caché: el usuario del servidor web no es el propietario. Usá
chownpara corregirlo. - Permisos 777 en producción: es inseguro. Siempre usá 755/644 y ajustá el propietario con
chown.
¿Necesitás ayuda con tu servidor o tu sitio web?
Si llegaste hasta acá probablemente estés administrando un servidor Linux y gestionando un Joomla, PrestaShop o WordPress. Eso tiene su complejidad, y a veces una mala configuración de permisos o del entorno puede tirar abajo un sitio en producción.
Soy Alejo Sotelo, desarrollador web con más de 19 años trabajando con Joomla y más de 11 con PrestaShop. Ayudo a empresas y proyectos a mantener sus sitios seguros, rápidos y funcionando correctamente, incluyendo la administración de servidores VPS.
¿Qué puedo hacer por vos?
- Migración y configuración de sitios en servidores VPS
- Resolución de errores en Joomla, PrestaShop y WordPress
- Mantenimiento mensual y monitoreo del servidor
- Desarrollo de extensiones y módulos a medida