Page 1 sur 1

Accès aux dossiers partagés Windows

Posté : mar. 14 juin 2022 18:07
par Heffgé
Bonjour,

Afin de découvir Linux je viens d'installer Mint / Cinnamon sur un portable Asus. Independamment des petits soucis liés à la découverte du maniement de base je rencontre un problème avec l'accès aux dossiers partagés d'une station sous Windows 7.

Sur cette station je n'ai pas de mot de passe au niveau compte d'utilisateur et, depuis d'autres stations Windows, j'accède aux ressources partagées sans avoir à en fournir un. Linux ne l'entend pas de cette oreille. En cherchant j'ai cependant trouvé que mount.cifs s'accommodait de cette abscence de mot de passe, ou plus exactement qu'il suffisait de saisir "*" comme nom et comme mot de passe pour obtenir cet accès.

Malheureusement je butte encore sur un autre problème. Mes noms de ressources partagées sont susceptibles de contenir des caractères munis de signes diacritiques, un "ç" dans un cas bien précis. L'accès fonctionne sans problème en l'abscence de ces caractères mais dans le cas contraire j'obtiens le message "No such file or directory".

J'en ai déduit que Linux et Windows 7 utilsaient des encodages différents UTF-8 pour l'un et, saus erreur de ma part, CP1252 pour l'autre, ceci ne posant pas de problème avec les caractères ordinaires. En continuant mes recherces j'ai trouvé la fonction iconv dont j'ai tenté de me servir. Après quelques tâtonnements je suis arrivé à ceci (lin contient le nom à convertir et win le résultat de la conversion) :

Code : Tout sélectionner

win=$(echo $lin | iconv -t CP1252)
Je passe ensuite la commande (ad_IP contient l'adresse IP de la station distante obtenue à l'aide de nmblookup et win est un répertoire déjà créé) :

Code : Tout sélectionner

mount.cifs //$ad_IP/$win /home/moi/win -o user=* password=*
Malheureusement ça ne fonctionne pas plus que sans la conversion. Je soupçonne que ça doit être moins simple que ce que j'ai pu imaginer et c'est pourquoi je sollicite votre aide.

En vous remerciant par avance

Re: Accès aux dossiers partagés Windows

Posté : mer. 15 juin 2022 08:30
par Heffgé
J'ai dû avoir la berlue car en fait ça fonctionne parfaitement même lorsqu'il y a des signes diacritiques dans le nom de la ressource partagée, sans avoir recours à une quelconque conversion.
Par contre lorsque je mets les mêmes commandes dans un script, ça ne fonctionne pas.La ressource partagée n'est pas trouvée.
Image
Mon script :

Code : Tout sélectionner

#!/bin/bash
ad_IP="$(nmblookup Poste-7 | head -n 1 | cut -d ' ' -f 1)"
part=test
sudo mount.cifs //$ad_IP/$part /home/moi/win -o vers=1.0 user=* password=*
Je suis donc de nouveau arrêté.
Merci d'avance pour vos suggestions.

Re: Accès aux dossiers partagés Windows

Posté : mer. 15 juin 2022 08:54
par arghlub
Salut,

Le montage automatique de partitions se fait dans le fichier /etc/fstab.
  1. Au préalable, tu crées un dossier pour pouvoir monter ta partition :

    Code : Tout sélectionner

    sudo mkdir /dataWindows
  2. pour commencer tu cherches l'identifiant unique de ta partition (UUID) avec cette commande :

    Code : Tout sélectionner

    blkid -o list
  3. ensuite tu édites le fichier /etc/fstab :

    Code : Tout sélectionner

    sudo nano /etc/fstab
  4. et tu y colles une ligne du style :

    Code : Tout sélectionner

    UUID=TON_UUID	/dataWindows	ntfs	defaults,uid=1000,gid=1000	0	0

Re: Accès aux dossiers partagés Windows

Posté : mer. 15 juin 2022 18:32
par Heffgé
Merci de t'intéresser à mon problème mais ce que tu me suggères ne semble pas s'y rapporter directement.

Je tente d'accèder à un dossier partagé d'une station sous Windows. La fonction native "Se connecter au serveur" ne fonctionne pas car le partage sous Windows est du type sans mot de passe, et la rubrique "Réseau" du gestionnaire de fichiers ne voit aucune ressource partagée. La seule solution que j'ai trouvée est d'utiliser mount.cifs.

La commande s'effectue correctement quand elle est passée dans un terminal mais échoue quand elle est placée à l'intérieur d'un script. Je suppose que je n'y prend pas correctement pour rédiger ce script (cf. mon précédent message) et c'est pourquoi je sollicite de l'aide.

Re: Accès aux dossiers partagés Windows

Posté : jeu. 16 juin 2022 08:25
par Heffgé
Fais nous voir la commande passée en CLI puis le script et le message d'erreur...
J'ai déjà indiqué tout ça dans mes précédents messages mais je peux recommencer si je ne l'ai pas fait de manière assez claire.
Le script :

Code : Tout sélectionner

#!/bin/bash
ad_IP="$(nmblookup Poste-7 | head -n 1 | cut -d ' ' -f 1)"
part=test
sudo mount.cifs //$ad_IP/$part /home/moi/win -o vers=1.0 user=* password=*
Mount.cifs semble ne pas savoir retrouver tout seul l'adresse IP d'après le nom du serveur (Poste-7 ici). La première ligne me permet de la récupérer. "test" est le nom de la ressource partagée et "win" est le mom du répertoire de destination. Le message d'erreur est :
unknown erroruld not resolve address for 192.168.1.2
Image
192.168.1.2 est bien l'adresse IP de ma station Windows et le ping sur cette adresse passe sans problème.
Cette erreur ne se produit pas si je passe une à une les mêmes commandes.

Re: Accès aux dossiers partagés Windows

Posté : jeu. 16 juin 2022 08:44
par arghlub
Salut,

sinon ssh → https://doc.ubuntu-fr.org/ssh

Re: Accès aux dossiers partagés Windows

Posté : jeu. 16 juin 2022 17:04
par Heffgé
Attention à la syntaxe
J'ai pompé directement cette commande sur un autre forum et elle fonctionne aussi bien avec que sans les guillemets.
Et au fait tu lances ton script en sudo donc pas la peine de relancer sudo ensuite dans le script
OK, bien noté.
Et mettre un debug style
Là j'ai résumé, sinon j'en ai mis partout au cours de mes tests. Et dans le message d'erreur on voit l'adresse IP récupérée et qui est bien la bonne.
Tu peux mettre un test en début de script pour voir s'il est bien lancer avec sudo
OK, je le ferais mais le message d'erreur n'évoque pas un problème de droits. Pour l'instant voici une copie d'écran qui montre ce que l'on obtient en passant les commandes une à une puis en invoquant le script.
Image
Pour ce test le nom de la ressource partagée a été modifié pour bien montrer qu'un "ç" ne posait pas de problème, et j'ai listé le contenu de répertoire de destination comme preuve du bon fonctionnement de la commande mount.cifs.Win est démonté pour retrouver un contenu vierge avant d'exécuter le script.
Autre problème que je viens de découvrir : pas d'accès en écriture au dossier partagé. Pourtant, côté Windows, contrôle total donné à "Tout le monde", aussi bien au niveau du dossier lui-même que dans la rubrique partage.

Re: Accès aux dossiers partagés Windows

Posté : ven. 17 juin 2022 10:34
par Heffgé
Même en suivant scrupuleusement tes consignes, guiliemets là où il en faut et pas là où il n'en faut pas, le résultat est identique. Et ce n'est pas une erreur de saisie puisque je fais un copier-coller des lignes du script dans le terminal pour être certain que les commandes soient identiques dans l'un et l'autre cas.
Mais j'avoue ne pas bien saisir la manière dont on doit procéder pour lancer l'exécution d'un script. Je l'ai bien sût rendu exécutable (rwx partout) mais j'aurais cru qu'il suffisait alors de saisir son nom comme commande pour l'exécuter. Ce n'est pas le cas et je dois saisir bash (ou sh) devant le nom sinon un message me dit que la commande n'existe pas.
Le gestionnaire de fichiers graphique me propose d'afficher le contenu du fichier ou de le lancer. Cette deuxième possibilité ouvre bien une fenêtre terminal mais avec un message d'insultes :
Image
Donc deux questions :
- comment enregistrer un script et faire en sorte qu'on puisse l'excuter ;
- pourquoi mount.cifs est en erreur quand il est exécuté à l'intérieur d'un script ?
Enfin, puisque de cette manière seul l'accès en lecture est possible, y-a-t-il une autre méthode, qui ne soit pas une usine à gaz, pour accéder sans restriction au contenu d'un dossier partagé sans mot de passe sous Windows ?

Re: Accès aux dossiers partagés Windows

Posté : lun. 20 juin 2022 14:30
par Heffgé
J'ai fini par résoudre tous mes problèmes.
Celui de l'autorisation était lié au fait d'être en sudo. Sans autre précision la propriété du répertoire de destination est attribuée à root. Les autres étaient liés à l'utilisation de variables.
Finalement voici la séquence qui fonctionne aussi bien au terminal que dans un script :

Code : Tout sélectionner

serv="Poste-7"
dest="/home/moi/win"
usr="moi"
part="Leçons"
ad_IP=$(nmblookup $serv | head -n 1 | cut -d ' ' -f 1)
mount.cifs //$ad_IP/$part $dest -o username=*password=*,gid=$usr,uid=$usr
Je considère donc mon problème comme résolu et je te remercie pour ton aide.