it-swarm-es.tech

¿Prácticas recomendadas con respecto a los permisos y propiedad de archivos / directorios de Joomla en sistemas Linux?

En el pasado, a menudo he tenido problemas con los permisos y la propiedad de los archivos/directorios de Joomla en los sistemas Linux.

Problemas incluidos

  • No poder transferir archivos al servidor utilizando programas como WinSCP.
  • No poder instalar extensiones, complementos, etc. de Joomla.
  • Archivos y carpetas inseguros debido a permisos peligrosos y configuraciones de propiedad.

¿Cuáles son las mejores prácticas recomendadas para configurar permisos y propiedades en Joomla en sistemas Linux?

25
TryHarder

Existen algunas causas potenciales para los problemas de permisos de archivos y carpetas en el alojamiento de Linux.

1. Permisos de archivos y carpetas

Los permisos de verificación de carpetas están configurados en 0755 y los permisos de archivos están configurados en 0644. Tenga en cuenta que los permisos de archivos y carpetas se pueden restablecer a estas configuraciones seguras estándar en todo el sitio utilizando la versión gratuita o de pago de Akeeba Admin Tools.

2. PHP Parámetros

Compruebe el parámetro upload_max_filesize en la pestaña PHP Información en la Información del sistema es suficiente. A menudo puede anular la configuración predeterminada en un entorno de alojamiento compartido a través de la configuración PHP en cPanel o un archivo personalizado php.ini.

3. Rutas incorrectas en configuration.php

Es posible que tenga rutas incorrectas especificadas para las carpetas tmp y logs. Estos se especifican en la Configuración del sistema o se pueden actualizar directamente en el archivo configuration.php si se siente cómodo editando directamente los archivos del sistema. Si no está seguro de cuál debería ser la ruta, cree y cargue un archivo whereami.php (O similar) a la carpeta raíz de su sitio web con el siguiente contenido:

<?php
  print 'Current folder is ' . dirname(__FILE__);
?>

Busque [mywebsite].com/whereami.php Para ver la ruta a la carpeta raíz.

Una vez que tenga la ruta correcta, recuerde eliminar el archivo whereami.php.

4. No apto PHP Controlador de archivo

Su alojamiento web puede configurarse con el manejador de archivos predeterminado PHP, pero idealmente debería usar suPHP o FastCGI o similar para que Joomla pueda cargar y ejecutar archivos usando permisos de archivo seguros.

Puede ver qué PHP se está utilizando en System -> System Information -> WebServer to PHP Interface.

Hay un buen artículo sobre los méritos relativos de PHP controladores de archivos en: http://boomshadow.net/tech/php-handlers

En un entorno de alojamiento compartido, generalmente no tiene acceso a cambios que PHP está habilitado, pero su compañía de alojamiento web puede cambiar esto por usted).

A veces, como solución alternativa, los permisos de archivos y carpetas se cambian a 0777, pero esto coloca a su sitio web en un estado vulnerable y, por lo general, se deben evitar los permisos de archivos 0777.

Si su empresa de alojamiento web no puede habilitar suPHP o FastCGI, la única otra opción podría ser encontrar una nueva empresa de alojamiento web.

5. Espacio en disco

Verifique que no haya excedido su cuota de espacio en disco.

LISTA DE VERIFICACIÓN DE SOLUCIÓN DE PROBLEMAS

¿Cuáles son las mejores prácticas recomendadas para configurar permisos y propiedades en Joomla en sistemas Linux?

Ver 1 y 4.

No poder transferir archivos al servidor utilizando programas como WinSCP.

Ver 1, 2, posiblemente 4 y 5.

No poder instalar extensiones, complementos, etc. de Joomla.

Ver 1, 2, 3, 4 y 5.

Archivos y carpetas inseguros debido a permisos peligrosos y configuraciones de propiedad.

Ver 1 y 4.

22
Neil Robertson

Compruebe los niveles de permiso, debe ser 644 y 755 para archivos y carpetas respectivamente.

Muchas veces los niveles de permisos están bien, incluso cuando se enfrentan algunos problemas. Significa que tendrá que verificar la propiedad y el grupo de los archivos y carpetas específicos . Normalmente, el grupo y la propiedad se pueden cambiar a www-data para Apache (utilizado en servidores web basados ​​en ubuntu).

No dude en consultar este interesante documento de Joomla basado en verificando los permisos del archivo.

12
Shyam

Una solución fácil para mí es a menudo dejar que PHP se ejecute en modo CGI (Rápido)) y establecer la propiedad del directorio de Joomla para el usuario FTP. Así podrá cargar y sobrescribir los archivos a través de FTP y Joomla también podrán escribir archivos.

Una forma de hacer esto en un entorno de alojamiento compartido (si está permitido) es agregar algo como esto a su archivo .htaccess:

AddHandler php53-cgi .php

Consulte también una descripción general acerca de modos diferentes .

8
fruppel

Los permisos deben ser 644 y 755 según lo explica Shyam.

Los problemas a los que se enfrenta probablemente estén relacionados con la forma en que está configurado su servidor. La mayoría de las veces esto sucede en hosts compartidos donde Apache se ejecuta con un usuario diferente que su cuenta FTP. Como generalmente carga Joomla usando FTP, Apache no es el propietario del archivo y, por lo tanto, no tiene los permisos necesarios para cambiarlo.

Hay un modo FTP dentro de Joomla que le permite evitar este problema. Puede habilitarlo en la configuración global de Joomla. A continuación, accederá a todos los archivos utilizando el usuario FTP en lugar del usuario Apache normal.

Sin embargo, una mejor manera es pedirle a su anfitrión que solucione el problema. Pueden configurar PHP (Apache) para que se ejecute bajo un usuario especial, que en tal caso debería ser su usuario FTP. Entonces todo funcionará bien.

7
Bakual

Los permisos deben ser 644 y 755 según lo explica Shyam.

En Joomla puedes evitar todos los problemas que mencionaste, con los siguientes métodos.

No poder transferir archivos al servidor utilizando programas como WinSCP.

  • Esto puede suceder debido al permiso de (444) como Joomla configuration.php tiene este permiso, no está permitido por defecto (por seguridad).
  • Otra situación para este mismo error es cuando transfiere un sitio o carpetas de un servidor a otro.

No poder instalar extensiones, complementos, etc. de Joomla

  • Esto sucederá debido a temp/log carpeta mal permiso. (Se requiere 755)

  • O otra razón es temp/log la ruta es incorrecta en configuration.php

Archivos y carpetas inseguros debido a permisos peligrosos y configuraciones de propiedad.

  • Esto es lo más importante que Joomla siempre recomienda no utilizar 777 para archivos y carpetas si no conoce esto .

Espero que sea de ayuda.

7
Jobin Jose

Sí, los permisos deben ser 644 y 755 como explicado por Shyam , pero los otros carteles se olvidan de mencionar que esto es si el archivo es propiedad de su servidor web, y el grupo es el grupo al que pertenece.

Por ejemplo, en FileZilla verá permisos como este:

Filename      Size   Filetype  Last Modified          Permissions   Owner/Group
somefile.txt  11KB   txt file  2014-04-23 3:43:00 AM      www-data myGroup 

Los permisos drwxr-xr-x son 755 (simplemente ignore el dr principal para que sea wxr-xr-x). Los permisos de lectura valen 4, los permisos de escritura valen 2 y los permisos de ejecución valen 1 ... así que todos suman 7, y eso es lo que tiene el propietario de este archivo. El grupo tiene permisos de lectura y ejecución pero no de escritura, por lo que tienen 5, y todos también tienen 5 ... haciendo los permisos 755.

754 serían propietarios que hayan leído, escrito, ejecutado. Grupo que tiene lectura y ejecución, y todos solo tienen permisos de lectura.

En el ejemplo anterior, puede ver que el propietario del archivo es www-data (que es el grupo de servidores web predeterminado para muchos servidores Apache) y el Grupo es el grupo myGroup, que es el Grupo (administradores) al que pertenezco.

El primer número son los permisos de los propietarios, el segundo son los permisos de los grupos y el tercer número son los permisos de todos. Obviamente, debe tener cuidado de otorgarle al servidor web los permisos que necesita ... y asegurarse de que los archivos que deben bloquearse no puedan ser escritos o ejecutados por cualquiera (el tercer número). A continuación se muestra lo que significan los números:

Suponiendo que el servidor web posee los archivos, su administrador está en el grupo y, por supuesto, todos son el tercer número.

644: los archivos con permisos establecidos en 644 son legibles por todos y solo el propietario del archivo/carpeta puede escribirlos.

755: los archivos con permisos establecidos en 755 son legibles y ejecutables por todos, pero solo el propietario del archivo/carpeta puede escribirlos.

777: los archivos con permisos establecidos en 777 son legibles, escribibles y ejecutables por todos. No use este conjunto de permisos, por razones de seguridad, en su servidor web a menos que sea absolutamente necesario, y solo temporalmente. Es un desastre esperando que suceda, especialmente si un directorio tiene esos permisos ... significa que cualquiera puede cargar archivos y ejecutarlos.

Aquí están los comandos de Linux para configurar Joomla! permisos recomendados desde la línea de comando. Permisos recomendados de archivos de Joomla

Set ownership:   Sudo chown -R www-data:myName /path/to/your/domain.com
Set Directories: Sudo find /path/to/your/domain.com -type d -exec chmod 755 {} \;
Set files :      Sudo find /path/to/your/domain.com -type f -exec chmod 644 {} \;

NOTA: muchas personas le mostrarán estos comandos sin la ruta, pero SIEMPRE prefiero usar la ruta completa, porque si olvida cambiar los directorios a la raíz Joomla! directorio de instalación y ejecutarlos sin la ruta, acaba de cambiar los permisos para cada archivo y directorio en ese directorio superior, y creó un gran desastre.

Después de ejecutar estos comandos, deberá corregir los permisos de cualquier directorio que necesite más permisos ... por ejemplo ... los usuarios que cargan imágenes, etc.

SI USTED SOLO UTILIZA JOOMLA! interfaz, y no tiene acceso de administrador o FTP al servidor, entonces USE LA PROPIEDAD y PERMISOS ANTERIORES.

DETÉNGASE AQUÍ SI USTED ES UN NOVICE ... lo siguiente es solo para personas que realmente entienden lo que hacen los permisos y la propiedad.

Sin embargo, encuentro que tener la propiedad y los permisos de esa manera es muy desagradable porque me gusta usar FileZilla y una línea de comando de sesión de Terminal la mayor parte del tiempo, y subo muchos archivos manualmente. Pero no puedo sobrescribir ningún archivo porque no los tengo y no tengo permisos para escribir. Podría hacer que FileZilla inicie sesión con la cuenta del servidor web, PERO ... Quiero que FileZilla inicie sesión con mi cuenta, para poder explorar otros directorios también, no solo los archivos a los que tiene acceso el servidor web ... SO ... Cambio la propiedad y los permisos a esto:

Filename      Size   Filetype  Last Modified          Permissions   Owner/Group
somefile.txt  11KB   txt file  2014-04-23 3:43:00 AM  drwxr-xr-x    myName www-data

Me convierto en el propietario y pongo el servidor web en el Grupo ... y cambio los permisos de los directorios a 775, y de los archivos a 664. Me hace la vida mucho más fácil ... pero no lo recomiendo para todo el mundo.

Si lo haces a mi manera, estos son los comandos:

 Set ownership:   Sudo chown -R myName:www-data /path/to/your/domain.com
 Set Directories: Sudo find /path/to/your/domain.com -type d -exec chmod 775 {} \;
 Set files :      Sudo find /path/to/your/domain.com -type f -exec chmod 664 {} \;  
5
bgies

Las otras respuestas proporcionan una buena explicación de lo que se debe hacer, solo quiero agregar un script para corregir los permisos si ya cargó un componente y no puede acceder a los archivos con ftp.

En este caso, subiría este archivo como fix.php al servidor FTP y ábralo en el navegador: http://example.com/fix.php

<?php
file_fix_directory(dirname(__FILE__));

function file_fix_directory($dir, $nomask = array('.', '..')) {
  if (is_dir($dir)) {
     // Try to make each directory world writable.
     if (@chmod($dir, 0777)) {
       echo "<p>Made writable: " . $dir . "</p>";
     }
  }
  if (is_dir($dir) && $handle = opendir($dir)) {
    while (false !== ($file = readdir($handle))) {
      if (!in_array($file, $nomask) && $file[0] != '.') {
        if (is_dir("$dir/$file")) {
          // Recurse into subdirectories
          file_fix_directory("$dir/$file", $nomask);
        }
        else {
          $filename = "$dir/$file";
            // Try to make each file world writable.
            if (@chmod($filename, 0666)) {
              echo "<p>Made writable: " . $filename . "</p>";
            }
        }
      }
    }

    closedir($handle);
  }

}

Este script establece todos los permisos del archivo en 666 y todos los directorios en 777. World writeable es no el mejor conjunto de permisos para un Host compartido, pero podrá acceder a sus archivos nuevamente y luego puede configurarlo a los valores correctos con FTP.

4
Harald Leithner

Tarde a la fiesta. Vine aquí buscando en otros lugares una guía definitiva sobre qué carpetas deben ser grabables para Joomla.

Lo siento amigos para ser el heraldo de las malas noticias.

El consejo de usar los permisos 755 para todos los directorios y 644 para todas las carpetas es irresponsable como mínimo.

Hacer que el propietario de todas sus carpetas y archivos se pueda escribir está bien siempre que el propietario no sea el servidor web (Apache et al).

Sé que esta es una práctica recomendada común, pero puedo asegurarle que no es una buena práctica. La última pieza de software que desea dar la capacidad de escribir en carpetas es el servidor web en sí. Es el servidor web que utilizan los piratas informáticos para aprovechar ese exploit que aún no ha sido parcheado (o incluso encontrado).

¿Crees que .htaccess salvará a tu Kevin? Olvídalo porque permitiste el acceso de escritura al servidor web, ¡nuestros queridos amigos hackers pueden crear sus propios archivos .htaccess dándoles los permisos que quieran! como Oh, no sé, Umm hace que los archivos .jpg sean ejecutables por el servidor. Y pensaste que proteger contra la ejecución de .php iba a cubrir tu A.

Pero asegúrese de que solo las carpetas que requieren acceso de escritura realmente lo tengan. 755 y 644 para las siguientes carpetas.

public_html/images
public_html/cache
public_html/tmp

Y asegúrese de desactivar los archivos .htaccess con AllowOveride none para todas las carpetas grabables (como las anteriores)

Para aquellos de ustedes en el alojamiento compartido, buena suerte, ya que este es un elemento de configuración que no pueden controlar.

No piense que hacer que el archivo .htaccess sea de solo lectura ayudará. Si nuestros amigos piratas informáticos pueden crear una nueva carpeta (ellos pueden), entonces pueden crear su propio .htaccess.

Para aquellos de ustedes que ejecutan hosting compartido para todo lo que es sagrado, obtengan una pista sobre la seguridad.

Si no comprende la seguridad, salga del negocio de alojamiento que está haciendo difícil para el resto de nosotros.

Ahora, de vuelta a mi búsqueda de la guía definitiva sobre las carpetas que necesitan acceso de escritura ...

1
DeveloperChris