Come posso fornire all'utente www-data a una cartella nella mia cartella home?


31

Ho una cartella: /home/myuser/folderA

Voglio dare all'utente www-data l'accesso in scrittura a quanto sopra, mentre 'myuser' continua ad avere un accesso normale (dato che è comunque la cartella home di myuser).

Quali comandi devo usare?

Nota: non voglio www-dataavere accesso ad altre cartelle in /home/myuser/.

Grazie in anticipo.

Risposte:


46

Innanzitutto, aggiungiti al gruppo www-data

usermod -a -G www-data (your username)

Poi:

chgrp www-data /home/myuser/folderA
chmod g+rwxs /home/myuser/folderA

Dovrebbe fare il trucco a meno che le autorizzazioni sul tuo /home/myusernon consentano l'accesso ad altri utenti.

Il primo comando modifica la proprietà del gruppo della cartella in quella del server web. Il secondo comando fornisce ai membri del www-datagruppo i diritti di lettura, scrittura, directory di accesso e il sflag di gruppo garantirà che tutti i file creati all'interno di quella directory prendano www-datail gruppo, quindi se si crea un file come myuserl' www-datautente avrà accesso.

Nb. questo dipende anche dalle umaskimpostazioni sia del tuo account utente che del server web: devi assicurarti che i file creati nella cartella A abbiano rwaccesso al gruppo (e le directory create all'interno del gruppo necessario rwx)

Se il tuo server web non ha i diritti di inserimento nella tua /home/myuserdirectory (abbastanza ragionevole), allora non entrerà lì a meno che tu non faccia qualcos'altro. Due soln:

  1. sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA (Questo è un brutto hack e dovrebbe essere ripetuto dopo il riavvio. Ma un trucco potente, può anche essere usato per rendere le cartelle accessibili all'interno delle jail SSH.)

  2. Basta spostare la cartella condivisa da qualche altra parte, ad es /home/shared-stuff/folderA.

La seconda opzione è la più bella. Diciamo che le cose nella cartella A sono davvero pubbliche e non ti interessa chi le vede, puoi impostarle come

sudo mkdir -m777 /home/shared-stuff

Quindi puoi inserire al suo interno, ad esempio, la cartella A con autorizzazioni come sopra e la cartella B a cui i dati www non dovrebbero avere accesso con autorizzazioni diverse, ad es.

$ cd /home/shared-stuff ; ls -l
drwxrwsr-x 2 myuser www-data   4096 Jan 17 21:46 folderA
drwxrwx--- 2 myuser myuser     4096 Jan 17 21:46 folderB

cosa c'è sdentro g+rwxs?
T.Todua

Bit "Gruppo appiccicoso". È l'effetto spiegato in para che inizia con "Il primo ..." :-)
artfulrobot

6

Un altro modo è quello di cambiare il nome utente direttamente in apache config, questo è se si tratta del tuo computer locale e salvi immagini da qualche altra parte che distruggerebbero tutte le autorizzazioni fatte sulla cartella. Inoltre, se hai solo 1 utente e non ti importa dei dati www!

$ sudo vi /etc/apache2/apache2.conf

Trova utente e gruppo e metti il ​​tuo
User <Your User>
Group <Your Group>

$ sudo service apache2 restart

Questa soluzione non sembra così sicura, qualcuno sa che tipo di minacce alla sicurezza causerà questa impostazione?
Fleuv,

Sono abbastanza sicuro che non sia sicuro, ecco perché ho dato la precisione solo della macchina locale.
Shadowbob,

Questa soluzione fornisce tutto l'accesso ad apache alla tua cartella ...
Loenix
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.