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:
Ou peut-être me manque quelque chose et il y a une solution complètement différente. Quelqu'un peut-il aider?
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.
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
Protégez le fichier $HOME/.Music.cred
; lancez cette commande dans un terminal:
chmod go-rw $HOME/.Music.cred
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
Si la commande de l'étape 3. a fonctionné correctement, vous pouvez la rendre automatique de plusieurs manières:
/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 :
installer le paquet libpam-mount
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:
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é.