Manière appropriée de monter le partage samba

9

Je voudrais monter un système de fichiers réseau CIFS avec samba sur mon système Arch Linux. Je voudrais monter ce système de fichiers chaque fois que je me connecte (soit via ssh, un ATS ou via KDM).

Je peux me rapprocher de ce que je veux en ajoutant le partage réseau à /etc/fstab. Le plus gros "problème" est que cela nécessite soit de coder en dur mon mot de passe dans, /etc/fstabsoit de créer un fichier d'informations d'identification avec mon nom d'utilisateur et mon mot de passe. Il me semble dangereux de conserver mon nom d'utilisateur et mon mot de passe dans un fichier en texte brut même si j'ai défini les autorisations sur 600.

Existe-t-il un moyen «approprié» de monter automatiquement un partage réseau en toute sécurité? Puis-je le faire avec PAM (mon nom d'utilisateur et mon mot de passe sont les mêmes sur les deux machines) et si oui, comment?

StrongBad
la source
Avez-vous regardé pam_cifs ? "pam_cifs est un module Linux-PAM pour monter et démonter des partages CIFS lors de la connexion par utilisateur"
un CVn du
Ou pam_mount, je n'ai aucune expérience spécifique, mais il semble conçu pour ce faire.
EightBitTony
@EightBitTony trouvant pam_mount m'a amené à poser la question, j'espère que quelqu'un pourrait me dire plus définitivement si c'est la voie à suivre et si oui comment.
StrongBad

Réponses:

8

Méthode n ° 1 - /etc/fstab

Je me rends compte que vous recherchez des alternatives à cela, mais voici spécifiquement comment obtenir vos informations d'identification du /etc/fstabfichier:

//WindowsHost/Sharename /LocalMountPoint cifs credentials=/etc/cifsauth 0 0

Puis dans le fichier /etc/cifsauth:

username=someuser
password=somepass

Faites les permissions de ce fichier 600, ie chmod 600 /etc/cifsauth.

Méthode n ° 2 - pam_mount

Vous pouvez installer pam_mount puis configurer un montage générique pour tous les utilisateurs qui se connectent, comme ceci:

# /etc/security/pam_mount.conf.xml
<debug enable="1" />
<volume server="server" path="music" mountpoint="~/MyMusicFolder" options="cred=/home/%(USER)/.Music.cred" />

Cette méthode a toujours le même problème que la méthode # 1, où les informations d' identification sont stockées dans un fichier, /home/%(USER)/.Music.cred. Il s'agit du même type de fichier d'informations d'identification que dans la première méthode, assurez-vous donc que les autorisations sont également de 600.

Méthode n ° 3 - utilisez gvfs-mount

Cette Q&R U&L intitulée: Puis-je automatiser le montage d'un partage cifs sans stocker mon mot de passe en texte clair? contient une réponse de @Gilles qui décrit l'utilisation du porte- clés GNOME pour conserver vos informations d'identification CIFS.

Vous pouvez ensuite accéder aux partages CIFS à l'aide de GVFS - GNOME Virtual File System - comme ceci:

$ gvfs-mount smb://username\;workgroupname@hostname/sharename

Cela mappera le partage à partir du nom d'hôte appelé nom de partage et le montera sous $HOME/.vfs/sharename on hostname. Vous ne pouvez en aucun cas contrôler cela. C'est codé en dur pour toujours être monté ici, j'ai regardé!

Vous pouvez cependant créer des liens vers ces montages, ce que je fais pour pouvoir accéder aux partages que j'ai montés. L'utilisation de .gvfsétait malheureuse car certains outils ne répertorient pas les répertoires de points dans le fichier parcourant si souvent le lien que j'ai créé est le seul moyen d'accéder à ces partages.

slm
la source
si vous faites un fichier caché, dites .cifsauth, et 'username =' n'est pas requis, seulement les informations d'identification = / etc / .cifsauth suffisent
Rahul Patil
@RahulPatil - dites-vous que vous devez fournir les informations d'identification nommées .cifsauthafin de supprimer le username=, ou que le username=juste n'est pas nécessaire tous ensemble?
slm
oui ... Belle réponse .. !! +1 pour pam_mount
Rahul Patil
@RahulPatil - avec quoi êtes-vous d'accord?
slm
2

Il s'avère que pam_mountc'est la voie à suivre. Vous ajoutez le partage réseau à/etc/security/pam_mount.conf.xml

<volume user="yourUserName" fstype="auto" path="//path/to/the/network/share" mountpoint="/path/to/the/mount/point" options="username=yourUserName" />
<mkmountpoint enable="1" remove="true" />

Il devrait être théoriquement possible d'utiliser les %(USER), %(USERUID)et les %(USERGID)variables pour en faire un montage général, mais je ne pouvais pas cette partie pour travailler sur Arch Linux. Vous devez également configurer votre système pour l'utiliser pam_mount. Vous devez modifier les deux /etc/pam.d/system-authet votre gestionnaire de connexion correspondant. Pour KDM, c'est le cas /etc/pam.d/kde. Les modifications impliquent essentiellement d'ajouter optional pam_mount.soà chaque section des deux fichiers, mais les détails exacts sont délicats car la commande est importante. J'ai suivi l' Arch Wiki .

Avec cette configuration et le même nom d'utilisateur / mot de passe sur le serveur et ma machine, je peux monter automatiquement sans enregistrer de fichier d'informations d'identification n'importe où.

StrongBad
la source
C'est bien ... En principe, je préférerais la solution fstab - je n'aime pas pamet le reste, personnellement, et j'ai remarqué qu'ils ont tendance à se glisser toujours plus loin dans la configuration du système - mais cela répond définitivement à la question. Puis-je vous demander pourquoi vous êtes si opposé au stockage des informations d'identification? Les autorisations utilisateur et / ou la propriété / le cryptage des fichiers devraient y être plus que suffisants. Sur certains systèmes, vous pouvez même stocker ces informations dans des vars de firmware qui ne sont accessibles qu'après l'authentification. sshstocke les informations d'identification en fonction des autorisations fs, par exemple, n'est-ce pas?
mikeserv
@mikeserv nous utilisons un système de connexion unique, donc un administrateur système qui a un accès root à la machine avec mon fichier d'informations d'identification, peut ne pas avoir un accès root à tous les serveurs pour lesquels mon mot de passe me permet d'accéder.
StrongBad