Server SFTP multiutenza su CentOS 6

Scenario

Server Web su cui N sviluppatori hanno la necessità di caricare i nuovi contenuti. Poichè tale server risulta già raggiungibile via SSH, si vuole utilizzare il protocollo SFTP per il trasferimento dei file, sostanzialmente per due ragioni:

1) Esporre su Internet il minor numero di porte. Infatti, il protocollo SFTP sfrutta la stessa porta TCP del protocollo SSH (ovvero la 22);

2) SFTP è molto più robusto del File Transfer Protocol (FTP), in quanto garantisce alcuni meccanismi di sicurezza quali confidenzialità e soprattutto autenticazione della fonte.

 

sftp,ssh,user,group,chmod

Inoltre, la directory target di ogni sviluppatore è la medesima ed i file caricati da uno devono essere accessibili in lettura/scrittura da tutti gli altri (tenendo sempre traccia di chi-ha-fatto-cosa, ecco spiegato il perchè della necessità di un server SFTP multiutenza).

Preparazione della macchina

La prima cosa da fare è, ovviamente, creare le utenze per ciascun sviluppatore. E’ possibile fare ciò semplicemente utilizzando il comando useradd:

[root@serverWeb ~]# useradd devel1
[root@serverWeb ~]# useradd devel2
[root@serverWeb ~]# useradd devel3

A questo punto, è necessario settare la password di default per ciascuna utenza. Essa potrà essere modificata in un secondo momento dallo sviluppatore stesso:

[root@serverWeb ~]# echo 'devel1:passworddevel1'|chpasswd
[root@serverWeb ~]# echo 'devel2:passworddevel2'|chpasswd
[root@serverWeb ~]# echo 'devel3:passworddevel3'|chpasswd

Notate che ho utilizzato tale sintassi anzichè il classico comando interattivo:

[root@serverWeb ~]# passwd <nomeutente>

in quanto risulta più comoda nel caso in cui si dovessero creare molte utenze.

A questo punto creiamo il gruppo di che identificherà gli sviluppatori

[root@serverWeb ~]# groupadd web

e facciamo in modo che essi ne facciano parte (modificando il loro gruppo di default che è semplicemente uguale al nome utente scelto):

[root@serverWeb ~]# usermod -g web devel1
[root@serverWeb ~]# usermod -g web devel2
[root@serverWeb ~]# usermod -g web devel3

Infine, modifichiamo la home directory degli utenti appena creati, mediante il comando usermod (consentendo loro di atterrare direttamente sulla dir in cui dovranno essere caricati i contenuti Web):

[root@serverWeb ~]# usermod -d /var/www/html devel1
[root@serverWeb ~]# usermod -d /var/www/html devel2
[root@serverWeb ~]# usermod -d /var/www/html devel3

Posizioniamoci adesso nella dir /var/www/ e lanciamo i seguenti comandi:

[root@serverWeb ~]# chown root:web -R html
[root@serverWeb ~]# chmod 775 -R html
[root@serverWeb ~]# chmod g+s -R html

Con il primo comando abbiamo semplicemente modificato il gruppo proprietario della directory html; con il secondo comando abbiamo fatto in modo che tutti i file (e le subdirectory) garantiscano tutte le operazioni (read, write, execute) all’owner (root) ed al gruppo proprietario (web).

Infine, con il terzo comando, stiamo facendo in modo che qualunque nuovo file o directory che verrà creato all’interno di html abbia come proprietario il gruppo Web.

Configurazione di sshd

Questa è sicuramente “la parte facile” della guida, in quanto è sufficiente inserire una piccola flag all’interno del file di configurazione del demone SSH, ovvero /etc/ssh/sshd_config. In particolare, la entry:

Subsystem       sftp    /usr/libexec/openssh/sftp-server

dovrà diventare:

Subsystem       sftp    /usr/libexec/openssh/sftp-server -u 002

dove -u significa umask e rappresenta i permessi di default dei nuovi file e directory che verranno caricati mediante SFTP.

Riavviamo sshd:

[root@serverWeb ~]# service sshd restart

ed abbiamo finito.

Ora gli sviluppatori ci ringrazieranno.

Alla prossima.

Server SFTP multiutenza su CentOS 6ultima modifica: 2013-10-30T09:54:00+01:00da nazarenolatella
Reposta per primo quest’articolo