Non riesco a installare nuovi plugin a causa dell'errore "Impossibile creare la directory"

24 set 2010, 22:19:12
Visualizzazioni: 38.5K
Voti: 7

Un membro della facoltà sta avendo difficoltà con un'installazione WordPress didattica. Risolvere i singoli problemi di permessi è stato un processo casuale e si è trasformato in un fastidio ricorrente, quindi chiedo qui. Cosa posso fare per far funzionare WordPress senza problemi? Gli errori che ricevono sono:

Installazione Plugin: Lightbox 2 2.9.2 Download del pacchetto di installazione da http://downloads.wordpress.org/plugin/lightbox-2.2.9.2.zip… Estrazione del pacchetto… Impossibile creare la directory. /home/CIM140/public_html/wordpress/wp-content/upgrade/lightbox-2.tmp

Quando eseguo su come www-data (l'utente con cui viene eseguito Apache in Ubuntu), posso creare quella directory senza problemi. La mia istanza di test wp installa questo plugin correttamente, quindi non capisco perché fallisca per loro.

0
Tutte le risposte alla domanda 6
6

@pwnguin,

Ho avuto gli stessi problemi eseguendo mod_php con WordPress e alla fine ho trovato la soluzione.

# chown www-data:www-data  /home/CIM140/public_html/wordpress/ -R

Fintanto che TU controlli il server, questo non causerà alcun problema di sicurezza.


MODIFICA:

Potresti anche dover cambiare il tuo umask a 022 in modo che le nuove directory create da WordPress abbiano i permessi 755 e i file abbiano i permessi 644.

Un'altra opzione è sovrascrivere i permessi predefiniti dei file in wp-config.php:

define('FS_CHMOD_DIR', (0755 & ~ umask()));
define('FS_CHMOD_FILE', (0644 & ~ umask()));

Puoi anche forzare il metodo del filesystem per gli aggiornamenti.

  • (Preferenza Primaria) "Direct" forza l'uso di richieste di I/O File Dirette da PHP, questo può aprire problemi di sicurezza su host configurati male, ma viene scelto automaticamente quando appropriato.
  • (Preferenza Secondaria) "ssh" forza l'uso dell'Estensione SSH di PHP.
  • (3a Preferenza) "ftpext" forza l'uso dell'Estensione FTP di PHP per l'accesso FTP, e infine
  • (4a Preferenza) "ftpsockets" utilizza la Classe Sockets di PHP per l'accesso FTP.

Questi metodi possono essere definiti in wp-config.php con: define('FS_METHOD', 'ftpext');

Puoi ottenere tutte le costanti attualmente definite eseguendo il comando print_r(@get_defined_constants()); in php.

24 set 2010 22:35:44
Commenti

Già fatto =(

jldugger jldugger
24 set 2010 22:39:50

esempio: drwxrwsr-x 6 www-data www-data 4096 2010-09-22 23:15 wp-content

jldugger jldugger
24 set 2010 22:40:53

Prova a cambiarli in drwxr-xr-x 7 www-data www-data 4096 Sep 24 09:38 wp-content

Chris_O Chris_O
24 set 2010 23:01:13

Inoltre non ho mai usato l'attributo SGID su una directory, cioè: chmod g+s Non penso che sia necessario. Qualcuno mi corregga se sbaglio.

Chris_O Chris_O
24 set 2010 23:13:02

Ah, dopo aver contattato la facoltà, sembra che stia usando SSH di default mentre la mia istanza di test utilizza l'IO diretto. Quindi è il suo utente che non ha i diritti per creare la directory.

jldugger jldugger
25 set 2010 01:17:48

Infatti, forzare FSMETHOD a direct ha risolto il problema immediato. Ora cercherò alternative, ma per il momento questo è risolto. Incredibilmente difficile da individuare!

jldugger jldugger
25 set 2010 01:35:34
Mostra i restanti 1 commenti
0

Per capire perché stai riscontrando questi problemi, devi comprendere i concetti fondamentali della proprietà dei file.

In sostanza, sai che Apache viene eseguito come utente www-data. Questo è il motivo per cui impostare tutto come proprietà di quell'utente funziona, perché WordPress verifica che possa creare file come l'utente che possiede i suoi stessi file. Quindi, quello che stai facendo è rendere tutto di proprietà dell'utente che possiede i file.

Se hai il controllo totale e completo della macchina, questo va bene. D'altra parte, se è un server di hosting condiviso, allora hai creato una falla nella sicurezza.

Normalmente, i server web vengono eseguiti come un determinato utente (come www-data) che poi esegue codice di altri utenti (come "otto", il mio account utente). In questa situazione, il server web non avrebbe la possibilità di creare file come "otto", e quindi non sarebbe in grado di creare correttamente file come il mio account. Pertanto, questo controllo di WordPress per creare file correttamente posseduti e quindi poter installare plugin o aggiornare file fallirebbe, correttamente, perché avere i miei file di proprietà dell'utente condiviso del server web sarebbe un rischio per la sicurezza.

In tal caso, WordPress dovrebbe correttamente chiedermi le credenziali FTP, o qualcosa del genere. Queste sarebbero un modo per aggirare il problema dell'account utente autenticandosi come l'utente che dovrebbe scrivere i file, e poi scriverli come quell'utente.

Ora, stai cercando di risolvere questo problema cambiando tutti i file di WordPress in modo che siano di proprietà dello stesso account con cui il server web scrive i file. L'approccio più normale per questo è cambiare il modo in cui il server web scrive i file, per consentire al processo PHP di essere "di proprietà" dell'account utente con cui sta eseguendo i file.

La risposta generale a questo è "suphp". Questa versione di PHP imposta l'utente con cui viene eseguito il processo PHP allo stesso utente del proprietario dei file PHP che sta eseguendo. Questo è più sicuro nelle configurazioni di hosting condiviso, perché assicura che un processo PHP eseguito dal server web condiviso venga eseguito come proprietario dei file PHP, e quindi non possa leggere gli account di altri utenti e simili.

Su Ubuntu, credo che questo sia il modo generale per farlo:

Installa suphp:

$ sudo apt-get install libapache2-mod-suphp

Disabilita il vecchio mod_php

$ sudo a2dismod php5 

Riavvia Apache

$ sudo /etc/init.d/apache2 restart

Ed ecco fatto. Ora, fai in modo che i tuoi file PHP di WordPress siano di proprietà del loro normale proprietario. Nessun trucco speciale, nessun cambiamento di permessi o proprietà o cose del genere. Dato che il processo PHP verrà eseguito come proprietario di quei file, sarà in grado di scriverci come quel proprietario. Le directory dovrebbero essere 755, i file dovrebbero essere 644 (nota, suphp non gradisce che i file siano scrivibili dal gruppo, quindi 755/644 è l'impostazione corretta dei permessi).

17 apr 2016 12:31:35
0
-1

Per me (su Ubuntu) ho dovuto aggiungere umask 002 a /etc/apache2/envvars per far sì che WordPress caricasse plugin/immagini con permessi 775 invece di 755 (cioè permettere a chiunque oltre ad Apache e root di modificare i file caricati)

27 set 2013 01:32:39
5
-1

È necessario concedere i permessi di scrittura alle directory rilevanti. Idealmente, dovresti farlo solo per il file o la cartella specifica e poi ripristinare i permessi per non lasciare il tuo sito vulnerabile.

Puoi risolvere questo problema utilizzando i seguenti comandi dalla riga di comando (supponendo che ti trovi nella cartella principale di WordPress):

# cd wp-content
# chmod -R a+w plugins
# chmod -R a+w themes
# chmod -R a+w upgrade

La soluzione più sicura è aggiungere apache allo stesso gruppo del proprietario dell'installazione di WordPress e modificare tutti i permessi del gruppo in scrivibili.

17 apr 2016 10:03:28
Commenti
  1. Se esiste una soluzione più dettagliata, aggiungila qui, invece di collegarti ad essa. 2. no, il webserver non dovrebbe in alcun modo essere in grado di scrivere direttamente nelle directory del codice, a meno che non ti piaccia essere hackerato.
Mark Kaplun Mark Kaplun
17 apr 2016 10:14:30

@MarkKaplun ma allora gli aggiornamenti delle estensioni non funzionano, cosa che la maggior parte degli utenti di WP considera il modo "normale" di gestire un sito. Un'affermazione un po' troppo forte. Il server che può scrivere su wp-content è relativamente peggio per la sicurezza, ma di per sé non è un grosso problema.

Rarst Rarst
18 apr 2016 09:36:12

@MarkKaplun: Anche la risposta accettata dice sostanzialmente la stessa cosa - l'unica differenza è che è specifica per Apache mentre la mia è generica.

Varun Varun
23 giu 2016 07:31:14
  1. Se la tua risposta è la stessa, qual è il senso di averla? 2. Chi ha detto che la risposta accettata è grandiosa?
Mark Kaplun Mark Kaplun
23 giu 2016 08:54:52

@Rarst, è anche meno conveniente chiudere a chiave la porta d'ingresso di casa e chiudere le finestre. Se le persone preferiscono cercare file hackerati in tutto il loro server invece che solo nella directory degli upload, possono fare ciò che suggerisce la risposta. Gli aggiornamenti di plugin/temi di Wordpress è meglio farli tramite un server ftp se non si ha voglia di usare un'app client sftp.

Mark Kaplun Mark Kaplun
23 giu 2016 09:03:00
0
-1

A volte mi è capitato di avere siti in cui correggere i permessi di directory e file non era sufficiente per risolvere il problema. Ho poi scoperto che una o più directory avevano impostato il flag immutabile. Questo può essere facilmente risolto eseguendo chattr -R /var/www/sub.domain.tld come root.

28 nov 2019 17:08:49
1
-1

Ecco una soluzione molto semplice: cambia i permessi della cartella opt eseguendo il comando sudo chmod -R 777 /opt.

7 gen 2021 07:32:29
Commenti

Per favore [modifica] la tua risposta e aggiungi una spiegazione: perché questa soluzione potrebbe risolvere il problema? Perché pensi che sia una buona soluzione permettere a tutti di leggere, scrivere ed eseguire file in queste directory?

fuxia fuxia
8 gen 2021 02:04:01