Creare uno spazio FTP condiviso tra due utenti

Creato il 23 gennaio 2012 da Nightfly

Qualche giorno fa ho dovuto creare una directory FTP condivisa tra me ed un mio collega, da utilizzare come punto di riferimento per l'upload/download delle pagine Web che stiamo realizzando.

Ecco la procedura:

per prima cosa occorre creare un gruppo, denominato gruppoweb, in cui inserire il nostro nome utente e quello utilizzato dal nostro collega.

Nella fattispecie, il comando da lanciare è il seguente:

nightfly@nightbox:~$ sudo groupadd gruppoweb

Successivamente è necessario aprire in scrittura il file /etc/group aggiungendo la seguente entry:

gruppoweb:x:1006:vostroutente,utentecollega

Dopodichè si devono apportare delle piccole modifiche al file di configurazione del demone FTP attivo sulla nostra Linux box (assumendo che si tratti di vsftpd). Tali modifiche riguardano il parametro umask e l'aggiunta della direttiva file_open_mode (il cui valore di default è 0666):

file_open_mode=0777
local_umask=0002

Così facendo tutti i file caricati mediante FTP avranno come permessi di default 775.

A modifica completata riavviamo il demone vsftpd:

nightfly@nightbox:~$ sudo service vsftpd restart

Infine, occorre scaricare un piccolo applicativo in grado di lanciare un determinato comando al verificarsi di un evento (trigger) nella directory da esso monitorata. Tale software prende il nome di incrond:

nightfly@nightbox:~$ sudo apt-get install incrond

Ad installazione avvenuta si dovrà rimuovere il file /etc/incron.allow (poichè insicuro, dato che per default tutti gli utenti possono utilizzare incrond):

nightfly@nightbox:~$ sudo rm /etc/incron.allow

e successivamente tale file dovrà essere ricreato con privilegi di root:

nightfly@nightbox:~$ su root
Password:
root@nightbox:/home/nightfly# nano /etc/incrond

aggiungendo la direttiva:

root

A modifica completata soltanto root potrà utilizzare incrond.

Ora dobbiamo fare in modo che ad ogni modifica di una pagina preesistente oppure ad ogni upload di un nuovo file, venga lanciato il comando chown per definire il gruppo proprietario, ovvero gruppoweb.

Configuriamo dunque tale regola su incrond, lanciando il comando:

root@nightbox:/home/nightfly# incrontab -e

e successivamente modificando il file appena aperto nel seguente modo:

/var/www/dirshared/ IN_MODIFY,IN_CREATE chown :gruppoweb -R $@

dove la wildcard $@ rappresenta la directory monitorata (ovvero /var/www/dirshared).

Verifichiamo che la configurazione sia stata aggiornata digitando:

root@nightbox:/home/nightfly# incrontab -l

ed abbiamo finito.

A presto.

PS: sicuramente vi starete chiedendo perchè non ho creato un unico utente per accedere allo spazio FTP condiviso... bhè la risposta è semplice: perchè voglio controllare (e loggare) le operazioni effettuate da ciascun utente.