Автор Тема: Simply Linux 8.2.0 / После завершения сеанса остаются играющие процессы  (Прочитано 5810 раз)

Оффлайн klark973

  • Завсегдатай
  • *
  • Сообщений: 662
  • Неспящий саппорт
Почему отстой и почему страдать могу объяснить. В данной архитектуре подразумевается такая логика: чтобы ресурсы отмонтировались при завершении сеанса, все программы, которые их используют, должны быть сначала завершены нетрадиционным средством ofl. Поскольку средства нет, приходится куда-то вкорячивать скрипт с pkill. А выход из сеанса -- процедура системная, требующая оперативной реакции. И штатная реализация loginctl/lightdm сама убивает все процессы юзера. При использовании ядерного автомонтирования, сетевые ресурсы отмонтируются сами по таймауту после того, как штатными средствами все процессы пользователя завершатся. И никаких костылей.
To moan or to solve -- that is the question!

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Я сейчас точно не скажу, но раньше, возможно на p7, отключение каталогов через pam_mount было корректным. Там уже был systemd.
Сейчас запустил виртуалку с Simply Linux 8.2.0, настроил pam_mount и только после самого первого входа почему-то был umount, при последующих входах почему-то в логах вообще ничего нет про umount:
Jun 29 11:20:06 simply.firma.ru lightdm[1408]: pam_tcb(lightdm:session): Session closed for admin
Jun 29 11:20:06 simply.firma.ru lightdm[525]: (pam_mount.c:706): received order to close things
Jun 29 11:20:06 simply.firma.ru lightdm[525]: command: '/usr/sbin/pmvarrun' '-u' 'admin' '-o' '-1'
Jun 29 11:20:06 simply.firma.ru lightdm[1408]: (pam_mount.c:706): received order to close things
Jun 29 11:20:06 simply.firma.ru lightdm[1408]: command: '/usr/sbin/pmvarrun' '-u' 'admin' '-o' '-1'
Jun 29 11:20:06 simply.firma.ru lightdm[525]: (pmvarrun.c:254): parsed count value 1
Jun 29 11:20:06 simply.firma.ru lightdm[1408]: (pam_mount.c:441): pmvarrun says login count is 0
Jun 29 11:20:06 simply.firma.ru lightdm[525]: (pam_mount.c:441): pmvarrun says login count is 0
Jun 29 11:20:06 simply.firma.ru lightdm[1408]: (mount.c:885): going to unmount
Jun 29 11:20:06 simply.firma.ru lightdm[525]: (mount.c:885): going to unmount
Jun 29 11:20:06 simply.firma.ru lightdm[1408]: (mount.c:263): Mount info: globalconf, user=admin <volume fstype="cifs" server="192.168.1.70" path="disk9" mountpoint="/home/admin/Рабочий стол/Сеть/disk9" cipher="(null)" fskeypath="(null)" fskeycipher="(null)" fskeyhash="(null)" options="guest" /> fstab=0 ssh=0
Jun 29 11:20:06 simply.firma.ru lightdm[525]: (mount.c:263): Mount info: globalconf, user=admin <volume fstype="cifs" server="192.168.1.70" path="disk9" mountpoint="/home/admin/Рабочий стол/Сеть/disk9" cipher="(null)" fskeypath="(null)" fskeycipher="(null)" fskeyhash="(null)" options="guest" /> fstab=0 ssh=0
Jun 29 11:20:06 simply.firma.ru lightdm[1408]: command: 'ofl' '-k0' '/home/admin/Рабочий стол/Сеть/disk9'
Jun 29 11:20:06 simply.firma.ru lightdm[525]: command: 'ofl' '-k0' '/home/admin/Рабочий стол/Сеть/disk9'
Jun 29 11:20:06 simply.firma.ru lightdm[525]: HXproc_run_async: ofl: Нет такого файла или каталога
Jun 29 11:20:06 simply.firma.ru lightdm[1408]: command: '/bin/umount' '/home/admin/Рабочий стол/Сеть/disk9'
Jun 29 11:20:06 simply.firma.ru lightdm[525]: command: '/bin/umount' '/home/admin/Рабочий стол/Сеть/disk9'
Jun 29 11:20:06 simply.firma.ru lightdm[1408]: (mount.c:68): umount messages:
Jun 29 11:20:06 simply.firma.ru lightdm[525]: (mount.c:68): umount messages:
Jun 29 11:20:06 simply.firma.ru lightdm[525]: (mount.c:72): umount: /home/admin/Рабочий стол/Сеть/disk9: target is busy.
Jun 29 11:20:06 simply.firma.ru lightdm[1408]: (mount.c:72): umount: /home/admin/Рабочий стол/Сеть/disk9: target is busy.
Jun 29 11:20:06 simply.firma.ru lightdm[1408]: (mount.c:444): could not remove /home/admin/Рабочий стол/Сеть/disk9: Устройство или ресурс занято
Jun 29 11:20:06 simply.firma.ru lightdm[525]: (mount.c:444): could not remove /home/admin/Рабочий стол/Сеть/disk9: Устройство или ресурс занято
Jun 29 11:20:06 simply.firma.ru lightdm[525]: (mount.c:888): unmount of disk9 failed
Jun 29 11:20:06 simply.firma.ru lightdm[525]: (pam_mount.c:743): pam_mount execution complete
Jun 29 11:20:06 simply.firma.ru lightdm[1408]: (mount.c:888): unmount of disk9 failed
Jun 29 11:20:06 simply.firma.ru lightdm[1408]: (pam_mount.c:743): pam_mount execution complete
Jun 29 11:20:06 simply.firma.ru lightdm[1408]: (pam_mount.c:116): Clean global config (0)
Jun 29 11:20:06 simply.firma.ru lightdm[525]: (pam_mount.c:116): Clean global config (0)

Вот что это было за просветление ???
Здесь как раз он и ищет свой ofl.
Сноси Винду, переходи на Линукс ! :)

Оффлайн klark973

  • Завсегдатай
  • *
  • Сообщений: 662
  • Неспящий саппорт
раньше, возможно на p7, отключение каталогов через pam_mount было корректным. Там уже был systemd.
ofl тогда был частью pam_mount, при очередном обновлении версии в апстриме пакет разнесли на libHX, hxtools и pam_mount, а у нас hxtools до Сизифа видать не довезли.

Вот что это было за просветление ???
Есть подозрение, что logout был один и он всё ещё в процессе. Может, loginctl что-то подскажет? В любом случае с этим логом стало понятно, кто виноват и на что вешать багу.

P.S.: я бы сделал пока в /usr/local/bin/ofl (chmod +x) скрипт с чем-то вроде exec loginctl kill-user "$1"
« Последнее редактирование: 29.06.2019 16:17:37 от klark973 »
To moan or to solve -- that is the question!

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
В общем отсутствие ofl на отмонтирование каталога в принципе не влияет.

Решение нашёл здесь https://wiki.archlinux.org/index.php/Pam_mount#Login_manager_configuration

/etc/pam.d/system-auth-sss привёл к такому виду (можно в принципе common-login править):
#%PAM-1.0
auth required pam_env.so
auth [success=ignore default=1] pam_localuser.so
auth [success=done default=bad] pam_tcb.so shadow fork prefix=$2y$ count=8 nullok
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_sss.so

account [success=ignore default=1] pam_localuser.so
account [success=done default=bad] pam_tcb.so shadow fork
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so

password [success=ignore default=2] pam_localuser.so
password required pam_passwdqc.so config=/etc/passwdqc.conf
password [success=done default=bad] pam_tcb.so use_authtok shadow fork prefix=$2y$ count=8 nullok write_to=tcb
password requisite pam_succeed_if.so uid >= 500 quiet
password required pam_sss.so

session [success=1 default=ignore]  pam_succeed_if.so  service = systemd-user quiet
session    optional   pam_mount.so
-session optional pam_keyinit.so revoke
-session optional pam_systemd.so
session [success=1 default=ignore] pam_localuser.so
session [success=1 default=1] pam_sss.so
session optional pam_tcb.so
session required pam_mktemp.so
session required pam_mkhomedir.so silent
session required pam_limits.so

Заметил, что достаточно добавить только интерфейс session, то есть auth можно не добавлять вовсе.

После этого каталог нормально подключается и отключается, правда есть одно НО. Если практически сразу же после появления рабочего стола завершить сеанс, то вероятность получить ошибку при отмонтировании 'target is busy' очень велика. Уж не знаю почему, но похоже какие-то сервисы пока не запустятся полностью, потом не могут нормально выключиться и соответственно блокируют отключение каталога. Вероятно, это делает tracker-search. В общем мне помогало сделать перед отмонтированием:
pkill -f dbus* -u $USER
Тогда можно было вручную отключить каталог. Кстати lsof не показывает, что блокирует отключение.
В остальном всё нормально работает. Возможно, если в наличии будет ofl, то можно будет покрутить эти настройки:
<!-- requires ofl from hxtools to be present -->
<logout wait="0" hup="no" term="no" kill="no" />
и тогда можно будет хотя бы выставить задержку для отмонтирования, неизвестно правда как она поможет при отключении каталога.

В итоге: есть ли смысл вешать баг насчёт ofl ? Для себя в принципе считаю что вопрос решён.
« Последнее редактирование: 29.06.2019 17:35:02 от berkut_174 »
Сноси Винду, переходи на Линукс ! :)

Оффлайн klark973

  • Завсегдатай
  • *
  • Сообщений: 662
  • Неспящий саппорт
В общем отсутствие ofl на отмонтирование каталога в принципе не влияет.
Поскольку вероятность получить ошибку при отмонтировании 'target is busy' очень велика, всё-таки влияет.

В итоге: есть ли смысл вешать баг насчёт ofl ? Для себя в принципе считаю что вопрос решён.
Попробуйте повесить. С этим логом и предложением собрать hxtools отдельно или ofl в том же пакете.

Заметил, что достаточно добавить только интерфейс session, то есть auth можно не добавлять вовсе.
Наверное, это всё-таки зависит от конкретной ситуации. Дело в том, что при написании модулей PAM, создавать "заглушки" не надо, они и так используются по умолчанию. Настоящий функционал там висит на открытии и закрытии сеанса. Есть ещё грабинг пароля при аутентификции и смене пароля. Видимо, вам это как раз не требуется. Всё остальное в коде -- "заглушки". Если в каких-то случаях вовремя не сграбить пароль при аутентификации, как сессионный модуль подключится к сетевому ресурсу без пароля? Где иной механизм, это может действительно необязательно.
To moan or to solve -- that is the question!

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Поскольку вероятность получить ошибку при отмонтировании 'target is busy' очень велика, всё-таки влияет.
Мне кажется, что ответ будет примерно таким же:
... воспроизводимость в реальной жизни низкая.
:-)

Да и неизвестно, поможет ли этот ofl при 'target is busy'. Впрочем, попытка не пытка.
Сноси Винду, переходи на Линукс ! :)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 145
    • Email
Сноси Винду, переходи на Линукс ! :)