LINUX.ORG.RU
ФорумAdmin

pam_mount - не размонтируется luks lv при выходе из графического режима

 ,


0

1

На свежеустановленном debian jessie (все обновления) мучаю pam_mount. Имеется lv, зашифрованный dmcrypt/luks, используемый как хомяк для одного из юзеров. В /etc/security/pam_mount.conf.xml задан следующим образом:

<volume user="work" path="/dev/vg1/work" mountpoint="~" fstype="crypt" />

Так вот, все работает если логиниться пользователем в консоли или через su. Но если залогиниться в графическом режиме (kde через kdm), то при выходе хомяк не размонтируется. Пробовал играться значениями logout в pam_mount.conf.xml - включил kill, установил wait в 60000, пробовал hup=«1» и term=«1» (кстати, нигде не нашел, что они вообще означают, но на всякий случай), но результата не добился.

В логи пишет следующее:

Jan 23 15:43:16 deneb polkitd(authority=local): Unregistered Authentication Agent for unix-session:33 (system bus name :1.308, object path /org/kde/PolicyKit1/AuthenticationAgent, locale ru_
RU.UTF-8)
Jan 23 15:43:16 deneb kdm: :2[12823]: pam_unix(kdm:session): session closed for user work
Jan 23 15:43:16 deneb kdm: :2[12823]: (pam_mount.c:706): received order to close things
Jan 23 15:43:16 deneb kdm: :2[12823]: command: 'pmvarrun' '-u' 'work' '-o' '-1'
Jan 23 15:43:16 deneb kdm: :2[12823]: (pam_mount.c:441): pmvarrun says login count is 0
Jan 23 15:43:16 deneb kdm: :2[12823]: command: 'pmt-ofl' '-k1' '/home/work'
Jan 23 15:43:16 deneb kdm: :2[12823]: command: 'pmt-ofl' '-k15' '/home/work'
Jan 23 15:43:16 deneb kdm: :2[12823]: command: 'pmt-ofl' '-k9' '/home/work'
Jan 23 15:43:16 deneb kdm: :2[12823]: (mount.c:889): going to unmount
Jan 23 15:43:16 deneb kdm: :2[12823]: (mount.c:267): Mount info: globalconf, user=work <volume fstype="crypt" server="(null)" path="/dev/vg1/work" mountpoint="/home/work" cipher="(null)"
fskeypath="(null)" fskeycipher="(null)" fskeyhash="(null)" options="" /> fstab=0 ssh=0
Jan 23 15:43:16 deneb kdm: :2[12823]: command: 'pmt-ofl' '-k0' '/home/work'
Jan 23 15:43:17 deneb kdm: :2[12823]: command: 'umount.crypt' '/home/work'
Jan 23 15:43:17 deneb kdm: :2[12823]: (mount.c:72): umount messages:
Jan 23 15:43:17 deneb kdm: :2[12823]: (mount.c:76): NOTE: mount.crypt does not support utab (systems with no mtab or read-only mtab) yet. This means that you will temporarily need to call um
ount.crypt(8) rather than umount(8) to get crypto volumes unmounted.
Jan 23 15:43:17 deneb kdm: :2[12823]: (mount.c:76): umount: /home/work: target is busy
Jan 23 15:43:17 deneb kdm: :2[12823]: (mount.c:76):         (In some cases useful info about processes that
Jan 23 15:43:17 deneb kdm: :2[12823]: (mount.c:76):          use the device is found by lsof(8) or fuser(1).)
Jan 23 15:43:17 deneb kdm: :2[12823]: (mount.c:76): umount /home/work failed with run_sync status 2
Jan 23 15:43:21 deneb kdm: :2[12823]: (mount.c:892): unmount of /dev/vg1/work failed
Jan 23 15:43:21 deneb kdm: :2[12823]: (pam_mount.c:743): pam_mount execution complete
Jan 23 15:43:21 deneb kdm: :2[12823]: (pam_mount.c:116): Clean global config (0)
Jan 23 15:43:21 deneb kdm: :2[12823]: (pam_mount.c:133): clean system authtok=0xe74ea0 (0)
Jan 23 15:43:24 deneb systemd-logind[743]: Removed session 33.
Jan 23 15:43:24 deneb systemd: pam_unix(systemd-user:session): session closed for user work
Jan 23 15:43:29 deneb kcheckpass[13196]: (pam_mount.c:365): pam_mount 2.14: entering auth stage
Jan 23 15:43:29 deneb kcheckpass[13196]: (pam_mount.c:133): clean system authtok=0x15af150 (0)

При этом сразу же после выхода ручками отмонтируется без проблем.

В чем может быть трабла?

Продолжил копать... В общем, насколько я понял, отключение осуществляется утилитой umount.crypt - видимо она должна в один присест и размонтировать и отключать шифрованый том. Однако при выходе из графического режима почему-то не срабатывает - в том числе и при ручном запуске (при незалогиненном пользователе work), заявляя, что указанная точка монтирования таковой не является:

$ sudo umount.crypt /home/work/
NOTE: mount.crypt does not support utab (systems with no mtab or read-only mtab) yet. This means that you will temporarily need to call umount.crypt(8) rather than umount(8) to get crypto volumes unmounted.
No vfsmount found while searching for "/home/work" as a container file, or as a mountpoint. (According to the intersection of cmtab (/run/cmtab) with smtabs)
$

Теоретически можно сваять какую-нибудь альтернативу этом umount.crypt с отмонтированием обычными средствами и последующим отключением, но очень не хочется костылей...

Может кто-то подскажет, где собака порылась?

rygoravich
() автор топика
Ответ на: комментарий от rygoravich

Столкнулся при работе с централизованными профилями через nfs+kerberos с таким же (как только запускаю сессию с иксами - отмонтирование не работает). Помогло только прописать в pam_mount принудительный вызов umount с опцией "--lazy".

<umount>/bin/umount -l %(MNTPT)</umount>
Какая-то программа у вас держит файлы и не умеет корректно завершатся при завершении сессии пользователя. term/kill у pam_mount по какой-то причине не срабатывают (хотя, теоретически, должны отослать программе сигнал завершения, а если что-то не так - пристрелить).

Не совсем ваш случай, но, может поможет...

viewizard ★★
()

Напомните мне - в jessie ведь уже systemd?

Если да - то тут и может быть проблема. Открывал год-два назад тикет в трекере systemd, что не размонтируются директории при логауте. На что сам Лёня отписался, что это не проблема systemd, а проблема pam_mount (или что-то в этом духе). Если не лень - поищите в трекере.

Хотя с той скоростью, с какой systemd развивается, может уже и нет этой проблемы. Я просто перестал pam_mount юзать....

MadMax
()
Последнее исправление: MadMax (всего исправлений: 1)
Ответ на: комментарий от viewizard

Спасибо за ответ, но мне такой вариант не подходит, т.к. шифрованный том при этом не отключается...

Добрался до виновника трабла - им оказался akonadi. Продолжаю копать...

rygoravich
() автор топика
Ответ на: комментарий от MadMax

В общем, спасибо всем, кто отозвался, сконструировал спасительный костыль.

Причину устранить не удалось - кстати, на КДЕшном багтрекере висит уже больше пяти лет: https://bugs.kde.org/show_bug.cgi?id=244250 , принудить pam_mount убивать процесс тоже не удалось, но последствия этих моментов убрал.

Итак, в /etc/security/pam_mount.conf.xml:

...
<cryptumount>/usr/local/sbin/umount-crypt.sh %(MNTPT)</cryptumount>

<volume user="work" path="/dev/vg1/work" mountpoint="/home/work" fstype="crypt" options="crypto_name=work_cry,fsck" />
...

И, соответственно, создал /usr/local/sbin/umount-crypt.sh со следующим содержимым:

#!/bin/sh

fuser -m $1 -s -k -TERM && sleep 5 && umount.crypt $1
rygoravich
() автор топика
Ответ на: комментарий от rygoravich

Да, важное дополнение - еще в pam_mount.conf.xml обязательно нужно <logout wait=«5» hup=«0» term=«1» kill=«0» /> - без этого не работает.

rygoravich
() автор топика
Ответ на: комментарий от rygoravich

И еще дополнение - команда из /usr/local/sbin/umount-crypt.sh должна выглядеть так:

fuser -m $1 -s -k -TERM ; sleep 5 ; umount.crypt $1

Иначе отмонтирование не срабатывает если выходить из консольного логина (очевидно, если fuser не находит процессов, то возвращает ошибку и в исходном варианте команды sleep и umount.crypt не выполняются).

rygoravich
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.