web-dev-qa-db-fra.com

Monter un lecteur réseau samba depuis un terminal sans coder en dur un mot de passe

Je sais que la commande par défaut ressemblerait à ceci:

Sudo mount -t cifs -o username=YOUR_USERNAME,password=YOUR_PASSWORD,uid=YOUR_UBUNTU_USERNAME //networkNameOfRemoteComputer/path/to/my/folder /path/to/mounting/dir

Cependant, je souhaite monter un dossier de partage Samba sans coder en dur mon mot de passe. Je considère que le risque est élevé si le mot de passe est visible. est-ce que quelqu'un a une idée?

(Dans une version précédente de cette question, j'avais également demandé un montage sans droits Sudo, mais il semble que ce ne soit tout simplement pas possible :()

4
mcExchange

Utilisez plutôt la commande mount.cifs, car elle permet de spécifier un fichier d'informations d'identification ou d'inviter un mot de passe si aucun n'est fourni.

Installation

Tout d’abord, vérifiez que les packages nécessaires sont installés en lançant la commande suivante:

Sudo apt-get install cifs-utils

MÉTHODE 1 - UTILISER UN FICHIER D'IDENTITÉS

Selon le manuel http://manpages.ubuntu.com/manpages/raring/man8/mount.cifs.8.html :

OPTIONS
[...]
credentials = nomfichier spécifie un fichier contenant un nom d'utilisateur et/ou un mot de passe et éventuellement le nom du groupe de travail. Le format du fichier est:

nom d'utilisateur = valeur
mot de passe = valeur
domaine = valeur

Usage:

mount.cifs //<hostname_or_ip>/<cifs_share> <local_mountpoint> -o user=<user_to_connect_as>,rw,credentials=<path_to_the_credentials_file>

Exemple:

Sudo mount.cifs //domain.com/share /mnt/domain_com -o user=admin,rw,credentials=/root/.credentials

Il est important de noter que "name_of_the_user_to_connnect_as" peut également contenir le domaine ou le groupe de travail:

user=workgroup/user
user=domain/user

(Selon votre environnement, vous aurez besoin de plus ou moins d'options.)

En ce qui concerne la sécurité, il devrait suffire de stocker le fichier d’identifiants dans le répertoire/root, mais si vous voulez le stocker ailleurs,

  • définir l'utilisateur root en tant que propriétaire avec Sudo chown root <file>
  • définir des autorisations uniquement pour le propriétaire avec `Sudo chmod 600

MÉTHODE 2 - Invite PASSWORD

Si, comme indiqué, vous ne souhaitez pas que votre mot de passe soit visible, ne spécifiez pas l'option "mot de passe" dans votre commande mount.cifs.

De la page de manuel à l’adresse http://manpages.ubuntu.com/manpages/hardy/man8/mount.cifs.8.html

mot de passe = arg

      specifies  the  CIFS  password. If this option is not given then the
      environment  variable  PASSWD  is  used.  If  the  password  is  not
      specified directly or indirectly via an argument to mount mount.cifs
      will Prompt for a password, unless the guest option is specified.

      Note that a password which contains the delimiter character (i.e.  a
      comma  ’,’)  will  fail  to be parsed correctly on the command line.
      However,  the  same  password  defined  in  the  PASSWD  environment
      variable  or  via  a  credentials file (see below) or entered at the
      password Prompt will be read correctly.

En conséquence, la commande suivante doit demander un mot de passe:

mount.cifs //<hostname_or_ip>/<cifs_share> <local_mountpoint> -o user=<user_to_connect_as>,rw

Testé et fonctionne comme prévu:

enter image description here

5
Eduardo López