Outils pour utilisateurs

Outils du site


serveurs:sftp

SFTP

Protocole

SFTP est un protocole permettant d'accéder à des fichiers et répertoires sur une machine disposant d'un serveur SSH. En cela, il offre à qui l'utilise les mêmes droits sur la machine que ceux qui appartiennent à l'utilisateur auquel on se connecte. C'est-à-dire que si l'utilisateur tintin sur le serveur dispose d'un jeu de permissions donné sur un répertoire, celui-ci sera conservé lorsqu'on accédera au répertoire par une connexion SFTP via cet utilisateur.

Il est donc possible de définir une politique de partage basée sur les permissions d'accès des répertoires et fichiers.

Création des utilisateurs adéquats

Les partages seront accessibles à différentes personnes à qui il convient d'offrir un accès au serveur. Pour cela, il est logique de leur réserver un compte UNIX.

root@serveur:~# adduser tintin
root@serveur:~# adduser milou

Faute de clefs SSH, il faudra entrer le mot de passe à la connexion lorsqu'il sera question de se connecter par SFTP.

À cette occasion, il peut également être utile de créer un groupe dédié à rassembler les utilisateurs autorisés sur les partages.

root@serveur:~# addgroup moulinsart
root@serveur:~# adduser milou moulinsart
root@serveur:~# adduser tintin moulinsart

Préparation des partages

Les répertoires partagés doivent appartenir à des utilisateurs/groupes particuliers afin d'influer sur le type d'autorisations offerts aux utilisateurs.

Supposons que l'on souhaite créer deux types de partage :

  • l'un accessible à tous en lecture, nommé “lecture” ;
  • l'autre accessible au groupe en écriture, comme “ecriture”.
# chown -R tintin:moulinsart /srv/data/*
# chown -R g+w /srv/data/ecriture/

De cette façon, les fichiers du répertoire “ecriture” pourront être lus et écrits par chaque membre du groupe moulinsart. Si vous n'avez pas accordé ces droits au répertoire “lecture”, il ne pourra pas être modifié par les membres du groupes.

En résumé, la connexion SFTP respectera les droits Unix des fichiers d'où l'importance de ces ajustements qu'il vous faudra adapter à vos besoins.

SSHFS

Installation de SSHFS sur les clients

Chaque client doit installer le paquet SSHFS et ajouter son utilisateur fétiche au groupe fuse afin de lui permettre de monter des systèmes de fichiers virtuels.

# aptitude install -y sshfs
# addgroup [tintin|milou] fuse

Si l'on est déjà connecté avec cet utilisateur, il faudra se reconnecter pour que le nouveau groupe soit pris en compte. On peut afficher les groupes auxquels un utilisateur appartient en lui faisant exécuter la commande “groups”.

Puis, il faut créer un point de montage pour chaque partage. J'ai l'habitude de créer ceux-ci dans le répertoire /media. Le point de montage devra appartenir à l'utilisateur qui veut l'utiliser.

# mkdir -p /media/sshfs/{ecriture,lecture}
# chown [tintin|milou]: /media/sshfs/ecriture /media/sshfs/lecture

Tout est prêt, le répertoire distant peut désormais être monté en local grâce à la commande sshfs, comme suit :

# sshfs tintin@serveur:/srv/data/ecriture/ /media/sshfs/ecriture/

Notons à cette occasion qu'il est probable que les UID et GID seront différents entre les clients et le serveur pour un “même utilisateur”. C'est la raison pour laquelle des valeurs erronées (ou même des valeurs numériques) pourront apparaître à la place des noms du propriétaire et du groupe d'un fichier. Il est cependant inutile d'y prêter attention car ce sont bien les propriétaires et groupes des fichiers sur le serveur qui auront de l'importance, et c'est via ces utilisateurs que les connexions SSH sont établies… En harmonisant les UID et GID des utilisateurs et groupes impliqués (en changeant manuellement leurs valeurs), aussi bien sur le serveur que sur les clients, il est possible d'y remédier mais cela n'a que peu d'intérêt.

Montage automatique des partages SSHFS

Pour que les partages SSHFS soient montés automatiquement sur les postes clients, il est possible d'utiliser le programme autofs qu'il faut alors installer sur chaque machine.

# aptitude install -y autofs

Avec autofs, c'est l'utilisateur root du poste client qui procédera au montage du partage : c'est pourquoi il faut lui autoriser l'accès au compte utilisateur sur le serveur. Cependant, il a besoin d'établir la connexion en utilisant une clef privée SSH. Ainsi, il faudra bien entendu copier sa clef publique dans les clefs autorisées par l'utilisateur de destination sur le serveur. Il faut prendre garde à établir une première connexion SSH afin d'inclure la destination dans les hôtes connus (faute de quoi le montage SSHFS échouera sans laisser d'indice sur ce qui le gêne).

D'autres documentations spécialisées expliqueront cette démarche plus en détail.

Configurons désormais SSHFS sur chaque poste client en éditant le fichier /etc/auto.master :

/media/sshfs    /etc/auto.sshfs --timeout=30

Cette instruction prévoit l'exécution de la configuration auto.sshfs lorsqu'un répertoire est demandé dans /media/sshfs. Voici le fichier en question (à adapter selon le client pour contacter un utilisateur précis sur le serveur, évidemment) :

ecriture -fstype=fuse,port=22,rw,allow_other :sshfs\#tintin@serveur\:/srv/data/ecriture/
lecture  -fstype=fuse,port=22,rw,allow_other :sshfs\#tintin@serveur\:/srv/data/lecture/

Enfin, il ne reste qu'à redémarrer le service autofs pour que les partages soient montés automatiquement lors de chaque tentative d'accès aux répertoires de /media/sshfs.

# service autofs restart
serveurs/sftp.txt · Dernière modification: Tue Oct 18 23:33:37 2011 par fifou