Cómo leer y configurar correctamente los permisos de archivos en su VPS
Cada archivo y cada carpeta de su VPS tiene un propietario, un grupo y unos permisos. Si son demasiado amplios, un sitio web o servicio hackeado puede escribir en cualquier parte. Si son demasiado estrictos, obtendrá errores como "Permission denied" o un 403 en su sitio web. Aquí puede leer cómo interpretar los permisos y configurarlos correctamente. Si tiene un plan de hosting con DirectAdmin, consulte Prohibido (403): No tiene permiso para acceder a / en este servidor.
Leer los permisos con ls -l
ls -l /var/www/example.com -rw-r--r-- 1 anna www-data 1520 index.html -rw-r----- 1 anna www-data 412 config.php drwxr-xr-x 2 anna www-data 4096 images drwxrwxr-x 2 www-data www-data 4096 uploads
El primer carácter indica el tipo: - es un archivo, d una carpeta y l un enlace simbólico. A continuación siguen tres grupos de tres caracteres: lo que puede hacer el propietario, lo que puede hacer el grupo y lo que pueden hacer todos los demás. Después aparecen el propietario (anna) y el grupo (www-data).
| Letra | En un archivo | En una carpeta |
|---|---|---|
r | Leer | Consultar los nombres de la carpeta |
w | Modificar | Crear, renombrar y eliminar archivos |
x | Ejecutar como programa | Entrar en la carpeta y abrir los archivos que contiene |
Tenga en cuenta dos cosas. Sin x en una carpeta no podrá acceder a los archivos que contiene, aunque sean legibles. Y quien tenga w en una carpeta puede eliminar archivos de ella, aunque pertenezcan a otra persona.
Permisos en formato numérico
Los permisos suelen escribirse con tres cifras: r vale 4, w 2 y x 1, sumados por grupo.
| Número | Permisos | Uso |
|---|---|---|
| 644 | rw-r--r-- | Archivo normal, por ejemplo una página web o una imagen |
| 755 | rwxr-xr-x | Carpeta, o un programa que todos pueden usar |
| 640 | rw-r----- | Configuración con una contraseña, legible para el servidor web a través del grupo |
| 600 | rw------- | Archivo secreto, como authorized_keys, una clave privada o un archivo .env |
| 700 | rwx------ | Carpeta privada, como ~/.ssh |
Cambiar los permisos y el propietario
chmod 640 /var/www/example.com/config.php chmod g+w /var/www/example.com/uploads sudo chown anna:www-data /var/www/example.com/config.php
chmod cambia los permisos, con un número o con letras (u, g, o para propietario, grupo y otros, con + o -). chown propietario:grupo cambia el propietario y el grupo; solo root puede hacerlo, así que se usa con sudo.
Para una carpeta completa, chmod -R 644 es un error habitual: todas las subcarpetas pierden su x y quedan inutilizables. Configure las carpetas y los archivos por separado con find:
sudo find /var/www/example.com -type d -exec chmod 755 {} +
sudo find /var/www/example.com -type f -exec chmod 644 {} +
El servidor web a través del grupo
En Debian y Ubuntu, nginx y PHP-FPM se ejecutan por defecto con el usuario www-data. Una organización adecuada: usted es el propietario de los archivos y el grupo es www-data. Así el servidor web puede leer a través del grupo y escribir solo en la carpeta donde realmente sea necesario, como uploads (chmod g+w o propietario www-data solo en esa carpeta). No conceda al servidor web permiso de escritura sobre sus archivos PHP.
777. Con ello, cualquiera en el servidor puede leer, modificar y ejecutar el archivo o la carpeta. Si en algún momento falla un sitio web o servicio, el intruso podrá escribir en cualquier lugar que tenga 777. El verdadero problema casi siempre es el propietario o el grupo: soluciónelo en lugar de abrirlo todo.Permisos para SSH
El servidor SSH comprueba los permisos de sus claves. Si otros pueden escribir en su carpeta .ssh o en su carpeta personal, ignorará su clave y volverá a pedirle la contraseña, sin un mensaje de error claro. Configúrelo así:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Si ha creado la carpeta como root para otro usuario, corrija también el propietario, como en Un usuario propio con sudo. En AlmaLinux y Rocky Linux, SELinux también puede rechazar un archivo que tenga los permisos correctos; con una carpeta .ssh creada manualmente, ayuda restorecon -Rv ~/.ssh.
s en vez de una x, como en /usr/bin/passwd? Es el bit setuid: el programa se ejecuta con los permisos del propietario. Algunos programas del sistema lo necesitan, pero no lo configure nunca usted mismo en un script. Un archivo setuid inesperado puede indicar una intrusión; consulte ¿Le han hackeado? Los primeros pasos.¿Quiere aprender más? Siga el curso gratuito VPS y administración de servidores Linux, lección 3.1 Usuarios, grupos y permisos de archivos.
