Patrice Ferlet
Patrice Ferlet
Créateur de ce blog.
Publié le avr. 11, 2016 Temps de lecture: 5 min

Me suivre sur Mastodon

Monter un partage webdav sharepoint sur Linux

Quand on m’a posé cette question, au boulot, chez un client “full Microsoft”, j’ai bêtement cru que tout allait se passer comme sur des roulettes. Et en fait non… Alors, comment créer un point de montage Microsoft sharepoint (qui utilise webdav) sur Linux avec le moins de douleur ? La solution est expliquée ici.

On prépare la machine

D’abord, il vous faut “davfs2”. Je ne sais pas comment ça se passe sur Ubuntu mais sur Fedora je passe par la ligne:

sudo dnf install davfs2 Quand ce paquet est installé, je passe mon utilisateur dans le groupe “davfs2”

sudo usermod -a -G davfs2 $USER

Maintenant, deux possibilités:

  • soit vous reconnectez votre utilisateur à sa session Gnome (quitter, revenir)
  • soit vous ouvrez un nouveau shell avec la commande bash su - VOTRE_USER

Le fait est qu’à partir de là, il faudra que le shell soit au courant que votre utilisateur est dans le groupe “davfs2”, et malheureusement sous UNIX/Linux il faut “reloguer” le compte. C’est-à-dire “ouvrir une nouvelle session”.

Premier test

Normalement, vous devez connaitre l’adresse Web du sharepoint. On va prendre un exemple: http://monsharepoint/Sites/

Si tout va bien, vous avez accès à un dossier, on doit donc être capable de visiter http://monsharepoint/Sites/MonDossier

Bref, le but maintenant c’est de monter cet espace dans un répertoire local.

On va créer un répertoire “sharepoint” et monter le dossier dedans.

mkdir -p ~/sharepoint
sudo mount -t davfs  http://monsharepoint/Sites/MonDossier ~/sharepoint -o user,rw,nosuid,noauto,uid=$(id -u),gid=$(id -g)

Normalement, la commande vous demande:

  • votre mot de passe pour sudo
  • votre compte de domaine (compte active directory)
  • votre mot de passe de domaine

Et, malgré un warning, vous devriez avoir des fichiers dans le répertoire “~/sharepoint”.

Si tout est ok, on va passer au mode “automatique”. Démontez le dossier avant de passer à la suite:

sudo umount ~/sharepoint

Automatisation

C’est bien beau de taper une ligne de commande longue comme une compilation Java, mais on a pas envie de se taper constamment un login et un mot de passe tous les jours, juste pour monter le dossier. Bref, l’idée est de créer un point de montage propre qui, en plus, permettra de ne pas se battre avec les uid/gid.

Et en plus, on pourra se passer de “sudo”, elle est pas belle la vie ?

On va donc éditer le fichier “/etc/fstab”. Partons du principe que je suis l’utilisateur “FOO”, vous aurez donc à remplacer “FOO” par votre nom d’utilisateur:

http://monsharepoint/Sites/MonDossier /home/FOO/sharepoint davfs noauto,user 0 0

Petit rappel: les zéros veulent dire, dans l’ordre:

  • pas de montage au démarrage de la machine
  • si le montage plante, on s’en fout

Bref, tout ça ne suffit pas.

Dans un terminal, créez un répertoire “~/.davfs2” dans lequel on place un fichier “secrets” qui ne doit être lisible que par l’utilisateur:

mkdir ~/.davfs2
touch ~/.davfs2/secrets
chmod 600 ~/.davfs2/secrets

Maintenant éditez ce fichier et entrez les informations suivantes:

/home/FOO/sharepoint LOGIN_AD PASS_AD 

Dans ces lignes, remplacez bien:

  • FOO par votre nom d’utilisateur Linux
  • LOGIN_AD par votre login sur le domaine
  • PASS_AD par votre mot de passe sur le domaine

On y est !

Tapez maintenant:

mount ~/sharepoint

Hop, plus de sudo, plus de mot login/pass à taper. C’est sympa hein !

Automatiser le tout

Reste que vous avez certainement envie de monter ce dossier automatiquement.

Si vous mettez un “1” à la place du premier “0” dans le fichier “/etc/fstab” alors il peut que ça fonctionne. Mais personnellement j’ai plusieurs utilisateurs sur mon pc et je préfère que le montage se fasse au login de mon utilisateur et seulement si il n’est pas déjà monté.

Il y a deux méthodes. La première utilise la commande “mountpoint” que je trouve fabuleusement utile mais qui peut ne pas exister sur votre système; la seconde méthode utilise “mount” combiné à “grep”.

Pensez à bien adapter les commandes et scripts à votre installation !

Ici “sharepoint” est le nom du répertoire, mais cela peut tout aussi bien être un mot contenu dans l’url webdav qui identifie, de manière unique, ce point de montage. Bref, je vous fais confiance.

Méthode avec “mountpoint”

Dans “~/.bashrc“:

mountpoint -q ~/sharepoint || mount ~/sharepoint

Sinon pour les utilisateurs de “fish”, dans “~/.config/fish/config.fish“:

mountpoint -q ~/sharepoint; or mount ~/sharepoint

Méthode avec “Mount” et “Grep”

Si vous n’avez pas la commande “mountpoint” vous pouvez quand même vous débrouiller en combinant “mount” et “grep”.

Dans “~/.bashrc“:

mount | grep sharepoint 2>&1 >/dev/null || mount ~/sharepoint &

Sinon pour les utilisateurs de “fish”, dans “~/.config/fish/config.fish“:

mount | grep sharepoint 2>&1 >/dev/null; or mount ~/sharepoint &

Et donc…

Bha, ça fonctionne. C’est ce qu’on demandait.

Bilan

Peu de documentation, bien que le manpage de “mount.davfs” est particulièrement fourni, il faut se creuser les méninges avant de comprendre ce qui foire.

Par exemple, ici, on a eut ce genre de problème:

  • certains utilisateur ont besoin de renseigner leur “utilisateur” avec le domaine (domain\username)
  • si on montre un répertoire “trop haut”, alors l’accès est refusé ouvrir un fichier xlsx ou docx demande “deux ouvertures”, une qui plante avec une erreur “entrée/sortie”, et une qui enfin fonctionne

Bref, je ne sais pas si c’est WebDav ou Active Directory mais franchement c’est pas la technologie du siècle, et Linux souffre fortement d’une absence de support en ce qui concerne ce protocole.

Soit dit en passant, il parait que Nautlilus, le navigateur de fichier Gnome, arriverait à ouvrir un emplacement Webdav avec un “scheme” de la forme “dav://“. L’explication est sur ce site. Mais ça refuse de fonctionner chez moi, certainement une histoire de certificat ou je ne sais quoi…

Le souci n’est pas webdav en soi. J’ai testé à la maison avec un montage webdav simple (apache) et je n’ai pas eut de souci. Inutile d’utiliser un point de montage, nautilus fonctionne bien. C’est bel et bien une des deux raisons ci-dessous qui est la cause de tous nos soucis:

  • l’installation est pas bonne
  • Microsoft ne sait pas utiliser correctement le protocole

Misez sur la raison qui vous semble la plus juste :)

Ressources

comments powered by Disqus