web-dev-qa-db-fra.com

Montages CIFS et Kerberos - autorisations d'accès ou meilleure pratique

Actuellement, nos clients Ubuntu se connectent aux partages cifs lors du démarrage du système via/etc/fstab. Cela présente les inconvénients suivants:

  • Les mots de passe sont écrits en texte brut comme option de montage
  • Le mot de passe doit expirer, mais si c'est le cas, le fichier/etc/fstab doit être modifié sur chaque client. Ainsi, la plupart des mots de passe utilisés pour les montages n'expirent tout simplement pas pour le moment.
  • Le partage CIFS est monté sous l'utilisateur qui se connecte et ses autorisations. Par conséquent, l'utilisateur qui travaille avec le partage sur Ubuntu ne s'affiche pas. Un effet secondaire est un flou d'autorisations, car les utilisateurs Ubuntu ne sont pas répertoriés dans les autorisations du système de fichiers Windows.

Ce que j'ai déjà testé avec succès sur nos clients Ubuntu: Utiliser l'authentification Kerberos lors de la connexion de l'utilisateur - un ticket Kerberos est donc disponible pour l'utilisateur.

tilisation de ce ticket kerberos pour (Sudo) monter le partage cifs dans un service utilisateur systemd

  • PRO: Fonctionne sur la connexion graphique ainsi que sur ssh
  • PRO: le partage est accessible comme le système de fichiers local
  • CON: Si je monte sur un point de montage global comme/servers/mymount, je dois faire attention à ce que je ne superpose pas de montages à des utilisateurs multiples. Et l'utilisateur qui se connecte serait alors celui dont les autorisations seraient utilisées par tout utilisateur suivant.

tilisation de ce ticket kerberos pour monter dynamiquement le partage à partir des navigateurs de fichiers nautilus et thunar

  • PRO: Si la connexion au partage est établie via un navigateur de fichiers, aucun script ou service supplémentaire n'est nécessaire.
  • PRO: Le partage est monté dans le contexte utilisateur, donc avec l'autorisation de l'utilisateur. Si l'utilisateur n'a pas d'autorisation, il est toujours possible de connecter le partage à un autre utilisateur.
  • PRO: Les montages pourraient être automatisés par/etc/profile en utilisant gvfs-mount
  • PRO: Aucun droit Sudo n'est nécessaire, l'utilisateur peut monter et monter à volonté comme il le souhaite, très intuitif via le navigateur de fichiers
  • CON: Il n'y a pas de point de montage, les commandes unix standard telles que ls, cp, etc. ne fonctionnent pas. Je devrais utiliser des alternatives gvfs- *. À ce stade, la solution ci-dessus avec mount.cifs semble être meilleure.

Donc, ce que je voudrais, c'est accéder au partage cifs comme j'accède à un partage nfs.

  • Aucun mot de passe utilisé pendant le montage
  • Les autorisations de l'utilisateur accédant doivent être utilisées
  • Le système de fichiers doit se comporter comme le système de fichiers local (les commandes unix standard devraient fonctionner)

Je pourrais monter un partage CIFS plusieurs fois, séparément pour chaque utilisateur dans son répertoire personnel, mais

Y a-t-il un moyen de monter le partage CIFS au démarrage par l'utilisateur root, sans spécifier un utilisateur se connectant, puis en utilisant les autorisations d'un utilisateur accédant (par exemple via un ticket kerberos)?

Merci d'avance, Bastian

5
user2149308

Utiliser l'option automount + multi-utilisateur de mount.cifs

Vous pouvez y parvenir en utilisant automount et l'option multi-utilisateur de mount.cifs. Installez les packages requis:

Sudo apt install autofs keyutils cifs-utils

L'exemple suivant suppose que le serveur cifs exporte un partage nommé d'après l'utilisateur qui y accède. Normalement, cela conviendrait aux répertoires personnels.

Ajoutez ceci à votre /etc/auto.master:

/cifs /etc/auto.cifs

Dans /etc/auto.cifs, mettez ceci:

*   -fstype=cifs,multiuser,cruid=${UID},sec=krb5    ://server.domain/&

Assurez-vous de remplacer server.domain par votre serveur de fichiers. Vous pouvez également utiliser un partage fixe de cette façon. Il suffit de remplacer le * par un nom fixe et également le &.

Un détail important dans la configuration ci-dessus est le cruid=${UID}. Cela obligera le noyau à rechercher un ticket kerberos dans le contexte de l'utilisateur accédant au partage. Sinon, ce serait d'essayer le cache de tickets de racines.

Enfin recharger automount:

Sudo service autofs reload

Si vous avez un ticket kerberos, il montera le système de fichiers /cifs/$USER lors du premier accès. Cela signifie que vous devez explicitement taper e. g. cd /cifs/myuser ou une action similaire dans un navigateur de fichiers GUI. Pour éviter cela, vous pouvez placer des liens symboliques pointant vers cet endroit et indiquer aux utilisateurs d'y accéder.

Si vous utilisez un partage fixe (n'utilisez pas * et &), vous devrez bien sûr taper cd /cifs/sharename.

L'accès ultérieur par d'autres utilisateurs au même partage utilisera leurs autorisations , rendues possibles par l'option multiuser. Aucun montage supplémentaire ne sera fait mais celui existant sera réutilisé.

De mount.cifs (8) :

   multiuser
       Map user accesses to individual credentials when accessing
       the server. By default, CIFS mounts only use a single set of
       user credentials (the mount credentials) when accessing a
       share. With this option, the client instead creates a new
       session with the server using the user's credentials whenever
       a new user accesses the mount. Further accesses by that user
       will also use those credentials. Because the kernel cannot
       Prompt for passwords, multiuser mounts are limited to mounts
       using sec= options that don't require passwords.

Il est également possible d'ajouter les cartes de montage automatique requises à un serveur LDAP pour une gestion centralisée, mais cela dépasse probablement le cadre de cette réponse.

Dans votre question, vous avez demandé que le montage soit monté en tant que root au démarrage. Techniquement, cela se fait ici sous la forme d’un support de remplacement pour autofs. En pratique, le montage réel est effectué uniquement lors du premier accès d'un utilisateur.

Nous utilisons cette configuration pour environ 100 clients sur mon lieu de travail pour accéder à un système de fichiers très volumineux, ce qui fonctionne de manière fiable.

2
Sebastian Stark