Come posso dare a file e directory creati da FTP le autorizzazioni corrette affinché Apache possa leggerli e scriverli?


8

Sono più una persona di Windows, quindi per favore scusa la mia ignoranza con questa domanda di base su Linux.

Sto cercando un server Linux (Debian) su cui siano installati solo Apache2 e vsftp.

Quello che sta accadendo è che sto combattendo costantemente con chi possiede file e cartelle e non riesco a farlo bene.

Questa è la mia comprensione finora:

  • L'utente di www-data ha bisogno della proprietà di cartelle e file poiché tutti i file in / var / www / html eseguono script che richiedono loro di scrivere nella loro cartella. E ovviamente deve essere in grado di servire le pagine tramite http.
  • Il mio utente ftp (chiamiamolo ftpuser ) richiede anche l'autorizzazione per scrivere nella cartella / var / www / html (ricorsiva) poiché devo essere in grado di caricare nuovi file.

Con questo in mente, ho creato un gruppo chiamato ftpandwww e ho assegnato tutte le cartelle e i file a questo gruppo. Questo ha funzionato fino a un certo punto ...

Sono quasi nel posto giusto, tranne per il fatto che qualsiasi nuova cartella creata usando il mio client FTP ha le autorizzazioni sbagliate (che posso correggere cambiandole nel client FTP), ma poi i dati www non possono scrivere su di loro perché sono di proprietà di ftpuser e finisco per dover entrare in SSH ed eseguire un chown nel gruppo ftpandwww in modo che entrambi siano felici.

Come posso fare in modo che tutte le nuove cartelle che creo sotto FTP abbiano i permessi corretti (774) e che siano automaticamente di proprietà del gruppo ftpandwww a cui posso caricare e servire via web (con permessi di scrittura) senza dover accedere e chown tutti i nuove cartelle e file ogni volta?


Risposte:


10

Utilizzare le autorizzazioni SetGID sulla directory principale Web e propagarle ai figli.

Quando si applica SetGID su una directory, tutti i nuovi elementi in quella directory verranno creati con lo stesso gruppo del loro genitore, indipendentemente dall'appartenenza al gruppo predefinito dell'utente.

Per applicare SetGID a un oggetto filesystem, utilizzare chmodcon un 2 davanti al codice di autorizzazione.
(es .: 740 => 2740).

Uso SetGID su molte delle mie condivisioni Samba, in modo che i file abbiano sempre il proprio gruppo Userse qualsiasi membro del gruppo possa leggere i file (di solito uso in 2750modo che solo l'utente proprietario possa scrivere sul file).

Nel tuo caso, esegui qualcosa del genere (sostituisci XXX con le autorizzazioni desiderate):

sudo chown -R  root:ftpandwww /var/www
sudo chmod -R 2XXX /var/www 

Quindi nuovi file e cartelle verranno pubblicati con proprietà simili ftpuser:ftpandwww.

Modificare:

A seconda del tuo caso d'uso, SetGID è probabilmente abbastanza per risolvere il tuo problema, ma se hai problemi continui in cui uno o l'altro utente viene negato, a causa di un'autorizzazione di gruppo errata (ma la proprietà è giusta), allora la tua scommessa migliore è impostare un UMASK personalizzato per l'utente che crea i file .

Se hai difficoltà a impostare l'UMASK per l'utente (perché è un demone), controlla questo thread sulle opzioni per impostare l'UMASK di un utente demone .

Vorrei raccomandare la maschera 007se si desidera che i membri del gruppo siano in grado di scrivere ed eliminare file e nessun privilegio per i non proprietari.


Grazie, proverò questo, quando menzionerai che tutti i file e le cartelle avranno questa proprietà ftpuser: ftpandwww i dati www li serviranno ancora e avranno le autorizzazioni (tramite script) per riscrivere anche nelle cartelle? Grazie ancora.
omega1,

L'effettivo proprietario-utente sarà di fatto l'utente che esegue il processo, a meno che non utilizzi l'autenticazione locale (ma dipende interamente dall'applicazione). In entrambi i casi, la risposta alla tua domanda dipende dalla XXX che scegli di utilizzare. poiché sia ​​wwwdata che ftpdata fanno parte dello stesso gruppo, se si danno 770, quindi sì, entrambi gli account saranno in grado di scrivere sugli oggetti. se gli hai dato 740, tuttavia, solo l'utente proprietario sarebbe in grado di scrivere, ma qualsiasi membro di ftpandwww sarebbe in grado di leggere. Il punto è che stai usando i permessi di gruppo piuttosto che i permessi degli utenti per queste operazioni.
Frank Thomas,
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.