Monter un share via samba/cifs sous Debian/Ubuntu

Comme avec tous mes petits billets, j’espère ici épargner deux heures de souffrances aux sysadmins qui doivent monter un drive “share” (par exemple un backup ftp de chez OVH) en CIFS.

Un tutoriel sommaire existe chez OVH, qui ne parle pas des pré requis. De plus certaines choses imposées dans l’exemple ne sont pas expliquées.

Pour ce qui est du backup FTP d’OVH, pour l’utiliser en CIFS :

  1. Avant toute chose, activez le backup dans votre Manager
  2. Ensuite, activez les accès CIFS
  3. Les changements prennent un certain temps a se propager

Ensuite vous recevrez un email avec un serveur, un chemin, un login et un pass.

Notez que les accès ci dessus sont par défaut limités à l’IP du serveur pour lequel existe un contrat de backup. Songez bien aux conséquences de ceci ; il vous sera impossible de vous connecter à votre espace backup depuis votre domicile. Si vous avez plusieurs serveurs, songez dès le départ a créer des accès croisés ( serveur 1 doit avoir accès aux backups du serveur 2, si le serveur 1 doit servir de fail over/drp)

Préalables pour monter du CIFS

Par défaut sous linux, vous ne savez pas monter un share “samba” (CIFS) en ligne de commande sans installer de package supplémentaire. Vérifiez toujours si vous avez la commande “mount.cifs” (avec l’auto complete en tapant “mou” puis TAB). Si elle n’est pas dans les suggestions, vous ne pouvez pas monter un drive CIFS en shell.

L’erreur classique à ce stade est d’installer le package smbclient ou samba. Ca va complètement pourrir votre système : smbclient recommande winbind, et winbind recommande samba server. Vous allez vous retrouver a installer 50 packages et avoir un daemon qui écoute tout ca pour monter un share.

Sous Debian ; installez uniquement “cifs-utils“. Mais ce n’est pas encore assez : lui aussi possède une armée de packages recommandés complètement débiles. Donc il faut le faire en précisant que vous ne voulez PAS installer les recommandations ;

apt-get --no-install-recommends install cifs-utils

Avec ceci vous devriez à la fois avoir un système propre, et la capacité de monter les drives CIFS depuis le shell.

Pour prendre le cas des backups ftp de OVH, voici la commande qui permet quasiment à coup sûr de monter un share CIFS de chez OVH

mount.cifs //ftpback-rbxA-XYZ.ovh.net/ns1234567.ip-111-33-333.eu /mnt/ -o defaults,username=blah,password=blah,sec=ntlm

Ou en format fstab, a placer donc en dernière ligne de /etc/fstab pour un montage au boot;

//ftpback-rbxA-XYZ.ovh.net/ns1234567.ip-111-33-333.eu /mnt/ cifs defaults,username=ced,password=ced,sec=ntlm 0 0

Remarque au passage ; j’utilise des slashes dans fstab. L’usage de backslashes dans fstab fonctionne très bien sous RHEL ou CentOS, et devrait être à mon avis supporté sous debian. Mais sous Debian/Ubuntu un bug jamais résolu et depuis considéré comme “normal” fait que les backslashes devant un nom d’hote sont escapées au boot (  \ devient \\ ) et fstab ne montera donc pas un share avec \\share au boot ( CIFS VFS: Malformed UNC in devname dans dmesg )  Mais il les montera sans problème après le boot avec mount -a sans faire d’erreur ! La doc de mount précise d’ailleurs que des backslashes en nom d’hote seront transformées en slashes.

Je ne suis pas d’accord avec l’analyse des maintainer de Debian, d’autant qu’encore une fois des backslashes sont supportées tant en shell Debian qu’en fstab sous RHEL… Fin de l’aparté.

Ma commande de montage est différente de celle proposée par OVH, pourquoi ?

  • Le type de securité ntlmv2, n’est plus supporté par OVH. Si on l’active, ca ne connecte tout simplement pas ( mount error(22): Invalid argument
    Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) ) . Chez OVH ca connecte en ntlm, cependant gardons à l’esprit que le support ntlm a été supprimé des kernels >3.8.
  • Je précise un login et un pass complètement bidon (“blah”) uniquement pour montrer que OVH… Se contrefout du login/pass que vous allez entrer. Visiblement la seule protection mise en place est un contrôle IP, le login pass envoyé par mail n’est tout bonnement pas utilisé. Par contre il faut en mettre un. (Eux ils mettent “root” sans password, mais sans préciser pourquoi.)

On peut aussi aller un peu plus loin (ici en format FSTAB)

//ftpback-rbxA-XYZ.ovh.net/ns1234567.ip-111-33-333.eu /mnt/ cifs defaults,username=blah,password=blah,sec=ntlm,uid=1001,gid=1001,rw,_netdev 0 0
  • Ici je précise un uid et un gid ; c’est a dire a quel user/group va appartenir le point de montage. OVH le met également dans son exemple linux, et monte en root:users sans dire à quoi ca sert. Moi j’ai mis 1001, qui a priori est le premier utilisateur ajouté manuellement ; c’est un exemple. Si vous avez un user non privilégié qui fait des backups (ici le 1001) il pourra écrire dans le share sans être root.
  • Si vous ne précisez rien dans les uid/gid, comme dans mon premier exemple et sous debian, ca sera monté en “uuid:users” (100:100). A noter d’ailleurs que le gid=100 précisé par OVH ne sert a rien, car c’est le défaut. Mais peut être n’est ce pas le cas ailleurs que sous debian.
  • J’ai ajouté _netdev, qui ne peut pas faire de tort, ca précise qu’on a besoin que les interfaces réseau soient “up” avant de monter.

Comment opérer le point de montage

Vous pouvez démonter le point de montage (il faut d’abord en sortir) via umount /mnt

Si vous avez ajouté une ligne au fstab, vous pouvez la tester sans “tout rebooter” en faisant un mount -a ; ce qui demande de remonter tout. (Ce qui ne l’était pas le sera et une petite erreur sera parfois crachée pour ce qui était déjà monté.)

Un “mount -t cifs” (sans rien d’autre) vous montrera si votre share CIFS est bien branché et où il est monté.

Dernière remarque ; il me semble (je n’ai pas pu obtenir confirmation par OVH ) qu’il existe une sorte de mécanisme de protection qui va vous bloquer votre IP si vous faites trop d’erreurs de connexion.

Une réflexion au sujet de « Monter un share via samba/cifs sous Debian/Ubuntu »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *