Résolu le 20-06-22 Accès aux dossiers partagés Windows

Postez ici toutes vos demandes d’assistance générale concernant le fonctionnement de Linux Mint, qui n'entrent pas dans les autres rubriques.
Répondre
Heffgé
Messages : 11
Enregistré le : mar. 14 juin 2022 17:17
Contact :

Accès aux dossiers partagés Windows

Message 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
Portable Asus X401U
Mint Version 20.3
Bureau Cinnamon 5.2.7
Heffgé
Messages : 11
Enregistré le : mar. 14 juin 2022 17:17
Contact :

Re: Accès aux dossiers partagés Windows

Message 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.
Portable Asus X401U
Mint Version 20.3
Bureau Cinnamon 5.2.7
Avatar du membre
arghlub
Administrateur du site
Messages : 11800
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence

Re: Accès aux dossiers partagés Windows

Message 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
Tour1 (custom) CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : LMint 22.3 | Debian 12 | MX Linux | XFCE
Tour2 (custom) CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 22.1 | MX Linux | XFCE
Portable2 MacBook Air A1466 | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MX Linux XFCE
─────( pour une informatique libre ! )─────
Heffgé
Messages : 11
Enregistré le : mar. 14 juin 2022 17:17
Contact :

Re: Accès aux dossiers partagés Windows

Message 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.
Portable Asus X401U
Mint Version 20.3
Bureau Cinnamon 5.2.7
Heffgé
Messages : 11
Enregistré le : mar. 14 juin 2022 17:17
Contact :

Re: Accès aux dossiers partagés Windows

Message 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.
Portable Asus X401U
Mint Version 20.3
Bureau Cinnamon 5.2.7
Avatar du membre
arghlub
Administrateur du site
Messages : 11800
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence

Re: Accès aux dossiers partagés Windows

Message par arghlub »

Salut,

sinon ssh → https://doc.ubuntu-fr.org/ssh
Tour1 (custom) CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : LMint 22.3 | Debian 12 | MX Linux | XFCE
Tour2 (custom) CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 22.1 | MX Linux | XFCE
Portable2 MacBook Air A1466 | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MX Linux XFCE
─────( pour une informatique libre ! )─────
Heffgé
Messages : 11
Enregistré le : mar. 14 juin 2022 17:17
Contact :

Re: Accès aux dossiers partagés Windows

Message 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.
Portable Asus X401U
Mint Version 20.3
Bureau Cinnamon 5.2.7
Heffgé
Messages : 11
Enregistré le : mar. 14 juin 2022 17:17
Contact :

Re: Accès aux dossiers partagés Windows

Message 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 ?
Portable Asus X401U
Mint Version 20.3
Bureau Cinnamon 5.2.7
Heffgé
Messages : 11
Enregistré le : mar. 14 juin 2022 17:17
Contact :

Re: Accès aux dossiers partagés Windows

Message 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.
Portable Asus X401U
Mint Version 20.3
Bureau Cinnamon 5.2.7
Répondre