Nextcloud-Stockage-Externe

Nextcloud-Stockage-Externe

Notes › _DIFFUSION

nextcloud, est il possible de synchroniser un dossier externe ? Oui, c’est possible, selon ce que vous appelez « dossier externe ».

Dossier local situé hors du dossier Nextcloud
Le client de bureau Nextcloud permet de créer une synchronisation supplémentaire :

  1. Ouvrez le client Nextcloud.
  2. Allez dans Paramètres → Compte.
  3. Cliquez sur Ajouter une synchronisation de dossier.
  4. Sélectionnez :
    • le dossier local à synchroniser, même sur un autre disque ou une autre partition ;
    • le dossier distant correspondant sur Nextcloud.
  5. Validez la synchronisation bidirectionnelle.

Le dossier doit être accessible en lecture et en écriture par votre utilisateur. Évitez de synchroniser simultanément ce même dossier avec Dropbox, OneDrive, Syncthing ou un autre outil, car cela peut provoquer des conflits.

Dossier externe au serveur
Si le dossier se trouve sur un autre disque, un partage SMB/CIFS, SFTP, FTP ou un autre service cloud, il faut plutôt utiliser l’application Stockage externe de Nextcloud. Un administrateur l’active dans les applications, puis le configure dans Paramètres → Administration → Stockages externes.

À noter : une synchronisation n’est pas une véritable sauvegarde. Une suppression ou une modification accidentelle peut aussi être répliquée sur l’autre côté.

Ce qui veut dire que le dossier externe doit être accessible en lecture écriture par l'utilisateur nextcloud ou autre ? Oui, mais cela dépend de l’emplacement du dossier.
  • Dossier local synchronisé par le client Nextcloud : il doit être accessible en lecture/écriture par l’utilisateur qui exécute le client Nextcloud — généralement votre compte utilisateur, pas forcément l’utilisateur système www-data ou nextcloud.
  • Dossier monté comme stockage externe sur le serveur Nextcloud : il doit être accessible en lecture/écriture par l’utilisateur du serveur web qui exécute Nextcloud, souvent www-data, apache ou http, selon la distribution.
  • Partage SMB, SFTP ou FTP : ce sont les identifiants configurés dans Nextcloud pour ce stockage qui doivent disposer des droits nécessaires sur le partage.

Par exemple, pour un dossier local synchronisé avec le client de bureau, vérifiez les droits avec :

1
ls -ld /chemin/du/dossier

Si le client est lancé par votre utilisateur jean, le dossier doit lui appartenir ou lui accorder les droits adaptés :

1
2
sudo chown -R jean:jean /chemin/du/dossier
chmod -R u+rwX /chemin/du/dossier

Pour un stockage externe configuré côté serveur, ce serait plutôt :

1
sudo chown -R www-data:www-data /chemin/du/dossier

Ne changez toutefois pas le propriétaire de tout le dossier à l’aveugle : si le dossier est partagé avec d’autres services ou utilisateurs, utilisez plutôt les groupes ou des ACL. En pratique, le compte concerné doit avoir lecture, écriture et traversée (x) sur tous les dossiers parents.

Exemple , j'ai un dossier local (situé sur le serveur nextcloud) externe nommé 'extone' avec les droits en lecture/écriture pour 'ushare' , comment le partager avec nextcloud 'www-data' , je suppose acl ? Oui, une ACL est une bonne solution. Elle permet de donner l’accès à www-data sans modifier le propriétaire actuel ushare.

Supposons que le dossier soit :

1
/data/extone

Commencez par vérifier les droits sur tout le chemin :

1
namei -l /data/extone

www-data doit avoir le droit de traversée (x) sur /data et sur tous les répertoires parents.

Accordez ensuite à www-data les droits nécessaires sur le dossier :

1
sudo setfacl -m u:www-data:rwx /data/extone

Pour donner également l’accès aux fichiers et sous-dossiers déjà présents :

1
sudo setfacl -R -m u:www-data:rwX /data/extone

Le X ajoute le droit d’exécution uniquement aux répertoires — et aux fichiers qui sont déjà exécutables.

Pour que les nouveaux fichiers et dossiers héritent automatiquement des droits pour www-data :

1
sudo setfacl -m d:u:www-data:rwX /data/extone

Selon la configuration, il peut être utile de définir aussi l’ACL par défaut pour le groupe propriétaire :

1
sudo setfacl -m d:g::rwX /data/extone

Vérifiez le résultat avec :

1
getfacl /data/extone

Vous devriez voir notamment :

1
2
3
user::rwx
user:www-data:rwx
default:user:www-data:rwx

Si /data n’est pas traversable par www-data, ajoutez uniquement le droit de traversée :

1
sudo setfacl -m u:www-data:x /data

Évitez de donner rwx sur les répertoires parents : x suffit pour permettre l’accès au chemin.

Dans Nextcloud, ajoutez ensuite /data/extone comme Stockage externe → Stockage local. Le chemin doit être accessible depuis le système où tourne Nextcloud, et l’application de stockage externe doit être activée. Ne placez pas ce dossier à l’intérieur du répertoire de données (datadirectory) de Nextcloud et ne le configurez pas en même temps comme dossier synchronisé par le client de bureau.

Vous pouvez tester directement l’accès avec :

1
2
3
sudo -u www-data ls -la /data/extone
sudo -u www-data touch /data/extone/test-nextcloud
sudo -u www-data rm /data/extone/test-nextcloud

Si ces trois commandes fonctionnent, www-data dispose normalement des permissions suffisantes.

Si /data n’est pas traversable par www-data ?

Le droit de traversée (x) sur un dossier permet d’entrer dans ce dossier ou d’accéder à un chemin connu, sans permettre d’en lister le contenu.

Par exemple, pour vérifier :

1
sudo -u www-data ls /data/extone

Si vous obtenez Permission denied, vérifiez le chemin complet :

1
namei -l /data/extone

Pour permettre à www-data de traverser /data sans lui donner le droit de lire son contenu :

1
sudo setfacl -m u:www-data:--x /data

Puis donnez les droits sur le dossier cible :

1
2
3
sudo setfacl -m u:www-data:rwx /data/extone
sudo setfacl -R -m u:www-data:rwX /data/extone
sudo setfacl -m d:u:www-data:rwX /data/extone

Testez ensuite :

1
2
3
sudo -u www-data ls -la /data/extone
sudo -u www-data touch /data/extone/test-nextcloud
sudo -u www-data rm /data/extone/test-nextcloud
Attention :

pour accéder à /data/extone, www-data doit avoir x sur tous les répertoires parents. Si le chemin est par exemple :

1
/mnt stockage/data/extone

il faudra également donner le droit x sur /mnt stockage et /mnt stockage/data.

Pour retirer l’ACL plus tard :

1
2
3
sudo setfacl -x u:www-data /data
sudo setfacl -x u:www-data /data/extone
sudo setfacl -x d:u:www-data /data/extone

L’ACL --x sur /data autorise uniquement la traversée ; www-data ne pourra pas faire ls /data, mais pourra accéder directement à /data/extone s’il connaît le chemin.