Автор Тема: Отказ запуска telegtam v3.3.0 в xfce-sysv  (Прочитано 1001 раз)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Отказ запуска telegram при повышении версии с tsetup.2.7.1.tar.xz до версии tsetup.3.3.0.tar.xz

Версия 3.3.0:

Хочет явного указания переменной XDG_RUNTIME_DIR
StandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/.private/user/runtime-user'

с правами на каталог 0700:
QStandardPaths: wrong permissions on runtime directory /home/user, 0755 instead of 0700

Иначе отказ запуска.


См. $XDG_RUNTIME_DIR:
https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables

Оффлайн zerg

  • ненужная строка
  • alt linux team
  • ***
  • Сообщений: 2 486
  • ненужная строка
    • Найдётся всё
Убрать этот мусор можно переключателем: Не показывать подписи других пользователей.

Оффлайн zerg

  • ненужная строка
  • alt linux team
  • ***
  • Сообщений: 2 486
  • ненужная строка
    • Найдётся всё
Re: Отказ запуска telegtam v3.3.0 в xfce-sysv
« Ответ #2 : 09.12.2021 17:43:04 »
Т.е. вопрос к вашей системе, которая не обеспечила необходимое окружение.
Убрать этот мусор можно переключателем: Не показывать подписи других пользователей.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Отказ запуска telegtam v3.3.0 в xfce-sysv
« Ответ #3 : 09.12.2021 17:48:54 »
Т.е. вопрос к вашей системе, которая не обеспечила необходимое окружение.

Согласен. Это относится к pam_systemd, которого в системах на sysv нет:
https://man7.org/linux/man-pages/man8/pam_systemd.8.html

Оффлайн zerg

  • ненужная строка
  • alt linux team
  • ***
  • Сообщений: 2 486
  • ненужная строка
    • Найдётся всё
Re: Отказ запуска telegtam v3.3.0 в xfce-sysv
« Ответ #4 : 10.12.2021 15:45:30 »
systemd
Да я догадался. Только systemd тут ни при чём, т.к. в спецификации про него не указано.
Убрать этот мусор можно переключателем: Не показывать подписи других пользователей.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Отказ запуска telegtam v3.3.0 в xfce-sysv
« Ответ #5 : 11.12.2021 02:25:59 »
systemd
Да я догадался. Только systemd тут ни при чём, т.к. в спецификации про него не указано.

Полазил по лайву стартеркита xfce с systemd, посмотреть как это там устроено.
Мыслил так:
Переменной XDG_RUNTIME_DIR присваивает значение /lib64/security/pam_systemd.so
$ export | grep XDG_RUNTIME_DIR
declare -x XDG_RUNTIME_DIR="/run/user/500"

Но непонятно было, что создаёт каталог /run/user/$UID и когда.
Спросил гугл:
https://unix.stackexchange.com/questions/162900/what-is-this-folder-run-user-1000

Парни говорят, что /run/user/$UID создаёт pam_systemd.so и он же присваивает это значение переменной XDG_RUNTIME_DIR.
С кодом Си, это мягко говоря не ко мне, но в комментарии, в строках 483-488, увидел отказ присвоения переменной, если  каталог не корректный:
https://github.com/systemd/systemd/blob/main/src/login/pam_systemd.c

Т.е. получается что pam_systemd.so создаёт каталог /run/user/$UID с нужными правами
# ll /run/user
итого 0
drwxr-xr-x 33 root     root     800 дек 11  2021 ../
drwx------  9 altlinux altlinux 220 дек 11  2021 500/
drwxr-xr-x  3 root     root      60 дек 11  2021 ./

и он же присваивает этот путь переменной
# strings /lib64/security/pam_systemd.so | grep 'XDG_RUNTIME_DIR\|run/user'
XDG_RUNTIME_DIR
/run/user/%u
Not setting $XDG_RUNTIME_DIR, as the directory is not in order.
/run/userdb

Сам каталог находится в tmpfs
# mount | grep run/user
tmpfs on /run/user/500 type tmpfs (rw,nosuid,nodev,noexec,relatime,size=1630992k,nr_inodes=407748,mode=700,uid=500,gid=500)
gvfsd-fuse on /run/user/500/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=500,group_id=500)

И судя по всему, создаётся он на логине пользователя:
# ll /run/user
итого 0
drwxr-xr-x 33 root     root     800 дек 11  2021 ../
drwx------  9 altlinux altlinux 220 дек 11  2021 500/
drwxr-xr-x  3 root     root      60 дек 11  2021 ./
# grep 50[0-3] /etc/group
altlinux:x:500:
tester:x:501:
# who
altlinux tty1         2021-12-11 04:16 (:0)
root     pts/1        2021-12-11 01:20 (localhost)


В альтовых системах на sysv, авторизация сломана.
И судя по соощению Лёши Гладкова, починить её в альтах, не представляется возможным:
https://lists.altlinux.org/pipermail/devel/2019-November/208963.html

Сделать бы хотя бы грубую прикидку, как бы выкрутить этот XDG_RUNTIME_DIR в альтах на sysv.
Если не трогать альтовые пакеты, на ум пришёл костыль, который положить в пакет polkit-sysvinit:
В /etc/xdg/autostart ложить desktop-файл с командой создающей /run/user/$UID, устанавливающей chmod 0700 и присваивающей значение XDG_RUNTIME_DIR. Но работать это будет только при входе пользователя в X-сессию.
Как это сделать лучше, чтобы было и при логине через tty в runlevel 3, всё в тумане.

Но эта проблема, порождает другую проблему:
Как грохнуть каталог /run/user/$UID на выходе из сессии.
« Последнее редактирование: 11.12.2021 04:21:11 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Отказ запуска telegtam v3.3.0 в xfce-sysv
« Ответ #6 : 11.12.2021 04:51:36 »
Но эта проблема, порождает другую проблему:
Как грохнуть каталог /run/user/$UID на выходе из сессии.

Гугл по запросу
how to execute command on logout session linux
через stackexchange подсказывает, что это лучше выкручивать через pam
Force command to be run on logout or disconnect?
https://unix.stackexchange.com/questions/136548/force-command-to-be-run-on-logout-or-disconnect

# strings /lib64/security/pam_exec.so | grep _session
pam_sm_open_session
pam_sm_close_session
open_session
close_session
« Последнее редактирование: 11.12.2021 05:05:40 от Speccyfighter »

Оффлайн zerg

  • ненужная строка
  • alt linux team
  • ***
  • Сообщений: 2 486
  • ненужная строка
    • Найдётся всё
Re: Отказ запуска telegtam v3.3.0 в xfce-sysv
« Ответ #7 : 15.12.2021 21:21:14 »
А какой-нибудь elogind это не умеет?
Убрать этот мусор можно переключателем: Не показывать подписи других пользователей.

Оффлайн zerg

  • ненужная строка
  • alt linux team
  • ***
  • Сообщений: 2 486
  • ненужная строка
    • Найдётся всё
Re: Отказ запуска telegtam v3.3.0 в xfce-sysv
« Ответ #8 : 15.12.2021 22:40:26 »
А какой-нибудь elogind это не умеет?
Отвечу сам. Умеет.
Убрать этот мусор можно переключателем: Не показывать подписи других пользователей.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Отказ запуска telegtam v3.3.0 в xfce-sysv
« Ответ #9 : 16.12.2021 09:00:44 »
А какой-нибудь elogind это не умеет?
Отвечу сам. Умеет.

Да. Но elogind в альтовом репозитории не жилец. Он может быть только как замена systemd, а не альтернатива. В devel Лёша Гладков объяснял, что elogind в репозитории нежизнеспособен. К обсуждению подтянулся Миша Ефремов, который тоже хотел собирать elogind. А следом за Мишей подтянулся и ldv. И одним выбросом показал, что в libsystemd постоянно ломают ABI. И elogind за ним не угнаться. И pokit-sysvinit в альтовых на sysv, это костыль. Но вынужденный костыль.

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
Re: Отказ запуска telegtam v3.3.0 в xfce-sysv
« Ответ #10 : 16.12.2021 21:12:26 »
...
Да. Но elogind в альтовом репозитории не жилец. Он может быть только как замена systemd, а не альтернатива. В devel Лёша Гладков объяснял, что elogind в репозитории нежизнеспособен. К обсуждению подтянулся Миша Ефремов, который тоже хотел собирать elogind. А следом за Мишей подтянулся и ldv. И одним выбросом показал, что в libsystemd постоянно ломают ABI. И elogind за ним не угнаться. И pokit-sysvinit в альтовых на sysv, это костыль. Но вынужденный костыль.

sysv - последний островок свободы, а альты - это уже колония, да и другие подобные, тоже.

dango_

  • Гость
Re: Отказ запуска telegtam v3.3.0 в xfce-sysv
« Ответ #11 : 17.12.2021 05:35:41 »
sysv - последний островок свободы, а альты - это уже колония, да и другие подобные, тоже.
островок свободы
Дико извиняюсь за офтоп, но в голове зазвучало "Куба далека, Куба далека, Куба рядом, Куба рядом!" %-D

Оффлайн zerg

  • ненужная строка
  • alt linux team
  • ***
  • Сообщений: 2 486
  • ненужная строка
    • Найдётся всё
Re: Отказ запуска telegtam v3.3.0 в xfce-sysv
« Ответ #12 : 21.12.2021 14:48:53 »
Да. Но elogind в альтовом репозитории не жилец.
Значит ищите или создайте что-то другое.
Убрать этот мусор можно переключателем: Не показывать подписи других пользователей.