Come far funzionare Apache come utente corrente


44

Penso che per una macchina di sviluppo sia più conveniente eseguire Apache come utente corrente per semplificare il problema delle autorizzazioni? Come lo faccio? Penso che sia suexec ma come lo configuro in Ubuntu + Apache?

Risposte:


28

Io stesso aggiungerei l'utente al www-datagruppo con ...

sudo adduser {username} www-data

Semplice ed efficace Nessun pasticcio con file di configurazione o autorizzazioni.


6
L'ho fatto tutto il tempo, ma questo non risolverà alcuni dei problemi di autorizzazione negati, poiché i diritti di gruppo non sono gli stessi dei diritti dell'utente per tutti i file.
Kostanos,

1
Questo non risolverà se CHMOD non ha permesso al gruppo di scrivere.
GusDeCooL

il problema per me è che ho l'installazione locale. Quando creo file con il mio IDE hanno il mio "utente / gruppo" e qualche volta apache non è in grado di leggere quei file
Postadelmaga,

questo da solo non risolve molti problemi di permessi perché il tuo gruppo primario normalmente non è www-data e alcune app php richiedono permessi di scrittura di gruppo. (joomla, wordpress)
Eric

2
Questo non risolve il problema in cui si creano file e i dati www non possono rimuoverli / modificarli perché il gruppo principale non è www-dati
billy

57

Modifica il seguente file come root: / etc / apache2 / envvars

usando il comando:

sudo nano /etc/apache2/envvars

cambia l'utente e il gruppo a te stesso se esiste un solo utente e non avrai mai più problemi con le autorizzazioni.

IE, se si accede e si esegue il server solo come utente 'big_dog':

export APACHE_RUN_USER=big_dog
export APACHE_RUN_GROUP=big_dog

Cavolo, del resto potresti cambiare quell'utente con l'utente attuale, ne sono sicuro in qualche modo. Quindi, installa user_dir hai tutti i web solo tu puoi avere il pieno controllo (a meno che tu non lo modifichi).

Riavvia il server (se non sei sicuro, riavvia o goole) e sei a posto.


3
Questo funziona come un incantesimo! grazie. l'unico aggiungerei:sudo chown big_dog.big_dog /var/lock/apache2
Kostanos,

3
Inoltre probabilmente avrai bisogno disudo chown big_dog.big_dog -R /var/log/apache2
Kostanos il

Su OpenSUSE-Tumbleweed (e probabilmente su qualche altro) il file è su/etc/apache2/uid.conf
Dilawar,

Non è necessario modificare necessariamente il file envvars, ho appena aggiornato le variabili di ambiente prima di avviare Apache con uno script. In questo modo, non sei bloccato su un singolo utente ma chi esegue mai lo script, esegue l'apache. Ho usato export APACHE_RUN_USER=#$(id -u)per fornire l'id utente e usare allo stesso modo id -gper il gruppo nello script e alla fine ho chiamato apache per l'esecuzione.
entro il

1

perché dovresti farlo, stavo lottando con quei problemi di perm in passato, ma questo è il mio processo di sviluppo da oggi:

  • installa un nuovo box linux (portatile virtuale o locale come)
  • esegui sudo apt-get install lamp-server^proc standard per accendere la lampada
  • crea un collegamento sym alla mia home directory dove i progetti sono così:

    ln -s /home/user/html /var/www/html

  • crea un collegamento sym al file di configurazione degli host

    ln -s /home/user/html/Apache-VirtualHosts.conf /etc/apache/sites-enabled/000-default

questo è tutto :)

Funziona come previsto, nessun problema con i permessi degli utenti o qualcosa di simile con il server Apache, per mysql ho un processo un po 'più lungo ..

eh, evviva


Ciò non risolve nessuno dei problemi di autorizzazione affrontati nella maggior parte delle altre risposte.
HörmannHH,

0

Evitando il problema "dovresti farlo", puoi trovare dove è impostato l'utente per apache eseguendo:

grep www- /etc/apache2/apache2.conf

È quindi il caso di modificare quelle istanze /etc/apache2/apache2.confe ricaricare Apache ( sudo /etc/init.d/apache2 reload).


apache2.confnon contiene www-per me
Jiew Meng

Ho la sensazione che volevi dire qualcosa del genere grep -HR "www-" /etc/apache2/. Se sai già che è in apache2.conf, modifica semplicemente quel file. Nel mio caso, non era lì, ma in / etc / apache2 / envvars come sottolinea la risposta di Eric.
Mike,

Questo perché apache.confcerca ${APACHE_RUN_USER}e ${APACHE_RUN_GROUP}. Non www-datadirettamente
Yahya Uddin,

0

creare un nuovo webdevgruppo www-datautenti e aggiungere l' utente ad esso.

sudo addgroup webdev
sudo adduser www-data webdev

Quindi vai avanti e aggiungi il tuo utente a quel gruppo e rendilo il gruppo predefinito per il tuo utente.

sudo adduser {your-user} webdev
sudo addgroup webdev

L'ultima cosa da fare è assicurarsi che il gruppo webdev abbia i diritti rwx sui file

sudo chmod 775 -R /path/to/project

Ora l'unica cosa che può accadere è che, ad esempio, www-data crea un nuovo file di registro e non è possibile rwx.


1
Qual è il vantaggio di questo, oltre ad aggiungere il mio utente al www-datagruppo, specialmente perché stiamo parlando di un ambiente di sviluppo?
Dan,

bene se lo fai in questo modo e imposti i diritti 775 su es. public_html o / var / www non avrai problemi con i diritti sulla tua macchina di sviluppo. gli altri si avvicinano, ti lasciano con ulteriori passaggi da fare o non sono efficaci come non li vorrei. Quindi secondo me, questo è il modo migliore per gestirlo su una macchina di sviluppo. per server produttivi consiglierei una configurazione diversa. anche con questo approccio, puoi aggiungere facilmente utenti.
Thomas Venturini,
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.