Pratiche consigliate per quanto riguarda le autorizzazioni di file / directory di Joomla e la proprietà sui sistemi Linux?


26

In passato ho spesso avuto problemi con le autorizzazioni e la proprietà dei file / directory Joomla su sistemi Linux.

Problemi inclusi

  • Non essere in grado di trasferire file sul server utilizzando programmi come WinSCP.
  • Non essere in grado di installare estensioni, plug-in di Joomla ecc.
  • File e cartelle non sicuri a causa di autorizzazioni e impostazioni di proprietà pericolose.

Quali sono le migliori pratiche consigliate per impostare permessi e proprietà in Joomla su sistemi Linux?

Risposte:


22

Esistono alcune potenziali cause di problemi di autorizzazione di file e cartelle sull'hosting Linux.

1. Autorizzazioni per file e cartelle

Verifica che le autorizzazioni per le cartelle siano impostate su 0755 e le autorizzazioni per i file siano impostate su 0644. Nota che le autorizzazioni per file e cartelle possono essere ripristinate su queste impostazioni di sicurezza standard su una base ampia del sito utilizzando la versione gratuita o a pagamento di Akeeba Admin Tools.

2. Parametri PHP

Controlla che il parametro upload_max_filesize nella scheda Informazioni PHP in Informazioni di sistema sia sufficiente. Spesso puoi sovrascrivere le impostazioni predefinite in un ambiente di hosting condiviso tramite le impostazioni PHP in cPanel o un php.inifile personalizzato .

3. Percorsi errati in configuration.php

È possibile che siano stati specificati percorsi errati per le cartelle tmp e logs. Questi sono specificati nella Configurazione di sistema o possono essere aggiornati direttamente nel file configuration.php se si ha dimestichezza con la modifica diretta dei file di sistema. Se non sei sicuro di quale debba essere il percorso, crea e carica un file whereami.php(o simile) nella cartella principale del tuo sito Web con il seguente contenuto:

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

Sfoglia per [mywebsite].com/whereami.phpvedere il percorso della cartella principale.

Una volta che hai il percorso corretto, ricorda di eliminare il whereami.phpfile.

4. Gestore di file PHP non idoneo

Il tuo web hosting può essere configurato con il gestore di file PHP predefinito, ma idealmente dovrebbe usare suPHP o FastCGI o simili in modo che Joomla possa caricare ed eseguire i file usando le autorizzazioni dei file sicuri.

Puoi vedere a quale gestore PHP viene utilizzato System -> System Information -> WebServer to PHP Interface.

C'è un buon articolo sui meriti relativi dei gestori di file PHP su: http://boomshadow.net/tech/php-handlers

In un ambiente di hosting condiviso di solito non hai accesso per modificare il gestore di file PHP abilitato, ma la tua società di web hosting potrebbe essere in grado di cambiarlo per te.

A volte, come soluzione, le autorizzazioni per file e cartelle vengono modificate in 0777, ma ciò pone il tuo sito Web in uno stato vulnerabile e le autorizzazioni per file 0777 dovrebbero essere generalmente evitate.

Se la tua società di web hosting non può abilitare suPHP o FastCGI, l'unica altra opzione potrebbe essere quella di trovare una nuova società di web hosting.

5. Spazio su disco

Verifica di non aver superato la quota di spazio su disco.

ELENCO DI CONTROLLO PER LA RISOLUZIONE DEI PROBLEMI

Quali sono le migliori pratiche consigliate per impostare permessi e proprietà in Joomla su sistemi Linux?

Vedi 1 e 4.

Non essere in grado di trasferire file sul server utilizzando programmi come WinSCP.

Vedi 1, 2, possibilmente 4 e 5.

Non essere in grado di installare estensioni, plug-in di Joomla ecc.

Vedi 1, 2, 3, 4 e 5.

File e cartelle non sicuri a causa di autorizzazioni e impostazioni di proprietà pericolose.

Vedi 1 e 4.


1
Nel mio caso, penso che i gestori di PHP siano stati una parte importante del problema.
Prova Harder

1
+1 La tua risposta in realtà non ha risolto il mio problema, ma mi sono ispirato a controllare le impostazioni PHP dei miei server - Modalità provvisoria e si è scoperto che era ON - abilitato. Pertanto disattivandolo è stata la soluzione. Quindi, per i futuri lettori se nessuna delle precedenti è stata risolta, controlla anche la tua modalità provvisoria :)
Mohammed Joraid,

12

Controlla i livelli di autorizzazione, dovrebbero essere rispettivamente 644 e 755 per file e cartelle.

Molte volte i livelli di autorizzazione vanno bene, anche quando si affrontano alcuni problemi. Significa che dovrai controllare la proprietà e il gruppo di file e cartelle specifici . Normalmente il gruppo e la proprietà possono essere cambiati in www-data per apache (usato nei server web basati su Ubuntu).

Sentiti libero di consultare questo interessante documento Joomla basato sulla verifica dei permessi dei file.


Joomla appartiene solitamente al gruppo www-data?
Prova Harder il

1
Insieme alla risposta di Shyam, utilizziamo il modulo Apache SuPHP . Abbiamo scoperto che quando è stata installata un'estensione, non è stato possibile modificare tali file su FTP e viceversa (problema di proprietà dei file). SuPHP ha risolto questo problema assicurandoci che gli script PHP vengano eseguiti con le autorizzazioni dei rispettivi proprietari.
Zachary Draper,

1
il processo apache viene eseguito in "www-data" un gruppo unix. Non è solo Joomla, tutte le applicazioni basate su Apache.
Shyam,

È possibile sviluppare ed eseguire uno script di shell per correggere automaticamente tutte le autorizzazioni dei file?
NivF007,

1
Sì. gist.github.com/ssv445/11204300 È possibile eseguire lo script in cron.
Shyam,

8

Una soluzione semplice per me è quella di consentire a PHP di funzionare in modalità (Fast-) CGI e di impostare la proprietà della directory Joomla per l'utente FTP. Quindi sarai in grado di caricare e sovrascrivere i file via FTP e Joomla sarà anche in grado di scrivere file.

Un modo per farlo su un ambiente di hosting condiviso (se consentito) è aggiungere qualcosa di simile al tuo file .htaccess:

AddHandler php53-cgi .php

Vedi anche una panoramica delle diverse modalità .


7

Le autorizzazioni dovrebbero essere 644 e 755 come spiegato da Shyam.

In Joomla puoi evitare tutti i problemi che hai citato, con i seguenti metodi.

Non essere in grado di trasferire file sul server utilizzando programmi come WinSCP.

  • Questo può accadere a causa del permesso di (444) come Joomla configuration.phpha questo permesso che non consente di default (per sicurezza).
  • Un'altra situazione per questo stesso errore è quando si trasferiscono un sito o cartelle da un server a un altro.

Non essere in grado di installare estensioni, plug-in di Joomla ecc.

  • Ciò accadrà a causa della temp/logcattiva autorizzazione della cartella (è richiesto 755)

  • O un'altra ragione per cui il temp/logpercorso è sbagliatoconfiguration.php

File e cartelle non sicuri a causa di autorizzazioni e impostazioni di proprietà pericolose.

  • Questo è molto importante. Joomla consiglia sempre di non utilizzare 777 per file e cartelle se non si è a conoscenza di ciò .

Spero che sia d'aiuto ..


7

Le autorizzazioni dovrebbero essere 644 e 755 come spiegato da Shyam.

I problemi che stai affrontando sono probabilmente legati al modo in cui il tuo server è configurato. Il più delle volte questo accade su host condivisi in cui Apache viene eseguito con un utente diverso rispetto al tuo account FTP. Dato che di solito carichi Joomla tramite FTP, Apache non è il proprietario del file e quindi non dispone delle autorizzazioni necessarie per modificarlo.

C'è una modalità FTP in Joomla che ti permette di aggirare questo problema. Puoi abilitarlo nella configurazione globale di Joomla. Quindi eseguirà l'accesso a tutti i file utilizzando l'utente FTP anziché l'utente Apache normale.

Un modo migliore tuttavia è chiedere al tuo host di risolvere il problema. Possono configurare PHP (Apache) per l'esecuzione con un utente speciale, che in tal caso dovrebbe essere il tuo utente FTP. Quindi tutto funzionerà bene.


L'utente / gruppo è la risposta, come hai detto che avere l'utente speciale per PHP risolve questo specialmente se coincide con l'utente FTP.
jackJoe,

5

Sì, le autorizzazioni dovrebbero essere 644 e 755, come spiegato da Shyam , ma gli altri poster dimenticano di menzionare che questo è se il file è di proprietà del tuo server web e il gruppo è il gruppo a cui appartieni.

Ad esempio, in FileZilla vedrai le autorizzazioni in questo modo:

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

Le autorizzazioni drwxr-xr-x sono 755 (basta ignorare il dr principale quindi è wxr-xr-x). I permessi di lettura valgono 4, i permessi di scrittura valgono 2 e i permessi di esecuzione valgono 1 .. quindi farli aggiungere fino a 7, ed è quello che ha il proprietario di questo file. Il gruppo ha letto ed eseguito le autorizzazioni ma non le scrive, quindi ne hanno 5 e tutti ne hanno anche 5 .. rendendo le autorizzazioni 755.

754 sarebbero i proprietari che hanno letto, scritto, eseguito. Gruppo che ha letto ed eseguito e tutti hanno solo permessi di lettura.

Nell'esempio sopra, puoi vedere che il proprietario del file è www-data (che è il gruppo di server Web predefinito per molti server Apache) e che il gruppo è il gruppo myGroup, che è il gruppo (amministratori) a cui appartengo.

Il primo numero è le autorizzazioni dei proprietari, il secondo è le autorizzazioni dei gruppi e il terzo numero è le autorizzazioni di tutti. Ovviamente, devi stare attento a dare al web server le autorizzazioni di cui ha bisogno ... e assicurarti che i file che devono essere bloccati non possano essere scritti o eseguiti da chiunque (il terzo numero). Di seguito è riportato il significato dei numeri:

Supponendo che il server web sia proprietario dei file, il tuo amministratore è nel gruppo e, naturalmente, ognuno è il terzo numero.

644: I file con autorizzazioni impostate su 644 sono leggibili da tutti e scrivibili solo dal proprietario del file / cartella.

755: i file con autorizzazioni impostate su 755 sono leggibili ed eseguibili da tutti, ma possono essere scritti solo dal proprietario del file / cartella.

777: i file con autorizzazioni impostate su 777 sono leggibili, scrivibili ed eseguibili da tutti. Non utilizzare questo insieme di autorizzazioni, per motivi di sicurezza, sul tuo server web se non assolutamente necessario e solo temporaneamente. È un disastro in attesa di accadere, soprattutto se una directory ha tali autorizzazioni ... significa che chiunque può caricare file ed eseguirli.

Ecco i comandi di Linux per configurare Joomla! autorizzazioni consigliate dalla riga di comando. Autorizzazioni consigliate per i file 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: molte persone ti mostreranno questi comandi senza il percorso, ma preferisco SEMPRE usare il percorso completo, perché se dimentichi di cambiare directory con il root di Joomla! directory di installazione ed eseguirli senza il percorso, hai appena cambiato le autorizzazioni per ogni file e directory in quella directory superiore e hai creato un casino enorme.

Dopo aver eseguito questi comandi, dovrai correggere le autorizzazioni per tutte le directory che richiedono più autorizzazioni ... ad esempio ... utenti che caricano immagini ecc.

SE USI SOLO IL JOOMLA! interfaccia e non si dispone dell'accesso admin o FTP al server, quindi UTILIZZARE LA PROPRIETÀ e le AUTORIZZAZIONI SOPRA.

ARRESTA QUI SE SEI UN NOVIZIO. Il seguito è solo per le persone che comprendono veramente cosa fanno le autorizzazioni e la proprietà.

Tuttavia, trovo che la proprietà e le autorizzazioni in quel modo siano molto inalterate perché mi piace usare FileZilla e una riga di comando della sessione Terminal per la maggior parte del tempo e carico molti file manualmente. Ma non posso sovrascrivere alcun file perché non li possiedo e non ho i permessi per scrivere. Potrei avere FileZilla accedendo con l'account del server web, MA ... Voglio che FileZilla acceda sotto il mio account, quindi posso anche sfogliare altre directory, non solo i file a cui il server web ha accesso ... SO ... Cambio la proprietà e le autorizzazioni a questo:

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

Mi rendo proprietario e inserisco il web server nel gruppo ... e cambio le autorizzazioni per le directory su 775 e per i file su 664. Rende la mia vita molto più semplice ... ma non lo consiglio per tutti.

Se lo fai a modo mio, questi sono i comandi:

 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 {} \;  

"drwxr-xr-x are 755" - questo sarebbe 751 (manca il permesso di lettura per il pubblico), non 755. (Anche se 755 sarebbe più "normale" per le directory.)
MrWhite,

4

Le altre risposte forniscono una buona spiegazione di cosa dovrebbe essere fatto, voglio solo aggiungere uno script per correggere le autorizzazioni se hai già caricato un componente e non riesci ad accedere ai file con ftp.

In questo caso, vorrei caricare questo file fix.phpsul server FTP e aprirlo nel browser: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);
  }

}

Questo script imposta tutte le autorizzazioni del file su 666 e tutte le directory su 777. World Writable non è la migliore serie di autorizzazioni per un host condiviso ma sarà possibile accedere nuovamente ai file e quindi impostarlo sui valori corretti con FTP.


1

In ritardo alla festa. Sono venuto qui alla ricerca di altri luoghi per una guida definitiva su quali cartelle debbano essere scrivibili per joomla.

Mi dispiace che la gente sia portatrice di cattive notizie.

Il consiglio di usare le autorizzazioni 755 per tutte le directory e 644 per tutte le cartelle è almeno irresponsabile .

Rendere scrivibili tutte le cartelle e i file proprietari va bene purché il proprietario non sia il server Web (apache et al).

So che questa è una pratica raccomandata comune ma posso assicurarti che non è una buona pratica. L'ultimo pezzo di software che si desidera dare la possibilità di scrivere su cartelle è il web server stesso. È il web server utilizzato dagli hacker per sfruttare quell'exploit che non è stato ancora patchato (o addirittura trovato).

Pensi che .htaccess salverà il tuo Kevin? Dimenticalo perché hai autorizzato l'accesso in scrittura al web server, i nostri cari amici hacker possono creare i propri file .htaccess dando loro tutte le autorizzazioni che vogliono! come Oh non so che Umm crea file .jpg eseguibili dal server. E pensavi che proteggere dall'esecuzione di .php avrebbe coperto la tua A.

Ma assicurati che solo le cartelle che richiedono l'accesso in scrittura lo abbiano effettivamente. 755 e 644 per le seguenti cartelle.

public_html/images
public_html/cache
public_html/tmp

E assicurati di disattivare i file .htaccess con AllowOveride none per tutte le cartelle scrivibili (come quelle sopra)

Per quelli di voi su hosting condiviso buona fortuna in quanto si tratta di un elemento di configurazione che non è possibile controllare.

Non pensare che la sola lettura del file .htaccess possa essere d'aiuto. Se i nostri amici hacker possono creare una nuova cartella (possono), possono creare il proprio .htaccess.

Per quelli di voi che gestiscono l'hosting condiviso per tutto ciò che è sacro, si prega di ottenere un indizio sulla sicurezza.

Se non capisci la sicurezza, esci dall'attività di hosting che stai rendendo difficile per il resto di noi.

Ora torna alla mia ricerca per la guida definitiva sulle cartelle che necessitano di accesso in scrittura ...


Grazie Chris, ma probabilmente seguirò le autorizzazioni standard per i file 755 e 644, mentre questo è raccomandato dal sito Web ufficiale di Joomla e dagli esperti di sicurezza come Sucuri: docs.joomla.org/Security_and_Performance_FAQs blog.sucuri.net/2015/09/ ...
Neil Robertson,

Sì, lo so che è il "consigliato", ma una volta che sei stato sfruttato e ho scoperto perché sei stato sfruttato, posso assicurarti di buttare i "consigli" fuori dalla finestra e iniziare da zero. Le raccomandazioni sono il percorso di minor resistenza. Non il più sicuro.
DeveloperChris

I passaggi da 1 a 10 dell'elenco "Mantenere sicuro un sito Web Joomla" su joomla.stackexchange.com/a/180/120 insieme alle autorizzazioni standard per i file hanno funzionato bene per i circa 50 siti Web di cui mi occupavo negli ultimi anni. Il tuo chilometraggio può variare ovviamente.
Neil Robertson,

@NeilRobertson Sono d'accordo con quell'elenco ma se c'è un exploit che non è intrappolato da quello, la tua ultima linea di difesa è di non dare permessi di scrittura al web server (apache et al). A proposito, questo non è un consiglio specifico di Joomla. Inoltre, la maggior parte delle persone non può implementare molte delle raccomandazioni in quell'elenco. Semplicemente non hanno le risorse o stanno usando hosting più economico (non il più economico).
DeveloperChris
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.