Diventa proprietario di nuovi file e cartelle www-data anziché superutente / admin


13

Finora ho avuto problemi con le autorizzazioni e ho pubblicato un'altra domanda, ma ho identificato il problema, senza ancora alcun modo per risolverlo.

La mia configurazione:

  • Ubuntu Desktop con stack LAMP
  • 5 "utenti" Ho creato utenti che ho creato nel server Ubuntu utilizzando sudo useradd -r -s /bin/false USERNAMEe che sono utilizzati per accedere alle cartelle condivise della rete locale, vale a dire per i computer della mia rete per connettersi alla cartella / var / www, condivisa utilizzando Samba.
  • EDIT: Lo scopo è quello di creare una sorta di "master localhost" in cui tutti i computer nella mia rete locale possano lavorare sullo stesso sito Web, localmente (NON ho un indirizzo IP statico, quindi il server non è accessibile da altrove) .

Il mio problema:

Al momento, quando creo una nuova cartella su /var/www/html(ad esempio: Creazione della cartella / var / www / html / testsite1) utilizzando qualsiasi computer della rete, questa cartella è automaticamente di proprietà di boris:www-data("boris" essendo l'utente amministratore principale sulla mia installazione desktop di Ubuntu , e mostra in effetti boris: www-data durante l'esecuzione ls -lsulla cartella appena creata), che sta causando problemi con la mia configurazione attuale (usando principalmente il plugin Duplicator per wordpress di LifeInTheGrid). Tuttavia, sia il mio /var/wwwche il mio /var/www/htmlsono di proprietà diwww-data:www-data

Quindi, vorrei sapere come posso:

  • Cambia la proprietà in www-data: www-data di tutti i file E directory sotto / var / www e / var / www / html

  • Assicurati che qualsiasi file o cartella che creerò con uno qualsiasi degli utenti della mia rete sia automaticamente di proprietà di www-data: www-data (che include i file creati automaticamente dagli script php poiché è ciò che fa il plug-in Duplicator se sono non sbagliato).

C'è un modo per farlo?

Nota: sono un principiante super con cose legate a Linux e alle linee di comando, ma raggiungo velocemente.

Nota 2: umask è già impostato come 0002

MODIFICARE:

Ho provato questo:

sudo chown -R www-data:www-data /var/www/

E quindi impostare bit setuid e setgid facendo questo:

sudo chmod u+s /var/www/html
sudo chmod g+s /var/www/html

Quindi disconnesso, riavviato Apache e ha provato a creare una nuova cartella utilizzando un Mac collegato al mio server tramite IP di rete (IP locale, non statico).

Mi sono imbattuto

ls -l on /var/www/html

L'output è ancora:

drwxr-sr-x 2 boris   www-data  testsite1

Nota:

Ho già controllato la mia configurazione di Apache prima e su Envvars, è già impostato su:

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

EDIT: l'ho provato all'indietro, ad esempio impostando tutto ciò che appartiene a boris: www-data e ho impostato il mio apvv config confache su boris: www-data. HA FUNZIONATO!

Ecco cosa ho fatto:

Modifica degli avvocati in

export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data

Corse

sudo chown -R boris:www-data /var/www/

Riavviato Apachem, creato una nuova cartella, aggiunto i miei file, eseguito il plugin, ora dice che va bene !!!


È una cattiva idea per la sicurezza impostare i file in modo che appartengano all'utente o al gruppo di dati www, anche se in rari casi può essere necessario per determinati file a cui il server Web deve accedere in scrittura. Cosa stai cercando di ottenere?
thomasrutter,

Risposte:


11

Risposta alla domanda n. 1: ricorsivachown

Un ricorsivo chownti permetterà di impostare la proprietà e il gruppo su ciò che desideri /var/www/.... Questo è il comando che dovresti usare:

sudo chown -R www-data:www-data /var/www/

Con ciò, ogni file e cartella verrà impostato come tale al suo interno con tali autorizzazioni di proprietà.


Mezza risposta alla domanda n. 2: setgidbit

Se si desidera la proprietà di gruppo predefinita sui file, impostare il setgidbit nella /var/www/htmlcartella. I nuovi file dovrebbero quindi essere creati con quel gruppo come indicato nella cartella.

sudo chmod g+s /var/www/html

Dovrai impostare le autorizzazioni di scrittura, tuttavia, se un utente diverso da quello che www-datasta scrivendo nelle directory, e farlo può aprirti a una o due falle di sicurezza se non stai attento.

Si finisce con le autorizzazioni essendo $USER:www-data; per cambiare il proprietario si utilizza quindi un chowncome indicato nel metodo n. 1 (detto ciò, in una corretta installazione è necessario fare affidamento sulle autorizzazioni di gruppo, non sulle autorizzazioni del proprietario dell'utente, per l'accesso ai file Web).


Problema al duplicatore di PHP Wordpress

Il problema con le autorizzazioni è l'utente / gruppo che PHP viene eseguito in base alle esigenze di scrittura e lettura e probabilmente +xsulla directory per modificare la struttura di directory e simili.

PHP funziona come www-dataper impostazione predefinita nelle installazioni di Ubuntu che utilizzano le configurazioni predefinite. Idealmente, i passaggi sopra riportati porterebbero a risolvere il problema, poiché il plug-in Duplicator è bloccato come PHP.

Idealmente, dovresti anche consultare la documentazione del plugin Duplicator per verificare quali autorizzazioni sono necessarie per funzionare e funzionare.


A me piace il metodo setuid :)
Rinzwind

Questo e 'esattamente quello che stavo cercando!!!! Unico problema: non ha funzionato :-( Ho creato una cartella sul mio mac (cioè NON con il computer desktop ubuntu) accedendo al mio server tramite il suo IP locale. Quando ho eseguito ls -l, ancora di proprietà di boris: www- dati: - /
Boris Chevreau,

È perché ho impostato la proprietà dell'utente sui file ma non sulle cartelle? È solo perché la cartella che creo NON PU be essere automaticamente di proprietà di www-data: www-data?
Boris Chevreau,

Il Mac è diverso da Linux e se sei davvero sfortunato, questo metodo non funzionerà e finirai per dover fare confusione con molto più di semplici autorizzazioni (come ACL e altre cose) per impostare i file predefiniti . Inoltre, "non ha funzionato" è ambiguo. define non ha funzionato e include gli output come modifiche alla domanda.
Thomas Ward

1
il setuid applicato alle directory viene sempre ignorato su Linux, iirc
muru il

6

Per assicurarti che qualsiasi file o cartella che crei /var/www/htmldiventi automaticamente di proprietà di www-data che puoi usare inotify, è come cron ma monitora le cartelle / i file per cambiamenti in attributi, creazioni di file, modifiche e molto altro.

Innanzitutto installalo con:

$ sudo apt-get install incron

Consentire l'utilizzo incrondi root aprendo /etc/incron.allowcon:

$ sudo vim /etc/incron.allow

e aggiungi rootal file, quindi salva ed esci.

Modifica il tuo incrontab con:

$ sudo incrontab -u root -e

e aggiungi la seguente riga:

/var/www/html IN_CREATE /bin/chown -R www-data:www-data /var/www/html/

salva ed esci.

Ora, non appena viene creato un file nella /var/www/htmldirectory, verrà automaticamente impostato onwerhip www-data:www-data.

Spiegazione della riga in incrontab:

/var/www/html è la directory che verrà monitorata.

IN_CREATEcontrollerà i file creati. È la maschera di cambio file .

/bin/chown -R www-data:www-data /var/www/html/ è il comando / azione da eseguire.


Possono ottenere qualcosa del genere senza inotificare e impostare - la proprietà dell'utente probabilmente non dovrebbe cambiare spesso e possono ripristinare la proprietà dell'utente stesso ... o usare ACL che può essere una seccatura
Thomas Ward

Lo scopo di questo server è di usarlo come "host locale principale", ad esempio creare siti Web localhost ed essere in grado di modificare / sostituire / spostare e creare siti di test al volo molto facilmente. Se devo resettare manualmente tutto, uccide l'intero scopo: - /
Boris Chevreau,

Questo "incron" è l'unico modo? Non capisco perché debba essere così complicato. Quello che sto cercando è un modo semplice per tutti i miei computer in rete per creare un sito Web su questo server. Alla fine, dato che non ho un IP statico (quindi la sicurezza non è un problema), hai in mente un'altra inversione di tendenza?
Boris Chevreau,

grazie, funziona come un fascino!
trurl,

3

Cambia la proprietà in www-data: www-data di tutti i file E directory sotto / var / www e / var / www / html

cd /var/www/
chown -R  www-data:www-data /var/www/
  • ./html è implicito qui (come parte di / var / www /)
  • -Rlo rende ricorsivo (quindi attraverserà tutte le directory in /var/www/).

Assicurati che qualsiasi file o cartella che creerò con uno qualsiasi degli utenti della mia rete sia automaticamente di proprietà di www-data: www-data

  • All'interno di / var / www / html / presumo?

Imposta la tua configurazione di apache su www-data. Vedere/etc/apache2/envvars

# envvars - default environment variables for apache2ctl

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

È necessario riavviare apache dopo aver modificato questo ( sudo service apache restart).

Ciò include i file creati automaticamente dagli script php in quanto è ciò che fa il plugin Duplicator se non sbaglio).

Il problema qui probabilmente non è il plugin ma php. L'utente dovrebbe essere lo stesso processo che esegue PHP. Quindi probabilmente dovrai impostarlo anche su www-data se questo è il tuo utente e gruppo ( /etc/php5/apache2/php.ini).


Le impostazioni predefinite di Ubuntu eseguono processi / lavoratori PHP come www-data, come Debian, credo.
Thomas Ward

Inoltre, il problema con /var/www/htmlè anche la proprietà del gruppo e i privilegi di lettura / scrittura. L'altro problema è che vogliono avere qualsiasi file creato da un utente www-data:www-data, e la mia ipotesi è che quelli siano utenti di rete , non utenti Wordpress, quindi devi andare dopo le autorizzazioni per i file Linux.
Thomas Ward

Questi sono davvero utenti di rete, sono gli utenti che ho creato nel server Ubuntu utilizzando sudo useradd -r -s / bin / false USERNAME e che vengono utilizzati per accedere alle cartelle condivise della rete locale
Boris Chevreau,

Cosa succede se cambio la proprietà e riscrivo le autorizzazioni di tutte le cartelle e i file su boris: www-data, quindi cambio gli avvocati per apache in boris: www-data? Potrebbe forse risolvere il problema poiché ogni volta che creo un nuovo file viene impostato come proprietario boris: www-data?
Boris Chevreau,

2

L'ho risolto! Penso ancora che sia stato un problema di Apache Envvars, ma non sono sicuro che sia la cosa particolare che ha risolto il problema ... Comunque, ecco cosa ho fatto:

Modifica degli avvocati in

export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data

Corse

sudo chown -R boris:www-data /var/www/

Ora funziona finora. Testerà ulteriormente ...

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.