Pourquoi pam_mount demande un mot de passe?

8

J'ai utilisé l' pam-auth-updateoutil afin d'activer certains profils de configuration de pam:

 PAM configuration 
 PAM profiles to enable:
    [*] encfs encrypted home directories           
    [*] Unix authentication                             
    [*] Mount volumes for user                         
    [*] GNOME Keyring Daemon - Login keyring management  
    [*] ConsoleKit Session Management

Toutes les fonctionnalités fonctionnent comme prévu, mais il y a une chose - l' Mount volumes for useroption semble affecter la sucommande.

J'ai ajouté la ligne suivante au /etc/security/pam_mount.conf.xmlfichier:

<volume user="morfik" fstype="fuse" path="encfs#/media/Server/Dropbox.encfs/Dropbox/encrypted" mountpoint="/media/Server/Dropbox" />

et quand je tape dans un terminal su morfik(en tant que root), il ne devrait pas y avoir d'invite de mot de passe, mais à la place je vois ceci:

# su morfik
reenter password for pam_mount:

Si j'ai décoché l' Mount volumes for useroption dans le menu ci-dessus, tout semble être un fichier et reenter passworddisparaît. J'ai essayé de jouer avec des /etc/pam.d/fichiers, mais je n'ai aucune expérience avec PAM et je n'ai pas pu le faire fonctionner.

Quelqu'un sait-il ce qui doit être changé dans ces fichiers?

MISE À JOUR # 1

Voici le contenu du /etc/pam.drépertoire:

# ls -al /etc/pam.d/
total 104K
drwxr-xr-x   2 root root 4.0K Mar 21 16:21 ./
drwxr-xr-x 153 root root  12K Mar 21 16:11 ../
-rw-r--r--   1 root root  197 Sep  8  2013 atd
-rw-r--r--   1 root root  384 May 25  2012 chfn
-rw-r--r--   1 root root   92 May 25  2012 chpasswd
-rw-r--r--   1 root root  581 May 25  2012 chsh
-rw-r--r--   1 root root 1.2K Mar 20 17:35 common-account
-rw-r--r--   1 root root 1.3K Mar 20 17:35 common-auth
-rw-r--r--   1 root root 1.5K Mar 20 17:35 common-password
-rw-r--r--   1 root root 1.3K Mar 20 17:35 common-session
-rw-r--r--   1 root root 1.2K Mar 20 17:35 common-session-noninteractive
-rw-r--r--   1 root root  527 Jul  3  2012 cron
-rw-r--r--   1 root root   69 Jul 16  2013 cups-daemon
-rw-r--r--   1 root root 4.8K Mar  5 10:18 login
-rw-r--r--   1 root root   92 May 25  2012 newusers
-rw-r--r--   1 root root  520 Jul 22  2008 other
-rw-r--r--   1 root root  147 Feb 13 07:15 passwd
-rw-r--r--   1 root root  255 Oct 15 18:40 polkit-1
-rw-r--r--   1 root root   84 Dec 27 12:40 samba
-rw-r--r--   1 root root 2.1K Feb 15 03:11 sshd
-rw-r--r--   1 root root 2.3K May 25  2012 su
-rw-r--r--   1 root root   95 Jan 15 22:58 sudo
-rw-r--r--   1 root root  108 Oct 19 23:42 xscreensaver

Il n'y a pas de fichier /etc/pam.d/system-auth.

J'ai vérifié quels fichiers ont pam_mountdans leur contenu, et j'ai obtenu ceci:

# egrep -i pam_mount *
common-auth:auth        optional        pam_mount.so
common-session:session  optional        pam_mount.so

Le contenu des fichiers:

#
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.).  The default is to use the
# traditional Unix authentication mechanisms.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
auth    sufficient              pam_encfs.so 
auth    [success=1 default=ignore]  pam_unix.so nullok_secure try_first_pass
# here's the fallback if no module succeeds
auth    requisite           pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required            pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth    optional    pam_mount.so 
# end of pam-auth-update config

et:

#
# /etc/pam.d/common-session - session-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define tasks to be performed
# at the start and end of sessions of *any* kind (both interactive and
# non-interactive).
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
session [default=1]         pam_permit.so
# here's the fallback if no module succeeds
session requisite           pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
session required            pam_permit.so
# and here are more per-package modules (the "Additional" block)
session required    pam_unix.so 
session optional    pam_mount.so 
session optional            pam_ck_connector.so nox11
# end of pam-auth-update config

MISE À JOUR # 2

J'utilise les tests Debian. J'ai essayé de changer la position de pam_mount, mais c'est toujours la même chose. J'ai lu certaines sections du manuel et il y avait quelque chose comme:

 When "sufficient" is used in the second column, you must make sure that
   pam_mount is added before this entry. Otherwise pam_mount will not  get
   executed  should  a  previous  PAM module succeed. Also be aware of the
   "include" statements. These make PAM look into the specified  file.  If
   there is a "sufficient" statement, then the pam_mount entry must either
   be in the included file before the "sufficient" statement or before the
   "include" statement.

J'ai même ajouté pam_mountau /etc/pam.d/sufichier pour vérifier si cela fait une différence, mais cela n'a pas d'importance. Si pam_mount, comme on dit, au lieu d'une invite de mot de passe, je reçois une pam_mount passwordinvite lorsque je me connecte à mon système et il me demande toujours un mot de passe lorsque j'essaiesu morfik

Mikhail Morfikov
la source
Avez-vous déjà résolu cela?
PSkocik
En fait, j'ai cessé d'utiliser encfs il y a longtemps et je n'ai pas résolu le problème par le passé. Je viens d'installer le module PAM approprié, et lorsque je "su" à l'utilisateur en question à partir de la racine, il n'y a pas d'invite de mot de passe. Mais lorsque j'ajoute une ligne de volume au /etc/security/pam_mount.conf.xmlfichier, l'invite commence à apparaître.
Mikhail Morfikov

Réponses:

2

Ran dans le même problème.

Il s'avère que le problème est résolu en ajoutant l' disable_interactiveoption à côté pam_mount.sodans les fichiers de configuration ( /etc/pam.d/common-{auth,session}).

Il vient juste après pam_mount.soet les options sont séparées par des espaces (à partir du sonom du fichier et entre chacune des deux options).

Lorsque le pam_mount.socode est exécuté lors d'une connexion, il reçoit le mot de passe du haut de la pile et utilise ce mot de passe pour décrypter votre volume.

Lorsque vous effectuez suune session root, aucun mot de passe n'est requis et pam_mount.son'obtiendra donc aucun mot de passe. Ainsi, sans l' disable_interactiveoption, il essaiera d'obtenir le mot de passe.

Heureusement, comme vous pouvez le voir sur https://sourceforge.net/p/pam-mount/pam-mount/ci/master/tree/src/pam_mount.c , ligne 493, pam_mountessaiera de procéder même sans mot de passe, ce qui est bon, car le mot de passe n'est pas nécessaire si le volume est déjà déverrouillé et monté.

PSkocik
la source
J'ai testé partiellement le paramètre car je n'utilise encfsplus. Je viens de créer les répertoires et d'installer les modules PAM appropriés. Après avoir ajouté "disable_interactive" aux deux fichiers, il n'a en fait plus affiché l'invite de mot de passe. Je ne sais pas si le message "échec du montage" est dû au mot de passe ou parce qu'il n'y a pas de "répertoire encfs". Quoi qu'il en soit, j'ai réussi à changer d'utilisateur sans mot de passe. J'accepte donc cette réponse.
Mikhail Morfikov
1

Devinez tout mais regardez vos /etc/pam.d/*fichiers et assurez-vous que toutes les configurations PAM liées à pam_mountsont installées comme suit:

auth optional pam_mount.so
...
auth include system-auth use_first_pass
...
session optional pam_mount.so

Cela semble être confirmé par la pam_mount.confpage de manuel:

extrait

Messages
   <msg-authpw>pam_mount password:</msg-authpw>
        When  pam_mount cannot obtain a password through PAM, or is 
        configured to not do so in the first place, and is configured to ask 
        for a password interactively as a replacement, this prompt  will be 
        shown.

   <msg-sessionpw>reenter...:</msg-sessionpw>
        In  case  the  'session' PAM block does not have the password (e.g. 
        on su from root to user), it will ask again. This prompt can also be 
        customized.

REMARQUE: L'ordre des /etc/pam.d/*fichiers de configuration est également référencé ici dans cette rubrique Wiki ArchLinux intitulée: Pam mount .

Références

slm
la source
@MikhailMorfikov - Je ne sais pas si vous utilisez Debian ou Ubuntu mais si vous jetez un œil à la page de manuel pour pam_mountil y a plusieurs exemples sur la façon de structurer votre commande PAM en utilisant ce module. Pouvez-vous y jeter un œil et le comparer à vos /etc/pam.d/*fichiers? Je m'attends à ce que vous deviez changer autour des piles PAM. Pouvez-vous exécuter ceci: strace -s 2000 -o su.log su morfikafin que nous puissions voir quelles règles le déclenchent?
slm
J'ai mis à jour la question.
Mikhail Morfikov