Warum fragt pam_mount nach dem Passwort?

8

Ich habe das pam-auth-updateTool verwendet, um einige Pam-Konfigurationsprofile zu aktivieren:

 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

Alle Funktionen funktionieren wie erwartet, aber eines gibt es - die Mount volumes for userOption scheint den suBefehl zu beeinflussen .

Ich habe der /etc/security/pam_mount.conf.xmlDatei die folgende Zeile hinzugefügt :

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

und wenn ich ein Terminal su morfik(als root) eingebe, sollte es keine Passwortabfrage geben, sondern ich sehe Folgendes:

# su morfik
reenter password for pam_mount:

Wenn ich die Mount volumes for userOption im Menü oben deaktiviert habe, scheint alles Datei zu sein und das reenter passwordverschwindet. Ich habe versucht, mit /etc/pam.d/Dateien zu spielen , aber ich habe keine Erfahrung mit PAM und konnte es nicht zum Laufen bringen.

Weiß jemand, was in diesen Dateien geändert werden muss?

UPDATE # 1

Dies ist der Inhalt des /etc/pam.dVerzeichnisses:

# 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

Es gibt keine Datei /etc/pam.d/system-auth.

Ich habe überprüft, welche Dateien pam_mountin ihrem Inhalt enthalten sind, und habe Folgendes erhalten:

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

Der Inhalt der Dateien:

#
# /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

und:

#
# /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

UPDATE # 2

Ich benutze Debian-Tests. Ich habe versucht, die Position von zu ändern pam_mount, aber es ist immer das gleiche. Ich habe einige Abschnitte des Handbuchs gelesen und es gab so etwas wie:

 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.

Ich pam_mounthabe der /etc/pam.d/suDatei sogar hinzugefügt , um zu überprüfen, ob dies einen Unterschied macht, aber das spielt keine Rolle. Wenn pam_mountzuerst, wie sie sagen, anstelle einer Kennwortabfrage eine Eingabeaufforderung pam_mount passwordangezeigt wird, wenn ich mich bei meinem System anmelde, und beim Versuch immer noch nach dem Kennwort gefragt wirdsu morfik

Mikhail Morfikov
quelle
Hast du das schon gelöst?
PSkocik
Eigentlich habe ich vor langer Zeit aufgehört, encfs zu verwenden, und ich habe das Problem in der Vergangenheit nicht gelöst. Ich habe gerade das entsprechende PAM-Modul installiert, und wenn ich den betreffenden Benutzer von root aus "su", gibt es keine Passwortabfrage. Wenn ich der /etc/security/pam_mount.conf.xmlDatei jedoch eine Volume-Zeile hinzufüge , wird die Eingabeaufforderung angezeigt.
Mikhail Morfikov

Antworten:

2

Bin auf das gleiche Problem gestoßen.

Es stellt sich heraus, dass das Problem durch Hinzufügen der disable_interactiveOption neben pam_mount.soin den Konfigurationsdateien ( /etc/pam.d/common-{auth,session}) behoben ist .

Es kommt direkt danach pam_mount.sound die Optionen werden durch Leerzeichen getrennt (vom soDateinamen und zwischen jeweils zwei Optionen).

Wenn der pam_mount.soCode bei einer Anmeldung ausgeführt wird, erhält er das Kennwort oben im Stapel und entschlüsselt Ihr Volume mit diesem Kennwort.

Wenn Sie suvon einer Root-Sitzung aus arbeiten, ist kein Kennwort erforderlich und Sie erhalten daher pam_mount.sokein Kennwort. Ohne die disable_interactiveOption wird also versucht, das Passwort zu erhalten.

Wie Sie unter https://sourceforge.net/p/pam-mount/pam-mount/ci/master/tree/src/pam_mount.c , Zeile 493 sehen können, pam_mountwird glücklicherweise versucht, auch ohne Passwort fortzufahren ist gut, da das Passwort nicht benötigt wird, wenn das Volume bereits entsperrt und gemountet ist.

PSkocik
quelle
Ich habe den Parameter teilweise getestet, weil ich ihn nicht encfsmehr benutze . Ich habe gerade die Verzeichnisse erstellt und entsprechende PAM-Module installiert. Nach dem Hinzufügen von "disable_interactive" zu den beiden Dateien wurde die Kennwortabfrage nicht mehr angezeigt. Ich bin nicht sicher, ob die Meldung "Mount fehlgeschlagen" auf das Kennwort zurückzuführen ist oder ob es kein "encfs-Verzeichnis" gibt. Jedenfalls konnte ich den Benutzer ohne Passwort wechseln. Also akzeptiere ich diese Antwort.
Mikhail Morfikov
1

Raten Sie mal, aber sehen Sie sich Ihre /etc/pam.d/*Dateien an und stellen Sie sicher, dass alle PAM-Konfigurationen pam_mountwie folgt eingerichtet sind:

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

Dies scheint durch die pam_mount.confManpage gesichert zu sein :

Auszug

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.

HINWEIS: Die Reihenfolge der /etc/pam.d/*Konfigurationsdateien wird auch hier in diesem ArchLinux-Wiki-Thema mit dem Titel: Pam mount angegeben .

Verweise

slm
quelle
@MikhailMorfikov - Ich bin mir nicht sicher, ob Sie Debian oder Ubuntu verwenden, aber wenn Sie sich die Manpage ansehen, pam_mountfinden Sie einige Beispiele, wie Sie Ihre PAM-Bestellung mit diesem Modul strukturieren können. Können Sie sich das ansehen und mit Ihren /etc/pam.d/*Dateien vergleichen? Ich gehe davon aus, dass Sie die PAM-Stapel ändern müssen. Können Sie dies ausführen, strace -s 2000 -o su.log su morfikdamit wir sehen können, welche Regeln es auslösen?
slm
Ich habe die Frage aktualisiert.
Mikhail Morfikov