Serveur de fichiers avec Trisquel GNU/Linux

Créé le xx/xx/2024. Modifié le 26/10/2025.

Introduction

Ce guide explique comment configurer le partage d'un dossier sur réseau local avec samba et à distance avec sftp et comment y accéder à partir d'un ordinateur avec GNU/Linux, Windows et MacOS ou d'un téléphone Android ou iOS (Apple).

Avertissements:

  1. Windows et MacOS ne respectent pas votre liberté d'utiliser votre ordinateur comme bon vous semble. Pour y remédier, copiez vos données sur un disque externe et installez Trisquel GNU/Linux.
  2. Android et iOS ne respectent pas votre liberté d'utiliser votre appareil comme bon vous semble. Néanmoins, sur Android, vous pouvez installer le magasin d'applications F-Droid qui ne contient que des applications respectant votre liberté. Ignorez les messages qui vous déconseillent d'installer F-Droid soi-disant pour votre sécurité, votre sécurité est bien mieux garantie avec F-Droid qu'avec Google Play.

Partage sur le réseau local

Configurer le serveur

Installer samba

moi@serveur:~$ sudo apt install samba

Modifier /etc/samba/smb.conf

moi@serveur:~$ sudo nano /etc/samba/smb.conf

/etc/samba/smb.conf

	# Paramètres communs à tous les dossiers partagés

	[global]
	# Je ne suis pas sûr de à quoi ça sert, probablement pas critique
	workgroup = WORKGROUP
	server string = %h server (Samba, Trisquel)

	# Pour les traces, à réfléchir plus amplement
	log file = /var/log/samba/log.%m
	max log size = 1000
	logging = file

	# Action pour avertir en cas de plantage, utilise la commande mail... que je n'ai pas configurée
	panic action = /usr/share/samba/panic-action %d

	# Important, pour cet usage
	server role = standalone server

	# Je ne sais pas trop à quoi ça sert
	obey pam restrictions = yes

	# Cela désactive SMB version. A voir si on pourrait mettre SMB3. 
	min protocol = SMB2
	client min protocol = SMB2

	# Censé permettre de modifier le mot de passe de session quand on
	# modifie le mot de passe samba. Pas testé et pas sûr de l'utilité.
	unix password sync = yes
	passwd program = /usr/bin/passwd %u
	passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully*

	# Je ne sais pas à quoi ça sert exactement.
	pam password change = yes

	# A vérifier
	map to guest = bad user

	
	# Paramètres d'un dossier partagé
	
	[Documents]
	# Commentaire, je ne sais pas où il sera visible
	comment = Fichiers créés par les clients samba

	# Chemin du dossier partagé sur le serveur (pas visible extérieurement)
	path = /opt/partage/Partages/Documents

	# Est-ce que l'on peut regarder le contenu des répertoires? : oui
	browsable = yes

	# Accès invité (sans authentification) : non
	guest ok = no

	# Lecture seule : non (donc ajout et modification possibles)
	read only = no
	
	# Compte utilisateurs autorisés, ici un seule, nommé partage
	valid users = partage

Les éléments suivants doivent être choisis:

Documents nom de dossier visible sur le réseau local
/opt/partage/Partages/Documents chemin du dossier visible sur le serveur
partage le compte utilisateur du serveur qui peut accéder au partage

Une fois le contenu modifié, sauvegarder avec Ctrl+o puis quitter nano avec Ctrl+x.

Notes:

  1. /opt/partage/ sera le dossier de base de l'utilisateur partage. Ici, un sous-dossier de /opt/ est utilisé pour utiliser un disque monté sur /opt.
  2. Partages sera le dossier de base pour sftp. Documents contiendra les fichiers.
  3. Pour sftp, /opt/partage/Partages doit appartenir au superutilisateur et être accessible en écriture uniquement par lui. Documents doit évidemment est accessible en écriture pour partage.

Créer un compte utilisateur pour le partage

moi@serveur:~$ sudo adduser --home /opt/partage partage
	Ajout de l'utilisateur « partage » ...
	Ajout du nouveau groupe « partage » (1001) ...
	Ajout du nouvel utilisateur « partage » (1001) avec le groupe « partage » ...
	Création du répertoire personnel « /opt/partage » ...
	Copie des fichiers depuis « /etc/skel » ...
	Nouveau mot de passe : 
	Retapez le nouveau mot de passe : 
	passwd : mot de passe mis à jour avec succès
	Modifier les informations associées à un utilisateur pour essai
	Entrer la nouvelle valeur, ou appuyer sur ENTER pour la valeur par défaut
	NOM []: Utilisateur pour partage samba
	Numéro de chambre []: 
	Téléphone professionnel []: 
	Téléphone personnel []: 
	Autre []: 
	Ces informations sont-elles correctes ? [O/n]
	moi@serveur:~$

Créer un compte samba avec le même nom d'utilisateur

moi@serveur:~$ sudo smbpasswd -a partage

Par simplicité, entrer le même mot de passe.

Non testé: créer plusieurs utilisateurs en utilisant les commandes précédentes (sans « --home /opt/partage ») et les ajouter dans /etc/samba/smb.conf sur la ligne « valid users = partage », par exemple « valid users = partage alice ».

Créer le répertoire partagé

moi@serveur:~$ sudo mkdir -p /opt/partage/Partages/Documents

Configurer les permissions

moi@serveur:~$ sudo chown root:root /opt/partage
      moi@serveur:~$ sudo chmod u=rwx,og=rx /opt/partage /opt/partage/Partages      
      moi@serveur:~$ sudo chown partage:partage /opt/partage/Partages/Documents
      moi@serveur:~$ sudo chmod u=rwx,og= /opt/partage/Partage/Documents

Redémarrer le service samba

moi@serveur:~$ sudo systemctl restart smbd.service

Obtenir les adresses IP locales du serveur

moi@pserveur:~$ ip -4 -o a |grep -v host | awk '{print $4}' | cut -d/ -f1
	192.168.1.34
      moi@serveur:~$ ip -6 -o a |grep -v host | awk '{print $4}' | cut -d/ -f1	
	fe80::e2e0:5cff:fe0e:6651

A faire:Installer avahi (voir paquet requis exactement) pour utilisation avec le nom

Références

« Setting up samba as standalone server » (wiki de samba)

Accès avec le gestionnaire de fichier

L'exemple suivant utilise caja, le gestionnaire de fichier de l'environnment de bureau MATE (pour GNU/Linux) mais l'accès est aussi possible sur des ordinateurs dont le système d'exploitation ne respecte pas la liberté de l'utilisateur (par exemple Windows, Mac, Android ou iOS). En tapant, après « Aller à » :

smb://adresse IPv4

Fenêtre caja avec smb://192.168.1.34 dans « Aller à »

Cette image est ce qui est visible après l'authentification, montrée dans l'image ci-dessous:

smb://[addresse IPv6]

Fenêtre caja avec smb://[fe80::e2e0:5cff:fe0e:6651192.168.1.34] dans « Aller à »

Monter le partage sur un PC GNU/Linux

« Monter le partage » signifie que les fichiers partagés seront vus comme des fichiers sur un disque de l'ordinateur, à un emplacement prédéfini. L'ordinateur se connecte au partage automatiquement lorsqu'un programme cherche à accéder à cete emplacement.

Installer les paquets nécessaires

moi@mclient:~$ sudo apt install cifs-utils

Créer le dossier qui contiendra les dossiers partagés

Important:

  1. avant de lancer la commande de création, vérifier si le nom choisi n'est pas déjà utilisé pour autre chose.
  2. dans le chemin absolu du dossier, pour chaque dossier, il faut éviter certains caractères, en particulier le tiret « - » et les espaces. Dans le toute, n'utiliser que des chiffres et des lettres en majuscule ou minuscule et sans accents, tréma ou cédille.
On choisit le dossier /media/share :

moi@mclient:~$ sudo mkdir -p /media/share

Créer un fichier .mount dans /etc/systemd/system

Le nom du fichier est entièrement déterminé par le chemin et nom du dossier choisi. Si le dossier choisi est /a/b/c/d, le nom du fichier doit être a-b-c-d.mount. Comme on a choisi /media/share, le nom est media-share.mount

moi@client:~$ sudo nano /etc/systemd/system/media-share.mount

/etc/systemd/system/media-share.mount

      [Unit]
      Description=Dossier partagé
      [Mount]
      What=//192.168.1.34/Documents
      Where=//media/share
      Options=credentials=/root/samba_account,uid=xxxx,gid=yyyy
      Type=cifs
      TimeoutSec=30
      [Install]
      WantedBy=multi-user.target

Les éléments suivants doivent être choisis:

xxxx Compte utilisateur auquel appartiennent les fichiers sur le PC.
Peut être un nom ou une valeur numérique.
Sur Trisquel, la valeur 1000 est utilisée pour le compte utilisateur créé à l'installation.
yyyy Groupe utilisateur auquel appartiennent les fichiers sur le PC
Peut être un nom ou une valeur numérique.
Sur Trisquel, un groupe est créé pour chaque compte utilisateur et la valeur 1000 est utilisée pour le group du compte utilisateur créé à l'installation.
192.168.1.34 l'addresse IP du serveur, obtenue précédemment
Documents le nom de partage dans /etc/samba/smb.conf sur le serveur

Enregistrer avec Ctrl+O et quitter nano avec Ctrl+X

Créer un fichier .automount dans /etc/systemd/system

Le nom du fichier doit être le même que celui du fichier .mount, mais avec l'extension .automount à la place.

moi@client:~$ sudo nano /etc/systemd/system/media-share.automount

/etc/systemd/system/media-share.automount

      [Unit]
      Description=Montage automatique de /media/share
      [Automount]
      Where=/media/share
      [Install]
      WantedBy=multi-user.target

Enregistrer avec Ctrl+O et quitter nano avec Ctrl+X

Créer le fichier des identifiants: /root/samba_account

Avec nano, avec accès uniquement pour le superutilisateur:

moi@client:~$ sudo touch /root/samba_account
      moi@client:~$ sudo chmod 600 /root/samba_account
      moi@client:~$ sudo nano /root/samba_account

Une fois le contenu modifié, sauvegarder avec Ctrl + o, quitter nano avec Ctrl + x.

/root/samba_account

username=partage
      password=4Iz5oBtA0paT2LgkgaKlHpbeFPFr30oA

Les éléments suivants doivent être choisis:

partage le compte utilisateur du serveur qui peut accéder au partage
4Iz5oBtA0paT2LgkgaKlHpbeFPFr30oA Le mot de passe choisi précédement pour l'utilisateur

Activer le montage automatique à chaque démarrage du PC

moi@client:~$ sudo systemctl enable media-share.automount

Activer le montage automatique dès maintenant (sans redémarrer)

moi@client:~$ sudo systemctl start media-share.automount

Cela permet de tester l'accès dès maintenant sans avoir à redémarrer

Accès aux fichiers à distance

Sur le serveur de fichiers

Installer openssh-server

moi@serveur:~$ sudo apt install openssh-server

Sur chaque PC GNU/Linux qui accèdera à distance aux fichiers partagés par le serveur

Installer openssh-client

moi@client:~$ sudo apt install openssh-client

Un brève explication sur les clés ssh

ssh-keygen va créer deux fichier (dans ~/.ssh):
id_25519clé privéeA ne jamais copier sur un autre PC
id_ed25519.pubclé publiqueA copier sur le serveur de fichiers

ssh-copy-id va copier la clé publique dans le fichier des « clés autorisées » sur le serveur, qui aura une clé par ligne, et ressemblera à:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO6/Ha2Cuq3gtBz6z1Et4/bwDvN2DtMO3R/7FEepnbqA alice@pc-maison
      ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDqzkHo0FWwS/fJUGJkSWb4P9Jt6NOcgLJK1oK0YB43d alice@X200-alice
      ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjh44A4EJ3Yr77h2CONDz0it1aPpyleXAAgrGzIltYz bob@T400-bob

Dans cet exemple, quand on a créé une clé pour « alice » sur le PC « X200-alice », on a mis comme commentaire alice@X200-alice. Si on veut supprimer l'accès au serveur pour « alice » à partir de « X200-alice », on supprime la ligne avec alice@X200-alice.

Pour pouvoir distinguer les clés facilement, il faut mettre un commentaire indiquant le compte utilisateur et le PC sur lequel est la clé privée correspondante, comme dans l'exemple.

Dans la commande ssh-keygen, le commentaire choisi se met à la fin de la ligne, après « -C ».

Créer la pair de clés ssh

bob@PC-de-bob:~$ ssh-keygen -t ed25519 -C bob@PC-de-bob
      Generating public/private ed25519 key pair.
      Enter file in which to save the key (/home/bob/.ssh/id_ed25519):

Appuyer sur entrée

Created directory '/opt/bob/.ssh'.
      Enter passphrase (empty for no passphrase):

Choisir un mot de passe (pour simplifier, on peut mettre le mot de passe du compte), puis entrée.

Enter same passphrase again:

Retaper le même mot de passe, puis entrée.

Your identification has been saved in /home/bob/.ssh/id_ed25519
    Your public key has been saved in /home/bob/.ssh/id_ed25519.pub
    The key fingerprint is:
    SHA256:YkpQykDmuN34BlWPwy+OujThsuG3bOksIiGU6L/mO9g bob@PC-de-bob
    The key's randomart image is:
    +--[ED25519 256]--+
    |oo  . .           |
    |+o o o o         |
    |o.= . + .        |
    |.= =   o           |
    |+ = o + S        |
    |oo = = o         |
    |+.B * .          |
    |+BoE             |
    |+.XX=            |
    +----[SHA256]-----+
Toutes ces clés vont apparaître, une par ligne, dans un même fichier. Si on veut pouvoir désactiver l'accès au serveur pour l'un des PCs, il suffit de supprimer la ligne avec cette clé. Pour reconnaître la clé facilement, on peut mettre un commentaire en la créant.

Copier la clé publique sur le serveur

bob@PC-de-Bob:~$ ssh-copy-id partage@192.168.1.34

A faire:Accès par adresse IP publique ou nom, configuration avec caja (mettre le nom d'utilisateur, laisser mot de passe vide, la clé ssh est utilisée automatiquement, on peut utiliser un mot de passe pour la clé ou non, montrer comment mettre un favori).

Limiter les accès sur le serveur

Une fois que tous les accès ont été créés sur les PCs GNU/Linux, on désactive l'accès par mot de passe (seuls les PC avec une clé ssh autorisée pourront se connecter) et on restreint l'accès distant à sftp pour l'utilisateur partage:

$ sudo tee -a /etc/ssh/sshd_config > /dev/null << EOF
							   PasswordAuthentication no
							   Match User partage
							   ChrootDirectory /opt/partage/Partages
							   ForceCommand internal-sftp
							   AllowTcpForwarding no
							   X11Forwarding no
							   EOF
							   

Accès sur un PC windows

Windows est un logiciel privateur: si vous l'utilisez, vous n'avez aucun moyen de contrôler ou même savoir ce que votre ordinateur fait. Pour avoir la possibilité de contrôler ce que fait votre ordinateur, sauvegardez vos données sur un disque dur externe et installez Trisquel à la place de windows.

En attendant, vous pouvez quand même accéder aux fichiers partagés à distance en téléchargeant le logiciel libre FileZilla à partir de cette page.

Pour créer une clé ssh:

A faire:Configuration de FilleZilla avec la clé

Accès sur un appareil Android

Android ne respecte pas votre liberté d'utiliser votre appareil comme bon vous semble mais vous pouvez installer le magasin d'applications F-Droid pour utiliser des applications qui respectent votre liberté.

A faire:Transférer la clé sur le serveur, Configurer client FTP

Sur un appareil iOS (iPhone, iPad)

Avertissement: Apple peut, à tout moment, décider d'empêcher le « propriétaire » d'un iPhone/iPad d'installer certaines application, voire empêcher toutes les application d'avoir accès à fonctions. Il se peut donc que les fonctions décrites ici ne soient soudainement plus disponibles.

Pisth n'est plus sur l'Apple Store et ne semble pas maintenue. Il y a iSH qui est en GPL v3 mais c'est peut-être seulement un terminal. La seule application que j'ai réussi à faire fonctionner est ShellFish, qui est un logiciel privateur. Ca montre à quel point il vaut mieux éviter les téléphones et tablettes Apple.

A faire:Trouver une application avec licence libre pour sftp sur iOS

Sauvegardes

Il y a deux machines:

La configuration décrite permet de sauvergarder serveur sur sauvegarde.

Configurer serveur (partie 1)

Créer une clé ssh pour le compte utilisateur du partage

Dans le dialogue de création de la clé, appuyer sur entrée autant de fois que nécessaire pour retourner à l'invite de commande.

moi@serveur:~$ sudo su - partage
	partage@serveur:~$ ssh-keygen -t ed25519 -C partage@serveur
	  Generating public/private ed25519 key pair.
	  Enter file in which to save the key (/opt/partage/.ssh/id_ed25519): 
	  Created directory '/opt/partage/.ssh'.
	  Enter passphrase (empty for no passphrase): 
	  Enter same passphrase again: 
	  Your identification has been saved in /opt/partage/.ssh/id_ed25519
	  Your public key has been saved in /opt/partage/.ssh/id_ed25519.pub
	  The key fingerprint is:
	  SHA256:YkpQykDmuN34BlWPwy+OujThsuG3bOksIiGU6L/mO9g partage@serveur
	  The key's randomart image is:
	  +--[ED25519 256]--+
	  |oo  . .           |
	  |+o o o o         |
	  |o.= . + .        |
	  |.= =   o           |
	  |+ = o + S        |
	  |oo = = o         |
	  |+.B * .          |
	  |+BoE             |
	  |+.XX=            |
	  +----[SHA256]-----+
	  
	  partage@serveur:~$ cat ~/.ssh/id_25519.pub
	    ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII/Q9Acmn0v+4zMzDsHScz/L5B3kzVaxmHM6e2CcGdxz partage@serveur
	    
	    partage@serveur:~$ exit
	    moi@serveur:~$

Noter la chaîne de caractères en rouge ci-dessus (pas celle dans l'exemple, celle qui apparaît dans le terminal). C'est la clé publique.A la fin, partage@serveur est un commentaire qui permet de se souvenir que c'est la clé publique du compte utilisateur partage sur la machine serveur.

Configurer sauvegarde

Installer les paquets nécessaires

moi@sauvegarde:~$ sudo apt install borg

Créer le compte utilisateur borg (dossier racine du compte à choisir, ici: /opt/borg)

moi@sauvegarde:~$ sudo adduser --home /opt/borg borg
	
	Ajout de l'utilisateur « borg » ...
	Ajout du nouveau groupe « borg » (1001) ...
	Ajout du nouvel utilisateur « borg » (1001) avec le groupe « borg » ...
	Création du répertoire personnel « /opt/borg » ...
	Copie des fichiers depuis « /etc/skel » ...
	Nouveau mot de passe : 
	Retapez le nouveau mot de passe : 
	passwd : mot de passe mis à jour avec succès
	Modifier les informations associées à un utilisateur pour essai
	Entrer la nouvelle valeur, ou appuyer sur ENTER pour la valeur par défaut
	NOM []: Utilisateur borg pour la sauvegarde
	Numéro de chambre []: 
	Téléphone professionnel []: 
	Téléphone personnel []: 
	Autre []: 
	Ces informations sont-elles correctes ? [O/n]
	
	moi@sauvegarde:~$

Créer un dossier sauvegarde pour la sauvegarde dans le dossier racine du compte borg

	moi@sauvegarde:~$ sudo su - borg
	borg@sauvegarde:~$ mkdir sauvegarde 
	  borg@sauvegarde:~$exit
	  moi@sauvegarde:~$
      

Créer un fichier ~/.ssh/authorized_keys pour le compte utilisateur borg

borg@sauvegarde:~$ mkdir .ssh
	borg@sauvegarde:~$ nano .ssh/authorized_keys

.ssh/authorized_keys

	  restrict,command="borg serve --restrict-to-path /opt/sauvegarde/borg" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII/Q9Acmn0v+4zMzDsHScz/L5B3kzVaxmHM6e2CcGdxz partage@serveur

La partie en rouge est la clé publique partage@serveur que l'on a précédemment notée. Enregistrer avec Ctrl+O et quitter nano avec Ctrl+X

Configurer serveur (partie 2)

Installer les paquets nécessaires

moi@serveur:~$ sudo apt install borg borgmatic

Créer le fichier de configuration

moi@serveur:~$ sudo su - partage
	
	partage@serveur:~$ mkdir -p ~/.config/borgmatic && generate-borgmatic-config -d ~/.config/borgmatic/config.yaml
	Generated a sample configuration file at /opt/partage/.config/borgmatic/config.yaml.
	
	This includes all available configuration options with example values. The few
	required options are indicated. Please edit the file to suit your needs.
	
	If you ever need help: https://torsion.org/borgmatic/#issues
	
	partage@serveur:~$ nano .config/borgmatic/config.yaml
      

.config/borgmatic/config.yaml

# Where to look for files to backup, and where to store those backups.
	# See https://borgbackup.readthedocs.io/en/stable/quickstart.html and
	# https://borgbackup.readthedocs.io/en/stable/usage/create.html
	# for details.
      location:
          # List of source directories to backup (required). Globs and
	    # tildes are expanded. Do not backslash spaces in path names.
          source_directories:
          - /opt/partage
      
          # Paths to local or remote repositories (required). Tildes are
	    # expanded. Multiple repositories are backed up to in
	    # sequence.
          repositories:
            - ssh://borg@meet.metani.fr:4983/./borg
	
	# Repository storage options. See
	# https://borgbackup.readthedocs.io/en/stable/usage/create.html and
	# https://borgbackup.readthedocs.io/en/stable/usage/general.html for
	  # details.
	storage:
	    # The standard output of this command is used to unlock the
	    # encryption key. Only use on repositories that were
	    # initialized with passcommand/repokey/keyfile encryption.
	    encryption_passphrase: "n%fcvj,cSQ41sdvzfze"
	
	    # Number of seconds between each checkpoint during a
	      # long-running backup. 
	  
	  #Retention policy for how many backups to keep in each category. See
	  # https://borgbackup.readthedocs.io/en/stable/usage/prune.html for
	  # details. At least one of the "keep" options is required for pruning
	  # to work. To skip pruning entirely, run "borgmatic create" or "check"
	  # without the "prune" action. See borgmatic documentation for details.
	  retention:
	  
	      # Number of daily archives to keep.
	      keep_daily: 7
	  
	      # Number of weekly archives to keep.
	      keep_weekly: 4
	  
	      # Number of monthly archives to keep.
	      keep_monthly: 6
	  
	      # Number of yearly archives to keep.
	      keep_yearly: 1
    

A faire:à terminer

Serveur FTP pour imprimante

Cette partie décrit l'installation d'un serveur FTP permettant l'accès en écriture, permettant ainsi à une imprimante réseau locale d'y mettre avec le protocol FTP des fichiers numérisés. Certains imprimantes réseaux ont cette fonction. Dans ce qui suit, l'imprimante est appelée lexmark. On peut choisir un nom différent et remplacer chaque occurence de lexmark par ce nom.

Configurer le serveur

Créer un compte utilisateur pour l'imprimante

moi@serveur:~$ sudo adduser --home /opt/lexmark lexmark
      Ajout de l'utilisateur « lexmark » ...
      Ajout du nouveau groupe « lexmark » (1002) ...
      Ajout du nouvel utilisateur « partage » (100) avec le groupe « lexmark » ...
      Création du répertoire personnel « /opt/lexmark » ...
      Copie des fichiers depuis « /etc/skel » ...
      Nouveau mot de passe : 
      Retapez le nouveau mot de passe : 
      passwd : mot de passe mis à jour avec succès
      Modifier les informations associées à un utilisateur pour essai
      Entrer la nouvelle valeur, ou appuyer sur ENTER pour la valeur par défaut
      NOM []: Utilisateur pour imprimante lexmark
      Numéro de chambre []: 
      Téléphone professionnel []: 
      Téléphone personnel []: 
      Autre []: 
      Ces informations sont-elles correctes ? [O/n]
      moi@serveur:~$

Interdire l'exécution d'un shell

moi@serveur:~$ sudo usermod -s /usr/sbin/nologin lexmark

Mais permettre l'authentifcation avec PAM

moi@serveur:~$ echo '/usr/sbin/nologin' | sudo tee -a /etc/shells > /dev/null

Créer des répertoires et positionner les permissions

moi@serveur:~$ sudo mkdir -p /opt/lexmark/Scans/scan
      moi@serveur:~$ sudo chmod u=rwx,og=rx /opt/lexmark /opt/lexmark/Scan /opt/lexmark/Scans/scan
      moi@serveur:~$ sudo chown lexmark:lexmark /opt/lexmark/Scans/scan
      moi@serveur:~$ sudo chown root:lexmark /opt/lexmark /opt/lexmark/Scan

Installer vsftpd

moi@serveur:~$ sudo apt install vsftpd

Modifier /etc/vsftpd.conf

moi@serveur:~$ sudo nano /etc/vsftpd.conf

Dans ce qui suit, les modifications du fichier par défaut sont en gras, avec

/etc/vsftpd.conf

	# Run standalone?  vsftpd can run either from an inetd or as a standalone
	# daemon started from an initscript.
	listen=NO
	#
	# This directive enables listening on IPv6 sockets. By default, listening
	# on the IPv6 "any" address (::) will accept connections from both IPv6
	# and IPv4 clients. It is not necessary to listen on *both* IPv4 and IPv6
	# sockets. If you want that (perhaps because you want to listen on specific
	# addresses) then you must run two copies of vsftpd with two configuration
	# files.
	listen_ipv6=YES
	#
	# Allow anonymous FTP? (Disabled by default).
	anonymous_enable=NO
	#
	# Uncomment this to allow local users to log in.
	local_enable=YES
	#
	# Uncomment this to enable any form of FTP write command.
	write_enable=YES
	#
	# Default umask for local users is 077. You may wish to change this to 022,
	# if your users expect that (022 is used by most other ftpd's)
	#local_umask=022
	#
	# Uncomment this to allow the anonymous FTP user to upload files. This only
	# has an effect if the above global write enable is activated. Also, you will
	# obviously need to create a directory writable by the FTP user.
	#anon_upload_enable=YES
	#
	# Uncomment this if you want the anonymous FTP user to be able to create
	# new directories.
	#anon_mkdir_write_enable=YES
	#
	# Activate directory messages - messages given to remote users when they
	# go into a certain directory.
	dirmessage_enable=YES
	#
	# If enabled, vsftpd will display directory listings with the time
	# in  your  local  time  zone.  The default is to display GMT. The
	# times returned by the MDTM FTP command are also affected by this
	# option.
	use_localtime=YES
	#
	# Activate logging of uploads/downloads.
	xferlog_enable=YES
	#
	# Make sure PORT transfer connections originate from port 20 (ftp-data).
	connect_from_port_20=YES
	#
	# If you want, you can arrange for uploaded anonymous files to be owned by
	# a different user. Note! Using "root" for uploaded files is not
	# recommended!
	#chown_uploads=YES
	#chown_username=whoever
	#
	# You may override where the log file goes if you like. The default is shown
	# below.
	#xferlog_file=/var/log/vsftpd.log
	#
	# If you want, you can have your log file in standard ftpd xferlog format.
	# Note that the default log file location is /var/log/xferlog in this case.
	#xferlog_std_format=YES
	#
	# You may change the default value for timing out an idle session.
	#idle_session_timeout=600
	#
	# You may change the default value for timing out a data connection.
	#data_connection_timeout=120
	#
	# It is recommended that you define on your system a unique user which the
	# ftp server can use as a totally isolated and unprivileged user.
	#nopriv_user=ftpsecure
	#
	# Enable this and the server will recognise asynchronous ABOR requests. Not
	# recommended for security (the code is non-trivial). Not enabling it,
	# however, may confuse older FTP clients.
	#async_abor_enable=YES
	#
	# By default the server will pretend to allow ASCII mode but in fact ignore
	# the request. Turn on the below options to have the server actually do ASCII
	# mangling on files when in ASCII mode.
	# Beware that on some FTP servers, ASCII support allows a denial of service
	# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
	# predicted this attack and has always been safe, reporting the size of the
	# raw file.
	# ASCII mangling is a horrible feature of the protocol.
	#ascii_upload_enable=YES
	#ascii_download_enable=YES
	#
	# You may fully customise the login banner string:
	#ftpd_banner=Welcome to blah FTP service.
	#
	# You may specify a file of disallowed anonymous e-mail addresses. Apparently
	# useful for combatting certain DoS attacks.
	#deny_email_enable=YES
	# (default follows)
	#banned_email_file=/etc/vsftpd.banned_emails
	#
	# You may restrict local users to their home directories.  See the FAQ for
	# the possible risks in this before using chroot_local_user or
	# chroot_list_enable below.
	#chroot_local_user=YES
	#
	# You may specify an explicit list of local users to chroot() to their home
	# directory. If chroot_local_user is YES, then this list becomes a list of
	# users to NOT chroot().
	# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
	# the user does not have write access to the top level directory within the
	# chroot)
	chroot_local_user=YES
	local_root=/opt/lexmark/Scans
	#chroot_list_enable=YES
	# (default follows)
	#chroot_list_file=/etc/vsftpd.chroot_list
	#
	# You may activate the "-R" option to the builtin ls. This is disabled by
	# default to avoid remote users being able to cause excessive I/O on large
	# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
	# the presence of the "-R" option, so there is a strong case for enabling it.
	#ls_recurse_enable=YES
	#
	# Customization
	#
	# Some of vsftpd's settings don't fit the filesystem layout by
	# default.
	#
	# This option should be the name of a directory which is empty.  Also, the
	# directory should not be writable by the ftp user. This directory is used
	# as a secure chroot() jail at times vsftpd does not require filesystem
	# access.
	secure_chroot_dir=/var/run/vsftpd/empty
	#
	# This string is the name of the PAM service vsftpd will use.
	pam_service_name=vsftpd
	#
	# This option specifies the location of the RSA certificate to use for SSL
	# encrypted connections.
	rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
	rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
	ssl_enable=NO
	
	#
	# Uncomment this to indicate that vsftpd use a utf8 filesystem.
	#utf8_filesystem=YES

	userlist_enable=YES
	  userlist_deny=NO
	  check_shell=NO

Créer la liste des utilisateurs autorisés

moi@serveur:~$ sudo tee -a /etc/vsftpd.user_list > /dev/null << EOF
							   # vsftpd userlist
							   # If userlist_deny=NO, only allow users in this file
							   # If userlist_deny=YES (default), never allow users in this file, and
							   # do not even prompt for a password.
							   # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
							   # for users that are denied
							   lexmark
							   EOF
													 

Relancer le serveur

moi@serveur:~$ sudo systemctl daemon-reload
      moi@serveur:~$ sudo systemctl restart vsftpd.service

Configurer un partage local

Appliquer les instructions précédentes pour avoir un partage local de Scans.

Configurer l'imprimante

Pour une Lexmark CX310de, se connecter à l'imprimante via un navigateur web et aller à
Paramètres->Gérer les raccourcis->Configuration des raccourcis FTP

Remplir les paramètres suivants:

Nom Le nom qui apparaîtra sur l'imprimante.
Serveur L'adresse IPv4 du serveur.
Connexion lexmark
Mot de passe Le mot de passe de l'utilisateur lexmark
Chemin d'accès et nom de fichier /scan/
Raccourcis Mettre un chiffre (détermine l'ordre du raccourci dans la liste des raccourcis

Licence: GNU FDL version 1.3 ou ultérieure

SPDX-License-Identifier: GFDL-1.3-or-later