it-swarm.dev

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

In passato ho avuto spesso 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 Joomla, plugin 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?

25
TryHarder

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 che 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. PHP Parametri

Controllare il parametro upload_max_filesize nella scheda PHP Informazioni nelle Informazioni di sistema è sufficiente. Spesso puoi sovrascrivere le impostazioni predefinite in un ambiente di hosting condiviso tramite le impostazioni PHP in cPanel o un file php.ini 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__);
?>

Passare a [mywebsite].com/whereami.php Per vedere il percorso della cartella principale.

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

4. Gestore di file PHP non idoneo

Il tuo hosting web 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 autorizzazioni di file sicure.

Puoi vedere quale gestore PHP viene utilizzato in 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 cambiare 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 alternativa, le autorizzazioni per file e cartelle vengono modificate in 0777, ma ciò pone il 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 autorizzazioni 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 Joomla, plugin 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.

22
Neil Robertson

Controlla i livelli di autorizzazione, dovrebbe 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 dare un'occhiata a questo interessante documento Joomla basato su verifica dei permessi del file.

12
Shyam

Una soluzione semplice per me è spesso lasciare PHP eseguire in modalità (Fast-) CGI e impostare la proprietà della directory Joomla per l'utente FTP. In questo modo sarà possibile caricare e sovrascrivere i file tramite FTP e Joomla saranno 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 di diverse modalità .

8
fruppel

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 all'host di risolvere il problema. Possono impostare PHP (Apache) per essere eseguito con un utente speciale, che in tal caso dovrebbe essere il tuo utente FTP. Quindi tutto funzionerà bene.

7
Bakual

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.

  • Ciò può accadere a causa del permesso di (444) come Joomla configuration.php dispone di questa autorizzazione non consentita per impostazione predefinita (per motivi di 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, plugin, ecc. Joomla

  • Ciò accadrà a causa di temp/log autorizzazione non valida per la cartella (richiede 755)

  • O un altro motivo è temp/log percorso è errato in configuration.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 this .

Spero che sia d'aiuto ..

7
Jobin Jose

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 le autorizzazioni di lettura ed esecuzione ma non di scrittura, 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 a meno che non sia 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 di amministratore 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 {} \;  
5
bgies

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 come fix.php al server FTP e aprilo 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 è not il miglior set di autorizzazioni per un Host condiviso ma sarai in grado di accedere nuovamente ai tuoi file e quindi puoi impostarlo ai valori corretti con FTP.

4
Harald Leithner

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 software che si desidera dare la possibilità di scrivere in cartelle è il server web stesso. È il web server utilizzato dagli hacker per trarre vantaggio da 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 ...

1
DeveloperChris