Archlinux x64 systemd 208 The "/usr/lib/systemd/systemd --user" process exists after user logout. This prevents unmounting volumes listed in the pam_mount.xml. This affects logins to DE as well as remote logins via ssh.
The issue exists in systemd 207 and 208. Some of previous versions work fine.
Isn't there a deeper - fundamental bug: The pam infrastructure normally is used to get credentials only. But pam_mount does something that systemd-user should do. And it does it by using very special xml config files! For the user/admin this means breakage in two regards: - a mount NOT done,registered by using Systemd - very different scheme and logic to configure this
I've tried to create a user-specific systemd.mount unit and put it in $HOME/.config/systemd/user. This solution does not work because the "mount" command requires the root privileges. "User=root" and "Group=root" options do not help - and it is good, I do not think that these options shall be acceptable in the user-specific units. I believe that mounting can be achieved by writing user-specific systemd.serivce unit and tricks with sudoers and shell scripts. But it is not a graceful way I think.
User managers should now go away: http://cgit.freedesktop.org/systemd/systemd/commit/?id=63966da. If not, please reopen.
Retested on Archlinux systemd-208-3 Test flow: "tst" user logs in via ssh and logs out. No user prosesses remains after logout but the volume is still mounted. pam_mount debug=1 Journald logs: <login> Jan 10 15:36:30 n102805 sshd[32375]: (pam_mount.c:365): pam_mount 2.14: entering auth stage Jan 10 15:36:30 n102805 sshd[32375]: Accepted password for tst from 127.0.0.1 port 43475 ssh2 Jan 10 15:36:30 n102805 sshd[32375]: (pam_mount.c:568): pam_mount 2.14: entering session stage Jan 10 15:36:30 n102805 sshd[32375]: (mount.c:263): Mount info: globalconf, user=tst <volume fstyp...sh=0 Jan 10 15:36:30 n102805 sshd[32375]: (mount.c:660): Password will be sent to helper as-is. Jan 10 15:36:30 n102805 sshd[32375]: command: 'mount' '-p0' '-osize=256M,uid=tst' '-ttmpfs' 'tmpfs...che' Jan 10 15:36:30 n102805 sshd[32375]: (mount.c:68): Messages from underlying mount program: Jan 10 15:36:30 n102805 sshd[32375]: (mount.c:72): mount: --pass-fd is no longer supported *** Jan 10 15:36:30 n102805 sshd[32375]: command: 'pmvarrun' '-u' 'tst' '-o' '1' Jan 10 15:36:30 n102805 sshd[32375]: (pam_mount.c:441): pmvarrun says login count is 1 Jan 10 15:36:30 n102805 sshd[32375]: (pam_mount.c:660): done opening session (ret=0) Jan 10 15:36:30 n102805 sshd[32375]: pam_unix(sshd:session): session opened for user tst by (uid=0) Jan 10 15:36:30 n102805 systemd[1]: Starting user-1001.slice. Jan 10 15:36:30 n102805 systemd[1]: Created slice user-1001.slice. Jan 10 15:36:30 n102805 systemd[1]: Starting User Manager for 1001... Jan 10 15:36:30 n102805 systemd[1]: Starting Session 74 of user tst. Jan 10 15:36:30 n102805 systemd-logind[355]: New session 74 of user tst. Jan 10 15:36:30 n102805 systemd[1]: Started Session 74 of user tst. Jan 10 15:36:30 n102805 systemd[32402]: (pam_mount.c:568): pam_mount 2.14: entering session stage Jan 10 15:36:30 n102805 systemd[32402]: (pam_mount.c:173): conv->conv(...): Conversation error Jan 10 15:36:30 n102805 systemd[32402]: (pam_mount.c:477): warning: could not obtain password interactively either Jan 10 15:36:30 n102805 systemd[32402]: (mount.c:263): Mount info: globalconf, user=tst <volume fstype="tmpfs" server="(null)" path="tmpfs" mountpoint="/home/tst/.cache" cipher="(null)" fskeypath="(null)" fskeyc Jan 10 15:36:30 n102805 systemd[32402]: (mount.c:624): tmpfs already seems to be mounted at /home/tst/.cache, skipping Jan 10 15:36:30 n102805 systemd[32402]: (pam_mount.c:173): conv->conv(...): Conversation error Jan 10 15:36:30 n102805 systemd[32402]: (pam_mount.c:477): warning: could not obtain password interactively either Jan 10 15:36:30 n102805 systemd[32402]: command: 'pmvarrun' '-u' 'tst' '-o' '1' Jan 10 15:36:30 n102805 systemd[32402]: (pam_mount.c:568): pam_mount 2.14: entering session stage Jan 10 15:36:30 n102805 systemd[32402]: (pam_mount.c:173): conv->conv(...): Conversation error Jan 10 15:36:30 n102805 systemd[32402]: (pam_mount.c:477): warning: could not obtain password interactively either Jan 10 15:36:30 n102805 systemd[32402]: (mount.c:263): Mount info: globalconf, user=tst <volume fstype="tmpfs" server="(null)" path="tmpfs" mountpoint="/home/tst/.cache" cipher="(null)" fskeypath="(null)" fskeyc Jan 10 15:36:30 n102805 systemd[32402]: (mount.c:624): tmpfs already seems to be mounted at /home/tst/.cache, skipping Jan 10 15:36:30 n102805 systemd[32402]: (pam_mount.c:173): conv->conv(...): Conversation error Jan 10 15:36:30 n102805 systemd[32402]: (pam_mount.c:477): warning: could not obtain password interactively either Jan 10 15:36:30 n102805 systemd[32402]: command: 'pmvarrun' '-u' 'tst' '-o' '1' Jan 10 15:36:30 n102805 systemd[32402]: (pmvarrun.c:254): parsed count value 1 Jan 10 15:36:30 n102805 systemd[32402]: (pam_mount.c:441): pmvarrun says login count is 2 Jan 10 15:36:30 n102805 systemd[32402]: (pam_mount.c:660): done opening session (ret=0) Jan 10 15:36:30 n102805 systemd[32402]: pam_unix(systemd-user:session): session opened for user tst by (uid=0) Jan 10 15:36:30 n102805 systemd[32402]: (pam_mount.c:441): pmvarrun says login count is 2 Jan 10 15:36:30 n102805 systemd[32402]: (pam_mount.c:660): done opening session (ret=0) Jan 10 15:36:30 n102805 systemd[32402]: Failed to open private bus connection: Failed to connect to socket /run/user/1001/dbus/user_bus_socket: No such file or directory Jan 10 15:36:30 n102805 systemd[32402]: Mounted /sys/kernel/config. Jan 10 15:36:30 n102805 systemd[32402]: Mounted /sys/fs/fuse/connections. Jan 10 15:36:30 n102805 systemd[32402]: Stopped target Sound Card. Jan 10 15:36:30 n102805 systemd[32402]: Starting Default. Jan 10 15:36:30 n102805 systemd[32402]: Reached target Default. Jan 10 15:36:30 n102805 systemd[32402]: Startup finished in 11ms. Jan 10 15:36:30 n102805 systemd[1]: Started User Manager for 1001. <logout> Jan 10 15:38:13 n102805 sshd[32404]: Received disconnect from 127.0.0.1: 11: disconnected by user Jan 10 15:38:13 n102805 sshd[32375]: (pam_mount.c:706): received order to close things Jan 10 15:38:13 n102805 sshd[32375]: command: 'pmvarrun' '-u' 'tst' '-o' '-1' Jan 10 15:38:13 n102805 sshd[32375]: (pam_mount.c:441): pmvarrun says login count is 1 Jan 10 15:38:13 n102805 sshd[32375]: (pam_mount.c:735): tst seems to have other remaining open sessions Jan 10 15:38:13 n102805 sshd[32375]: (pam_mount.c:743): pam_mount execution complete Jan 10 15:38:13 n102805 sshd[32375]: pam_unix(sshd:session): session closed for user tst Jan 10 15:38:13 n102805 sshd[32375]: (pam_mount.c:116): Clean global config (0) Jan 10 15:38:13 n102805 sshd[32375]: (pam_mount.c:133): clean system authtok=0x1cc1a90 (0) Jan 10 15:38:13 n102805 systemd-logind[355]: Removed session 74. Jan 10 15:38:13 n102805 systemd[1]: Stopping User Manager for 1001... Jan 10 15:38:13 n102805 systemd[32408]: (pam_mount.c:116): Clean global config (1073741824) Jan 10 15:38:13 n102805 systemd[32402]: (pam_mount.c:116): Clean global config (1073741824) Jan 10 15:38:13 n102805 systemd[32402]: Stopping Default. Jan 10 15:38:13 n102805 systemd[32402]: Stopped target Default. Jan 10 15:38:13 n102805 systemd[32402]: Starting Shutdown. Jan 10 15:38:13 n102805 systemd[32402]: Reached target Shutdown. Jan 10 15:38:13 n102805 systemd[32402]: Starting Exit the Session... Jan 10 15:38:13 n102805 systemd[1]: Stopped User Manager for 1001. Jan 10 15:38:13 n102805 systemd[1]: Stopping user-1001.slice. Jan 10 15:38:13 n102805 systemd[1]: Removed slice user-1001.slice. On login: The sshd mounts the volume and increases /var/run/pam_mount/tst by '1'. The systemd makes the same things. Volume is mounted already and /var/run/pam_mount/tst is increased by '1' again. Now it is equal to '2'. (Duplicated logs from systemd/pam_mount. Is it a problem?) On logout: The sshd closes session. The pam_sm_close_session() (pam_mount.c) function is called. It decreases /var/run/pam_mount/tst by '-1'. But the value is still positive ('1') and no unmounting is performed. The systemd closes session but the pam_sm_close_session() function is not called and the volume remains mounted.
pam_mount really should learn to deal with abnormal PAM session termination. For example pam_systemd/logind track sessions with a dangling fifo to make this robust.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.