Impostazione delle autorizzazioni corrette per il caricamento di file


12

Ho uno script php che carica un file in una directory chiamata "uploads". L'unico modo per far funzionare il caricamento è se lo faccio:

chmod 777 uploads

So che non è corretto, ma non so cosa dovrei fare per farlo funzionare.

Informazioni sul server: T1-Micro Amazon Linux AMI 2013.03 su Amazon EC2

Domande:

  • Come faccio a sapere quali utenti devono accedere ... ad esempio, qual è il nome utente per apache o il web server?

  • Quale livello di accesso devo fornire e quale comando dovrei usare per farlo.

Grazie!

Modifica: ho trovato molte risposte sullo overflow dello stack che cercherò. Per esempio

/programming/3642241/php-file-upload-permissions

/programming/10842880/setting-permissions-in-php-on-server

/programming/8948537/permission-denied-when-attempting-to-upload-file-with-php

Grazie

Risposte:


20

Prova a correre:

ps -ef | grep apache

e guarda la colonna più a sinistra corrispondente al server Apache. Questo è l'utente che esegue Apache e, per eredità, anche PHP.

Cambia la proprietà della directory di upload su questo utente e limita un po 'le autorizzazioni, ad esempio se l'utente del web server www-dataapparteneva al gruppo con lo stesso nome (usando un percorso di esempio di /var/www/uploads):

sudo chown www-data:www-data /var/www/uploads
sudo chmod 755 /var/www/uploads

(o qualsiasi altra autorizzazione tu voglia in questa istanza). Uso sudoi comandi di esempio: non so esattamente come sono impostati i sistemi EC2 a questo proposito per ottenere i privilegi di superutente.

Se hai già caricato file / directory, potresti voler cambiare anche la proprietà e le autorizzazioni. Per fare ciò, passando da 777autorizzazioni più ragionevoli, è possibile eseguire:

sudo chown -R www-data:www-data /var/www/uploads
sudo chmod -R 755 /var/www/uploads
sudo find /var/www/uploads -type f -exec chmod -x {} \;

Non eseguire i comandi "alla cieca" se non si comprende ogni parte di essi. Controlla le manpagine se qualcosa non è chiaro (dovrebbe essere abbastanza semplice).


Grazie. Questo ha aiutato molto. apache è l'utente. I comandi sudo chown e sudo chmod funzionano entrambi.
fun_programming

Soluzione chiara e semplice, grazie mille. Ora non ho più bisogno del rischioso permesso del 777
lhrec_106,
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.