Di tanto in tanto può succedere di non riuscire a modificare e cancellare file da cartelle via FTP. Capita su server Windows dove i file o le cartelle risultano in uso da parte di qualche processo, per cui basterà attendere il rilascio del file o, nel caso più estremo, basterà riavviare il server e ritrovarsi i file liberi per ogni tipo di modifica.
Su server Linux si può presentare un altro scenario: non siete più in grado di rimuovere file e cartelle dentro l'area FTP, semplicemente perché l'owner dei file e delle cartelle non siete voi e il tipo di previlegi su quei file non vi consente di modificarli.
A me è successo proprio ieri, quando ho avuto la brillante idea di effettuare l'aggiornamento di un'installazione di Joomla! direttamente dall'area amministrativa di Joomla! stesso. Tra me ho pensato: "C'è la detezione automatica di una versione più nuova, perché non andare fino in fondo e fargli applicare l'aggiornamento con un solo click?".
Joomla! si è messo a scaricare l'aggiornamento, che da server a server su un buon fornitore di housing è una bazzeccola in termini di secondi, considerata la banda presente, solo che alla sua decompressione e riposizionamento dei file nelle cartelle, segnala il fatto che non riesce a completare la cosa in un percorso relativo.
"Bene" ho pensato. E' sufficiente mettersi a mano via FTP e fare l'upload di tutti i file ottenuti dal packaging Joomla_2.5.x_to_2.5.14-Stable-Patch_Package e sovrascriverli si a file della vecchia versione che a quelli nuovi che l'aggiornamento automatico ha provato a fare. Purtroppo il processo di aggiornamento si ferma su alcuni file che risulta impossibile eliminare perché:
- questi file hanno come owner apache (proprio lo user in esecuzione da parte dell'aggiornamento automatico di Joomla)
- questi file e cartelle hanno come previlegi in scrittura rispettivamente 644 e 755, pertanto si possono solo leggere e non modificare via FTP, visto che ci si logga con le credenziali FTP del proprietario del sito, d'ora in poi, a titolo di esempio, mywebsiteowner
Dopo averle provate un po' tutte, prima usando l'area amministrativa di PLESK, loggandomi sia come mywebsiteowner, poi come administrator del server, e non esserci riuscito, mi sono pure giocato la carta della connessione SSH al server, ma nemmeno qui è possibile effettuare l'escalation, per due motivi:
- administrator non riesce a mettere il naso dentro la cartella httpdocs/, proprietà dell'utente mywebsiteowner
- l'utente mywebsiteowner non riesce, nemmeno se loggato via SSH, a rimuovere gli stessi file che non riesce a rimuovere via FTP
Nemmeno l'escalation si riesce a fare diventando temporaneamente utente root, grazie a sudo root. Su questi server virtuali o dedicati Linux l'utente root è disabilitato e la strada per abilitarlo è un po' ostica, oltre che pericolosa.
In rete ho trovato una soluzione tanto semplice quanto geniale: è necessario fare in modo che l'utente apache elimini quei file o quantomeno ne cambi i previlegi in scrittura, mettendoli a 777 e mettendo qualche altro utente nelle condizioni di poterli cancellare. Ma come?
L'utente apache è proprio quello che sta interpreta gli script e le pagine php, per cui basterà scrivere una paginetta del menga in php!
'';
echo exec('chmod 777 /var/www/vhosts/mywebsite.com/httpdocs/mysubfolder/*');
?>
La cosa pare funzionare, per cui la rimozione dei file può essere intrapresa anche da qualche altro utente, via File Manager all'interno di PLESK, via SSH o anche via FTP usando il client FTP di preferenza.
Nessun commento trovato.