Синкштучка
Jun. 28th, 2018 10:11 amПо совету
sergio остановился для синхронизации тех данных, которые не умеют синхронизироваться сами (баз keepass, всякой персональной информации, хранящейся в зашифрованных текстовых файлах) на syncthing.
Штука это довольно забавная. Управляется через встроенный вебинтерфейс, который автоматически взлетает на localhost:8384. В дебиановский пакет входят юнит-файлы для systemd, а скриптов для альтернативных инит-систем нет. Пришлось для ноутбука, где системд нет, самому писать.
Подниматься оно желает по экземпляру на пользователя. (собственно юнит-файлы так прописаны). Как организовать многпользователькую систему, не занимая на каждого юзера аж по два порта - один для собственно синхронизации, второй для веб-интерфейса, непонятно.
По умолчанию заниматеся поисками peer-ов само, идентифицируя и авторизуя их по фингерпринтам сертификатов. Но можно настроить явно указанный IP для пира. Поэтому схему "звезда" с центральным сервером на VDS у хостинг-провайдера реализовать можно. Только настраивать сервер у провайдера приходится посредством проброса порта по ssh, поскольку в links веб-интерфейс syncthing не живет.
К андроидному syncthing обязательно нужно добавить вот этот ShoppingList - ибо крайне удобно. На десктопе пишешь список покупок в обычном текстовом файле, а потом ходишь по магазину с телефоном и галочки расставляешь.
Штука это довольно забавная. Управляется через встроенный вебинтерфейс, который автоматически взлетает на localhost:8384. В дебиановский пакет входят юнит-файлы для systemd, а скриптов для альтернативных инит-систем нет. Пришлось для ноутбука, где системд нет, самому писать.
Подниматься оно желает по экземпляру на пользователя. (собственно юнит-файлы так прописаны). Как организовать многпользователькую систему, не занимая на каждого юзера аж по два порта - один для собственно синхронизации, второй для веб-интерфейса, непонятно.
По умолчанию заниматеся поисками peer-ов само, идентифицируя и авторизуя их по фингерпринтам сертификатов. Но можно настроить явно указанный IP для пира. Поэтому схему "звезда" с центральным сервером на VDS у хостинг-провайдера реализовать можно. Только настраивать сервер у провайдера приходится посредством проброса порта по ssh, поскольку в links веб-интерфейс syncthing не живет.
К андроидному syncthing обязательно нужно добавить вот этот ShoppingList - ибо крайне удобно. На десктопе пишешь список покупок в обычном текстовом файле, а потом ходишь по магазину с телефоном и галочки расставляешь.
no subject
Date: 2018-06-28 10:44 am (UTC)no subject
Date: 2018-06-28 10:58 am (UTC)И который в systemd нужно руками enable-ть для всех нужных значений после @
no subject
Date: 2018-06-28 11:11 am (UTC)PS Подстановки -- это то что сделано относительно хорошо в systemd
no subject
Date: 2018-06-28 11:16 am (UTC)Ну и я так же сделал. У меня запускается по экземпляру syncthing на каждого юзера (вернее, на каждую подддиректорию в /home, честно читать /etc/passwd меня заломало ), у которого есть
директория ~/.config/syncthing.
Но это, увы, неавтоматизируемо. Это головой думать надо. Потому что в том месте systemd-шной системы где требуется ручная работа администратора, тут работает автомат, который и нужно создать.
Вообще, в Debian скрипты из /etc/init.d недаром считались конфигурационными файлами, предназначенными для ручной правки. Не надо их автоматически генерировать, их надо руками писать. Подумавши головой.
no subject
Date: 2018-06-28 11:26 am (UTC)> ручной правки. Не надо их автоматически генерировать, их надо руками писать. Подумавши головой.
Ну учитывая, что они с пакетами приезжают... Поэтому _эта часть_ логики systemd, что мы сначала читаем системный конфиг, потом админский который override'ит параметры из системного мне кажется разумным.
Единственное, чего мне там не хватает -- это возможности залогинить сервисного юзера (с systemd --user, pam сессией, итд) dbus'овым вызовом (потому что очень не хочется возиться с PAM и поддерживать своего рутового демона для запуска сессий). Ну либо я чего-то незнаю.
no subject
Date: 2018-06-28 11:53 am (UTC)А systemd тут пошел по порочному пути, по которому уже прогулялась веб-разработка с CSS.
Когда хрен определишь из какого именно файлов в цепочке взялась конкретная настройка.
На словах возможность переопределить параметры в другом файле кажется разумной, но реально это приводит к аду в поддержке. Можно еще старые добрые X-овые ресурсы вспомнить, от которых все современные тулкиты уже давно отказались. Именно потому что слишком много мест из которых собирается база, да еще и с препроцессирвоанием.
no subject
Date: 2018-06-28 02:07 pm (UTC)Если мне не изменяет память, там есть утилита которая позволяет это посмотреть (я видел в последних release notes каких-то).
> И в dpkg есть довольно удобный механизм интеграции изменений, сделанных мейнтейнером с изменениями,
> сделанными сисадмином.
Ну он _относительно_ удобный.
А вообще тут есть два подхода -- либо есть админ, который помнит все тонкости 5-100 хостов, имеет время и желание мержить конфиги (и которого может переехать автобус).
А бывает когда дефолтные настройки не устраивают, но желания/времени все это помнить нет -- и тогда у нас идет devops, когда мы описали чего мы хотим, и пускаем систему под бульдозер (просто ли выкатив свой my.tar.gz в /etc, применил в ansible. nixos или любой другой девопс интсрумент). Тут подход systemd больше вписывается, потому что тебе надо описать разницу между стандартным и тем что ты хочешь. А не тупо приносить с собой свой набор инитскриптов -- потому что тут тоже может критическая масса нарасти)
no subject
Date: 2018-06-29 08:27 am (UTC)no subject
Date: 2018-06-28 12:07 pm (UTC)Можно начать, например, с
$ machinectl shell --uid some_sys_user
no subject
Date: 2018-06-28 12:08 pm (UTC)no subject
Date: 2018-06-28 12:16 pm (UTC)no subject
Date: 2018-06-28 01:40 pm (UTC)no subject
Date: 2018-06-28 01:48 pm (UTC)Но мне все равно непонятно -- будет ли там (внутри) нормальный PAM (включая pam_mount), systemd --user/dbus --session итд).
(собственно задача -- выкинуть xrdp-sessman по причине его запредельной кривости, и пинать сессию dbus вызовом к systemd/logind/whatever)
no subject
Date: 2018-06-29 08:21 am (UTC)- Интеграция с `systemd --user` точно есть (см. ниже), но нужно поставить `libpam-systemd`.
- Интеграция с `dbus` должна быть, если поставлен `dbus-user-session`.
Первое я проверял потому что у меня таким макаром настроено копирование "в облако" бэкапов с "бэкапного сервера".
Грубо говоря, скрипт с бэкапящейся машины юзает `borg`
чтобы забэкапить себя на бэкапный сервер, после чего
логинится туда по SSH ещё раз, дёргает `systemctl --user start sync-to-cloud@whatever_instance` и отваливается.
Для этого аккаунта настроен "лингеринг" (https://wiki.debian.org/systemd#orphaned_processes), и сессия остаётся жить после отлогина.
По поводу маунтов, я не знаю.
Быстрый гуглёж нашёл такое: https://kempniu.wordpress.com/2016/01/07/making-pam_mount-play-nicer-with-systemd-user-sessions/
Кстати, удобно юзать `loginctl user-status имяюзера` чтобы быстро посмотреть все деревья процессов, которые для него были созданы при участии systemd и всей этой механики.
no subject
Date: 2018-06-29 01:20 pm (UTC)А вот мне это не нужно как раз, мне надо на локальной машине запустить сессию через dbus. (видимо через тот вызов, к оторый использует systemd-run).
Сами разработчики systemd ничего внятного сказать не могут, либо предлагают таки писать свой демон работающий с pam (чего мне совсем не хочется).
> По поводу маунтов, я не знаю
У pam_mount ecть
<!-- if activated, requires ofl from hxtools to be present -->
<logout wait="10" hup="yes" term="yes" kill="yes" />
И оно замечательно работает. (правда не luks, а оверлеи)
В принцпе вместо ofl можно наверное и скрипт с использованием fuser использовать, но я все время забываю как.
Поэтому пошел по пути наименьшего сопротивления, и выдрал утилитку из пакета.
Сессию гашу вызовом logind.TerminateUser(username)
PS То есть нужна именно та часть функционала (ну скажем) sshd, которая ответственна за создание юзерской сессии. А там PAM, а это боль и страдания. В идеале нужен logind.LoginUser(user, path_to_session_leader_script)
no subject
Date: 2018-07-04 07:31 am (UTC)Нельзя в юниксовой модели разграничения полномочий между процессами делать authentification modules подгружаемыми shared-объектами.
no subject
Date: 2018-07-04 11:08 am (UTC)Я тут абсолютно согласен, что пам дефективный (особенно меня радует затыкание коллбека pam_print/pam_input (для получения логина/пароля _помимо_ того, что из могут передать туда как параметры (коллбеки я тут по смыслу обозвал, правильного их названия я не помню и слава б-гу))
no subject
Date: 2018-07-04 12:43 pm (UTC)Но PAM замахивается на куда больше, на настройку очень большого количества параметров сессии.
Тут, учитывая колоссальное разнообразие ныне существующих разновидностей аутентифицированных сессий, все гораздо сложнее. И если некоторые модули pam действительно имеют отношение к аунтентификации, например тот же pam_mount или pam_gnomekeyring, то какой-нибудь pam_env попал в pam только потому что никакого общего иницилизационного шелл-скрипта для консольной, графической и кроновской сессий не придумали раньше, чем появился pam.
no subject
Date: 2018-06-29 08:44 pm (UTC)no subject
Date: 2018-06-30 06:37 am (UTC)Камень в огород
Date: 2018-07-06 05:53 am (UTC)1. Авторы на сайте говорят как добавить его в дебиан, хотя в дебиане он уже есть. А меня тупо послали с предложением написать об этом пояснение с указанием того, чем отличается их сборка от дистрибутивной, прикрываясь докером.
https://github.com/syncthing/website/issues/55
2. авторы предлагают гадить в /etc/apt/trusted.gpg, хотя в дебиане ясно сказано там не гадить а делать файл в trusted.gpg.d
https://github.com/syncthing/website/issues/56
https://manpages.debian.org/stretch/apt/apt-key.8.en.html
но ничего лучше syncthing под андроед нету
Re: Камень в огород
Date: 2018-07-06 06:07 am (UTC)Re: Камень в огород
Date: 2018-07-06 01:34 pm (UTC)Я тоже с f-droid брал, не понял, какого эффекта?
Re: Камень в огород
Date: 2018-07-06 02:07 pm (UTC)