web-dev-qa-db-fra.com

Montage automatique des partages réseau par utilisateur

J'ai un serveur qui possède un certain nombre de partages CIFS auxquels il faut accéder par utilisateur. Par exemple, j'ai un partage Music auquel j'ai pleinement accès, mais ma femme a un accès en lecture seule.

Lorsque moi-même ou ma femme me connecte à notre ordinateur portable Ubuntu 11.04, je souhaite que ces partages soient automatiquement montés par utilisateur. Maintenant, je comprends que si je monte en tant que -t cifs sans spécifier d’utilisateur, il utilisera la variable d’environnement USER. Cependant, je dois aussi spécifier un mot de passe. Comment puis-je le faire lorsque chaque utilisateur a un mot de passe différent?

Je pense que mes questions sont:

  1. Existe-t-il un moyen pour moi d'avoir un utilisateur / etc/fstab?
  2. Si ce n'est pas le cas, existe-t-il un moyen de spécifier qu'un montage ne s'applique qu'à un utilisateur donné?
  3. De plus, le mot de passe de partage est toujours identique au mot de passe local. Existe-t-il un moyen de spécifier que ce mot de passe doit simplement être transmis du client au serveur plutôt que de devoir le spécifier dans un fichier d'informations d'identification quelque part?

Ou peut-être me manque quelque chose et il y a une solution complètement différente. Quelqu'un peut-il aider?

3
Kent Boogaart

Il y a probablement plusieurs solutions possibles; voici comment je le ferais. (Disclaimer: non testé!)

La commande mount.cifs peut lire le nom d'utilisateur et le mot de passe à partir des variables d'environnement USER et PASSWD, mais elle peut également les lire à partir d'un fichier "credentials" que vous spécifiez. sur la ligne de commande avec l'option -o cred=/path/to/credentials/file.

L’approche fichier d’identifiants est plus simple à implémenter à mon humble avis.

  1. Créez un fichier texte $HOME/.Music.cred pour stocker les informations d'identification. le fichier doit avoir ce format:

    user=your-username-on-cifs-server
    password=the-password
    domain=leave-this-blank-unless-really-using-windows-domains
    
  2. Protégez le fichier $HOME/.Music.cred; lancez cette commande dans un terminal:

    chmod go-rw $HOME/.Music.cred
    
  3. Vous devriez maintenant pouvoir monter le partage CIFS //server/music sur le répertoire MyMusicFolder à l'aide de la commande suivante:

    Sudo mount -t cifs -o cred=$HOME/.Music.cred //server/music $HOME/MyMusicFolder
    

    Vous pouvez permettre à chaque utilisateur de l'exécuter sans mot de passe Sudo en ajoutant une ligne à /etc/sudoers: (une ligne par utilisateur).

    # replace every occurence of `user` with the actual account name
    user ALL= NOPASSWD: /bin/mount -t cifs -o cred=/home/user/.Music.cred //server/music /home/user/MyMusicFolder
    
  4. Si la commande de l'étape 3. a fonctionné correctement, vous pouvez la rendre automatique de plusieurs manières:

    • enregistrez-le dans un script Shell de votre répertoire personnel et faites de ce script une application à démarrage automatique (vous devez le faire pour chaque utilisateur devant monter des partages CIFS);
    • enregistrez-le dans un script shell /etc/X11/Xsession.d/30mount-cifs-shares afin qu'il fonctionne pour tout utilisateur.

Vous pouvez également remplacer les étapes 3. et 4. ci-dessus par pam-mount :

  1. installer le paquet libpam-mount

  2. configurer /etc/security/pam_mount.conf.xml avec:

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

Références:

3
Riccardo Murri

Comme note à moi-même et aux autres, la raison pour laquelle libpam-mount échouait avec:

CIFS VFS: Error connecting to socket. Aborting operation
CIFS VFS: cifs_mount failed w/return code = -101

était dû au fait que mon réseau sans fil n’avait pas encore démarré lorsque libpam tentait de monter les supports. Pour remédier à cela, je devais définir la connexion sans fil sur "Disponible pour tous les utilisateurs" dans les paramètres de connexion sans fil. Cela permet d'activer la connexion avant qu'un utilisateur ne se connecte.

Une fois cette propriété définie, libpam-mount a bien fonctionné.

0
Kent Boogaart