2 votes

Comment résoudre l'échec de l'application Fichiers iOS à se connecter au serveur SMB? "Opération non prise en charge" / "un fichier portant le même nom existe déjà"

J'ai rencontré au moins deux problèmes frustrants en essayant de me connecter à un nouveau serveur SMB avec l'application fichiers iOS (menu principal (...) -> se connecter au serveur).

Cela a été fait avec iOS 15.3 (le plus récent à l'écriture) ; ces problèmes ont définitivement également été rencontrés avec des versions plus anciennes d'iOS.

Problème 1: "L'opération n'a pas pu être terminée: Opération non prise en charge"

Cela se produit avec un serveur configuré pour se restreindre à SMB3 et supérieur (SMB3, après tout, existe depuis 2012 seulement).

Les journaux du serveur signalent quelque chose du genre :

smbd_smb2_request_error_ex: idx[1] status[NT_STATUS_NOT_SUPPORTED] || at ../../source3/smbd/smb2_negprot.c

Problème 2: "Le fichier n'a pas pu être enregistré car un fichier portant le même nom existe déjà"

J'ai rencontré ce problème plusieurs fois, généralement lors de la migration d'un ancien serveur SMB vers un nouveau.

Le même problème a été soulevé sur les forums d'Apple avec un bon nombre de "moi aussi" mais aucune solution viable n'a été fournie...

Question: existe-t-il des solutions de contournement/réparations pour ces "bizarreries" de l'application fichiers ?

4voto

sxc731 Points 131

Pour résoudre les deux problèmes de manière optimale, vous aurez besoin d'accéder au serveur SMB en tant qu'administrateur; bien qu'il existe une solution de contournement pour le Problème 2 si vous n'avez pas accès.

Problème 1

Malgré que files.app semble effectuer la plupart de son trafic via le protocole SMB3, certaines activités de connexion initiale semblent fonctionner uniquement si le serveur accepte les requêtes SMB2. Cela nécessite d'ajuster la configuration du serveur (voir ci-dessous).

Problème 2

Solution 1: supprimer la connexion ancienne/conflictuelle au "serveur"

Supprimer une connexion à un ancien serveur qui fournit un partage avec le même nom (files.app -> menu principal (...) -> connecter au serveur -> (i) -> Supprimer) résout le problème.

Cela peut être une solution de contournement si vous n'avez pas accès à la configuration du serveur, même si vous ne pourrez accéder qu'à l'un des serveurs/partages "conflictuels" à la fois, ce qui peut être frustrant.

Solution 2: s'assurer que le nom du partage SMB est unique entre les serveurs

Une meilleure solution de contournement est de veiller à ce que le nom du partage SMB soit unique parmi les connexions stockées/souvenues dans votre files.app. Dans mon cas, la configuration standard de mes serveurs était de les appeler quelque chose comme smbshare; tenter d'accéder à plus d'un serveur avec le même nom de partage provoque le problème, ce qui semble être un bogue dans files.app à mon avis (les noms de partage devraient être qualifiés par le nom du serveur).

Comment ajuster la configuration d'un serveur SMB pour résoudre les deux problèmes

La procédure et l'exemple ci-dessous sont basés sur Ubuntu mais devraient fonctionner de manière similaire sur d'autres dérivés *NIX/*BSD (et NAS) qui utilisent Samba comme logiciel de serveur SMB, bien que les chemins/noms de fichiers puissent être différents :

  1. Connectez-vous à votre serveur SMB et exécutez sudo -i pour accéder aux privilèges root.
  2. Modifiez /etc/samba/smb.conf
  3. Pour le problème 1, vous voudrez vous assurer que server min protocol (généralement trouvé dans la section [global]) est défini sur SMB2.
  4. Pour le problème 2, localisez le nom du partage (placé entre crochets; dans mon exemple [smbshare]) et changez-le en quelque chose d'unique. Par exemple, en incluant le nom de l'hôte, qui peut être raccourci en %h si vous préférez standardiser vos fichiers de configuration.
  5. systemctl restart smbd

Un exemple de smb.conf qui fonctionne avec l'application files iOS

Voici un exemple de smb.conf qui fonctionne bien avec l'application files iOS et qui vise à être raisonnablement sécurisé (SMB est un vecteur d'attaque bien connu!). Les retours - particulièrement s'ils améliorent la sécurité - sont les bienvenus.

[global]
        server string = %h
        server role = serveur autonome
        interfaces = lo eth0
        bind interfaces only = oui
        disable netbios = oui
        smb ports = 445
        log file = /var/log/samba/smb.log
#        log level = 3
        max log size = 1000
        map to guest = bad user
        smb encrypt = requis
        server min protocol = SMB2
        client min protocol = SMB3

[%h]
        valid users = MON_UTILISATEUR_SMB
        path = /home/MON_UTILISATEUR_SMB/PARTAGE
        disponible = oui
        consultable = oui
        lecture seule = non
        force create mode = 0660
        force directory mode = 2770
  • [%h] utilise le nom du serveur comme nom du partage, ce qui résout le problème 2 à lui seul. Il doit simplement être quelque chose d'unique pour contourner le bogue plutôt choquant de files.app.
  • log level = 3 (ou plus) est utile pour augmenter la verbosité des journaux afin de résoudre les problèmes.
  • Vous devrez ajuster interfaces = et MON_UTILISATEUR_SMB selon votre situation (ip link show est votre allié pour découvrir les noms de vos interfaces). Il est possible de laisser de côté les restrictions sur interfaces, mais ce n'est définitivement pas recommandé sur une machine directement exposée à Internet.

Remarque sur le système d'exploitation du serveur

Même si les exemples ci-dessus font référence à un serveur SMB Ubuntu, les mêmes problème(s) semblent exister avec les serveurs Windows (donc les bugs semblent être dans l'application files iOS), comme en témoigne la question des forums Apple liée dans la question.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X