web-dev-qa-db-fra.com

SMBClient peut accéder au contenu de l'action Windows, Mount.Cifs ne peut pas

J'ai reçu un compte sur un serveur de fichiers Windows. La situation (à moi) très étrange est que

  • Je peux me connecter avec smbclient, changer le sous-répertoire (profond) ou montrer son contenu
  • Je peux monter la part (aucun message d'erreur; le point de montage est en /proc/mounts) Mais je ne peux pas changer au même chemin ni énumérer son contenu. Je reçois No such file or directory.

Je n'ai ni "contenu d'affichage" ni "ne changer" la permission pour les sous-répertoires de niveau inférieur. Cela ne devrait pas être un problème et ce n'est pas pour smbclient.

L'administrateur Windows a donné à mes autorisations supplémentaires à mon utilisateur afin que je puisse maintenant voir le contenu du point de moût. Et maintenant, je peux atteindre les sous-répertoires de niveau plus profonds via le mont.

Nous n'avons pas encore déterminé ce que l'ensemble minimal des autorisations de Windows est que nous avons besoin pour que cela fonctionne dans la configuration actuelle. Cependant, le problème doit être du côté Linux de toute façon.

  • Quelles sont les différences entre les moyens de savoir comment smbclient et mount.cifs Accéder à une action Windows?
  • Comment puis mount.cifs être fait pour se comporter comme smbclient?

conclusion

J'ai eu l'administrateur Windows réinitialisé les autorisations de la part afin de pouvoir tester les suggestions dans les réponses. Malheureusement, le problème a disparu. Comme avant, je ne peux pas voir le contenu de la part mais maintenant, le mont peut maintenant accéder aux sous-répertoires profonds. Très étrange.

Une remarque @Intika: J'allais faire une prime supplémentaire pour votre réponse, mais que je faisais ainsi vous pour une raison quelconque a supprimé votre réponse ...

réponses aux commentaires et réponses

Windows Server

Server 2016, SMB 3.1.1

Version de samba

4.5.16; pas un membre du domaine

commandes utilisées

  • /etc/fstab: //fs-p01.dnsdomain/Data /data cifs credentials=/root/fs-p01.credentials 0 0
  • smbclient //fs-p01.dnsdomain/Data -U username -W windowsdomain

Je viens de comprendre que windowsdomain dans la commande smbclient était incomplète. Probablement pas pertinent comme cela fonctionne. C'était juste name au lieu de name.local. Cependant, c'est une différence dans la configuration entre les commandes. Malheureusement, je ne peux pas vérifier si mount fonctionnerait si j'utilise le mauvais domaine avec elle car je ne peux pas modifier les autorisations sur le serveur Windows sur leurs paramètres d'origine. Je dois attendre que les admins Windows fassent cela lundi.

sentiers

La longueur du chemin dans la part est de 85 caractères pour l'annuaire que je souhaite travailler. Je devrais être en mesure d'accéder à son parent aussi, c'est-à-dire encore moins:

xxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/2020/2020_06

fichiers de configuration

/root/fs-p01.credentials

username=username
password=...
domain=name.local

/etc/smb/smb.conf (probablement pas pertinent pour les fonctions des clients)

[global]
   workgroup = MERCHANTINVOICE
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   # panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   passdb backend = tdbsam
   encrypt passwords = yes
   unix password sync = no
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = no
   map to guest = bad user
   usershare allow guests = no
4
Hauke Laging

Comme Intika a indiqué dans le commentaire, vous n'avez pas donné suffisamment de détails.

Limitations de chemin

Vous pouvez peut-être frapper la infâme 260 limitation maximale du chemin de chemin . Il existe une manière unicode d'accéder à l'API, qui a un 32 767 Limitation. Dans Windows World, cela dépend si vous y accédez comme \\server\share (La limite 260 s'applique) ou \\?\UNC\server\share (La limite 32767 s'applique).

Maintenant, la question est, combien de temps est votre chemin que vous souhaitez énumérer. La deuxième question est laquelle smbclient utilise vs mount.cifs.

Citant de la smbclient pages de l'homme:

sMBClient prend en charge les noms de fichiers longs où le serveur prend en charge le protocole LANMAN2 ou supérieur.

Alors que je n'ai pas pu trouver quoi que ce soit mentionner la mont.Cifs prend en charge le chemin de longue durée pour le moment, il est prudent de dire mount.cifs Ne supporte pas le chemin long.

Version du protocole SMB

Je présume que vous n'utilisez pas smb1 Car il est considéré comme dangereux.
[.____] Utilisez-vous smb2 Ou smb3 Pour connecter smbclient/mount.cifs?

Voici peut-être des implications de sécurité NTLM si vous utilisez smb3 Protocole, ce qui pourrait vous empêcher de répertorier le répertoire.

Remarque: Vous devez vérifier le journal (visualiseur d'événements) sur le serveur et non sur le client, pour voir ce qui se passe.

Edit: en raison de la mise à jour et du commentaire

Je pense que vous pouvez souffrir de pointsmbv2 Bug (lors de l'utilisation du montage).
[.____] qui est en bref:

Lors du montage d'une fenêtre Windows, c'est la racine d'un lecteur (par exemple. C $) Le serveur ne renvoie pas . Et .. Entrées de répertoire. Il en résulte que le chemin du code SMB2 saute à tort les 2 premières entrées.

Comment le savoir? Vous pouvez spécifier dans votre entrée /etc/fstab La version SMB doit être utilisée en ajoutant par exemple. vers=3.0 (SMBV3). Je m'approcherais du problème, si possible (si supporté), rétrogradant la version à vers=1.0 Pour voir si tout est affiché.

Donc, votre code de montage ressemblerait à ceci (j'ai ajouté aussi sec _ pour appliquer le ntlm (vous devrez peut-être essayer d'autres que vous pouvez trouver dans les Mount.Cif Man Pages :

//fs-p01.dnsdomain/Data  /data  cifs  credentials=/root/fs-p01.credentials,vers=1.0,sec=ntlm  0 0

Si smbv1 Est désactivé et vous ne pouvez pas l'activer à des fins de test, vous pouvez activer SMB Débogage à l'aide de:

echo 1 > /proc/fs/cifs/traceSMB

Vous feriez ensuite simple ls -la Pour voir si vous pouvez voir le répertoire dans le journal. Si oui, vous êtes influencé par ce bogue.

La troisième option qui se voit dans mon esprit serait d'avoir plus de 2 entrées à la racine de montage. Ceux-ci devraient commencer de manière à ce qu'ils devraient être avant l'entrée (IES) que vous voulez voir.

Le bug signalé

Ce bug a déjà été signalé. Vous pouvez le trouver à Bugzilla de Samba

Solution

Vous pouvez essayer d'utiliser - ce patch par Aurelien , mais je ne sais pas si cela a été correctement testé.

La deuxième option est de faire une "solution de contournement" similaire à la troisième option ci-dessus. Avoir deux répertoires qui seraient sur le dessus avec le tri par défaut. Ceci est juste une solution de contournement rapide. Il devrait vraiment être corrigé afin d'avoir une solution appropriée.

1
tukan

côté serveur

Vous pouvez également considérer le côté serveur également, nous savons que c'est une part de Windows, mais rien de plus, cela aiderait à connaître les fenêtres et SMB Ce cas particulier utilise. La configuration du serveur peut Faites une grande différence, surtout lorsque vous n'utilisez pas le système d'exploitation Windows comme client. Vous savez, depuis que les actions Windows sont apparues, une souris de chat, avec la Samba et d'autres équipes poursuivant les changements mis en œuvre par Microsoft, puisque elle est un système fermé, ils ne sont pas obligés de divulguer les nouvelles fonctionnalités.

Différences principales

Quelles sont les différences entre les moyens de savoir comment smbclient et mont.Cifs accèdent à une action Windows?

sMBClient était destiné à être utilisé comme utilitaire de ligne de commande pour avoir accès à une ressource réseau, Mount.Cifs est normalement utilisé par root, invoqué par la commande de montage lors de l'utilisation d'un type de système de fichiers CIFS, lorsqu'il est utilisé dans le fichier/etc/fstab. est utilisé pour avoir un accès permanent à un système de fichiers.

À partir de la page man ' La principale différence peut être celle Mount.Cifs ignore complètement SMB.CONF

les outils clients SAMBA tels que SMBCLIENT (8) Honorez les paramètres de configuration côté client d'honneur présent dans SMB.CONF. Contrairement à ces outils client, Mount.Cifs ignore complètement smb.conf.

sMBClient est une ancienne mise en œuvre d'un ancien protocole, SMB a été remplacé par CIFS, soi-disant, CIFS a les considérations pour une mise en œuvre plus récente.

Il peut donc être une bonne idée d'utiliser une mise en œuvre récente du protocole, mais vous devriez vérifier lesquelles de ces implémentations fonctionne mieux avec la version du serveur disponible.

Peuvent-ils se comporter de la même manière?

Comment peut-on faire monter.Cifs pour se comporter comme smbclient?

Depuis que Mount.Cifs ignore le fichier SMB.conf, toutes les configurations de ce fichier doivent être exprimées dans la commande d'invocation, par exemple, la ligne correspondante dans/etc/fstab. Par exemple, vous envisagez déjà du U USERNAME Option utilisée dans SMBClient, mais il existe d'autres configurations dans le SMB.conf Thay que vous pouvez vérifier. En particulier la configuration du journal, où les messages d'erreur peuvent être écrits, il faut que l'un des fichiers FSTAB, pas le fichier SMB.conf, vérifier dmesg,/var/log/botte,/var/log/Messeges

1
ram0nvaldez