LINUX.ORG.RU

Systemd 194, теперь с HTTP-сервером и генератором QR-кодов

 


3

3

Выход очередной версии init-демона systemd продолжает радовать пользователей новыми встроенными функциями.

В частности:

  • опция HandleSleepKey в logind.conf была разбита на HandleSuspendKey и HandleHibernateKey, старая опция более не доступна;
  • почти полностью удалена утилита multi-seat-x, минимальная обертка оставлена до тех пор, пока DM не начнут поддерживать новую логику перечисления графических устройств Xorg;
  • nspawn теперь создает символическую ссылку /etc/localtime в окружении контейнера;
  • исправлено поведение при отсутствии /etc/vconsole.conf, теперь в этом случае не будет загружаться никакой шрифт;
  • journald теперь пишет в лог максимальный размер, который файлы журнала могут занимать на диске;
  • опция параметра journalctl -n теперь необязательна и по умолчанию равна 10;
  • journalctl -f теперь реагирует на изменение размеров терминала и разбивает строки соответственно;
  • новая опция --cursor в journalctl позволяет выводить записи начиная с определенного места журнала;
  • добавлена поддержка journalctl для bash-completion.

Но две функции привлекли особое внимание. Их заметили пользователи федоры, которые при обновлении обнаружили, что systemd теперь зависит от libmicrohttpd и qrencode. Это стало причиной активно продолжающегося обсуждения в рассылке.

Оказалось, что обе функции связаны с journald — собственной заменой syslog-демона, как известно, входящей в состав systemd. Среди прочего, он отличается тем, что ведет логи в бинарном виде вместо текстового.

Зависимость от qrencode объясняется реализацией функции Forward Secure Sealing, journalctl из состава systemd использует qrencode для вывода QR-кодов в текстовой консоли.

А поскольку логи хранятся бинарно, для работы с ними нужны дополнительные программы. Зависимость от libmicrohttpd вызвана тем, что в состав systemd теперь входит встроенный http-сервер journald-gateway, умеющий отдавать логи в текстовом и json-формате. Его основное предназначение автор видит в синхронизации журнала по сети.

Так выглядит http-сервер journald-gateway в действии

>>> Леннарт про FSS и QR-код

anonymous

Проверено: JB ()
Последнее исправление: Silent (всего исправлений: 3)

Ответ на: комментарий от jackill

Я что-то не так понимаю?

Да

То есть генерируется пара ключей - то бишь это ассиметричное шифрование.

Нет

см. выше

vasily_pupkin ★★★★★
()
Ответ на: комментарий от jackill

Сейчас, чтобы заработал systemd, нужно патчить ядро, изменять параметры загрузки grub, шаманить с ssh и df - я сегодня почитал про эту магию.

ЩИТО?!1

Как я понимаю, система логов прибита гвоздями. Если сказать ей в конфиге ничего не писать, демон все равно будет висеть в памяти. Как подключить другой логгер - хз (я пока не разбирался, но судя по тому, что гуглом сходу не находится, это не так просто).

будет висеть в памяти.

будет

Как подключить другой логгер - хз

Storage=none
ForwardToSyslog=yes
vasily_pupkin ★★★★★
()
Последнее исправление: vasily_pupkin (всего исправлений: 1)
Ответ на: комментарий от Wizard_

Для унификации формата логов. На текущий момент текстовые логи пишутся абы как, потому как нет формата.

Что мешает стандартизовать текстовые логи? Концепция у Паттеринга хорошая — а реализация гамно.

Стандартизация — путь к успеху и упрощению, но он хочет стандартизовать свой комбайн полностью, вместо отдельных, независимых друг от друга вещей и интерфейсов между ними. Он идет не по юникс-вею адназначно.

dr_dobermann
()
Ответ на: комментарий от anonymous

К счастью, systemd там нет, и вставить скрипт между сетью и всеми остальными сервисами там не проблема.

Будто бы в системе загрузки с зависимостями это может быть проблемой

vasily_pupkin ★★★★★
()
Ответ на: комментарий от BambarbiyaKirgudu

про QR коды он может и погорячился, а вот с логами - хорошая идея!

С какого это боку логи внаружу ложить без авторизации — хорошая идея? А если у тебя приложение в режиме дебуга работает и в логи сыпется куча, нужной только определенным людям, информации? Получается на эту хрень надо еще накрутить мощнейший авторизационный сервис с ролями, блекджеком и ...? Тут точно до системДОС недалеко останется.

dr_dobermann
()
Ответ на: комментарий от user_id_68054

любой простофиля (не знающий толком как работает команда grep. так как grep будет особо не нужна) сможет ориентироваться в логах, примерно также как и вчерашний компьютерных специалист.

Ну ты потешник :))))). Реально развеселил. Ни разу не видел, чтобы «дружественный к пользователям» MS EventViewer делал их (пользователей) экспертами по винде или сильно помогал в разборе полетов.

Пешиисчо!!!!

dr_dobermann
()
Ответ на: комментарий от rave

Ты это, не про суть размышляй, а по факту. По факту - это все отдельные дополнительные программы. Их наличие не обязательно как для sysvinit, так и для systemd.

По факту: Если у тебя ОС накроется так, что не сможет грузиться, ты сможешь прочитать бинарные логи, загрузившись через тот же SystemRescueCD ?

Siado ★★★★★
()
Ответ на: комментарий от vasily_pupkin

Классическая схема с отдельным логом — работает. Для этого не придётся ребутиться с livecd, можно всё делать на живой машине. Но самое главное, она покажет не только факт изменения логов, но ещё и покажет, что именно было изменено.

щито?!

Что не так? Стандартная схема же. Лог ведётся как обычно, копия скидывается на отдельную «машину для логов». Висящий на той «машине для логов» скрипт периодически приходит по ssh и сверяет контрольную сумму лога со своей копией. При несовпадении — алармит админу. Никаких ребутов, никаких livecd. А то, что было изменено, можно увидеть обычным diff-ом.

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

А. Я понял о чем ты говоришь. Тут есть некоторая разница.

Если проводить аналогию, то ближайшей будет ЭЦП. Фактически нет проблемы организовать ЭЦП на симметрических криптопримитивах, единственным требованием будет постоянное наличие ТДС онлайн. Но если же ТДС не доступен, то все становится раком.

Т.е. разумеется, при возможности организации отказоустойчивого сетевого хранилища такие методы несколько избыточны. Но существуют еще и перемещаемые устройства, и ограничение на возможность подключения хранилища по доверенному каналу итд.

Кстати твоя схема с SSH не имеет смысла :] Ведь после компрометации я могу слать что угодно, и я знаю что отослал, и знаю что подсунуть при заходе по ssh :]

vasily_pupkin ★★★★★
()
Ответ на: комментарий от vasily_pupkin

К счастью, systemd там нет, и вставить скрипт между сетью и всеми остальными сервисами там не проблема.

Будто бы в системе загрузки с зависимостями это может быть проблемой

Вообще да, может.
Имеем: сервис X, и неопределённое количество сервисов Z1-Z50, которые зависят от него.
Задача: добавить сервис Y после X так, чтобы все Z## стартовали после того, как Y завершится.
Решение для initscripts: даем скрипту сервиса Y номер X+1.
Решение для «загрузки с зависимостями» — патчить сервис X, если только он не уходит в бэкграунд.

Если же сеть поднимает NetworkManager, который, ясное дело, делает это в бэкграунде, то в случае systemd получаем писец. :)

anonymous
()
Ответ на: комментарий от dr_dobermann

Сразу видно человека, которого ещё не щупала за попу инфобезопасность, дай вам Бог, чтобы так и дальше было.

Вопрос неизменяемости логов — первостепенная задача, если вы хотите своих админов защитить от наездов клоунов, кричащих: «Он админ, он все сделал и за собой почистил.».

Дык для этого назначают отдельного админа-безопасника который за всё барахло отвечает. А ему можно выделить удалённый сервер на который льются все логи. И пусть он потом каждый день логи сверяет по всем сервакам. Всегда при деле, все дела.

anonymous
()
Ответ на: комментарий от anonymous
Y.service
...
After=X.service
# А правильнее это рассунуть по таргетам
Before=Z1.service Z2.service ... Z50.service
Type=oneshot
...

Если же сеть поднимает NetworkManager, который, ясное дело, делает это в бэкграунде, то в случае systemd получаем писец. :)

Если поднятие сети является обязательным, то тогда да, получается писец. Но легко решается следующим образом.

netshit.target:
...
Wants=sysinit.target Z1.service Z2.service ... Z50.service
# или правильнее таргет
..
[Install]
Alias=default.target

/etc/NetworkManager/dispatcher.d/netshit.sh:
nm-online

if [ $? -eq 0 ]; then
 systemctl start netshit.target
fi

И засунуть NM в default таргет, который должен объеденять безопасные сервисы. Например sysinit

vasily_pupkin ★★★★★
()
Последнее исправление: vasily_pupkin (всего исправлений: 3)
Ответ на: комментарий от vasily_pupkin

Правда еще лучше в болезненные сервисы напихать Requires=ntpdate.service, который сделать oneshot и Restart=on-failure, RemainAfterExit=yes. И пусть себе пуллит, пока не запустится

vasily_pupkin ★★★★★
()
Ответ на: комментарий от vasily_pupkin

Как подключить другой логгер - хз

Storage=none
ForwardToSyslog=yes

Это ещё не всё. После этого надо rsyslog повесить на сокет journald. При этом появится другая проблема — journald умеет терять сообщения, by design.

Кстати, он прав по поводу:

гуглом сходу не находится

Если не знать, что искать, то найти невозможно. Документации нет, только смотреть исходники.

anonymous
()
Ответ на: комментарий от vasily_pupkin

Но легко решается следующим образом.

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

Правда еще лучше в болезненные сервисы напихать Requires=ntpdate.service

А, ну да, можно ещё поправить эти несколько десятков сервисов. :)

# А правильнее это рассунуть по таргетам

Или вообще полностью пересмотреть весь механизм запуска.

Легче (и надёжнее) пошаманить с одним сервисом NetworkManager-а, чтобы синхронизация запускалась прямо из него, и чтобы он не считался started до тех пор, пока не синхронизируется время.

Эх... А в initscripts всё было так просто...

anonymous
()
Ответ на: комментарий от upcFrost

Я кстати под этой «предъявой» могу подписаться. Мне удобно работать в линуксе, _но_ в нем правда не пашет автокад, инвентор и другой нужный мне софт. Потому приходится держать дуалбут. С другой стороны математика работает, ансис работает, как солид/инвентор перенесут - дуалбут можно смело снести.

автокад это супер дорогой, профессиональный софт, который у нас принято использовать как чертилку. стоимость годного ноутбука по сравнению со стоимостью владения автокадом не существенна. то есть нужен автокад, юзай ее на рабочем хорошем компе, зачем оно в линуксе на личном ноутбуке?

Ноут - все равно заведомо менее удобная вещь. Сколько у ноута диагональ экрана? 17, 19? Больше уже редко бывает. А для удобной работы с тем же Eclipse желательно 21-23 (имхо). Для черчения/моделирования тоже неплохо бы большой экран. Не, можно подключать экран, можно подключать мышь, клавиатуру (мне удобно, когда кнопки не плоские), колонки... Тогда какой понт в том, что это ноут? Либо байда на 5 кило весом, либо жрет батарею в момент - в любом случае в дороге с ним не очень удобно.

ноут должен быть размером не более 13-дюймов и не больше 1.5 кг весом(желательно вместе с зарядкой), для стационарной работы покупается док-станция и монитор. и это супер удобно и явно дешевле, чем ноутбук+десктоп.

Сам юзаю нетбук, но чисто для быстрой правки документов в LO или просмотра фильмов - работать на нем кисло

нетбуки это такие дорогие куски херового железа, никаким боком не относящиеся к ноутбукам. они намного ближе к планшетникам. если бы эппл запилил свой айпед двумя годами ранее, никаких бы нетбуков в помине не было бы.

autonomous ★★★★★
()
Ответ на: комментарий от Lennier

А чем я не простой пользователь? И количество компов ощутимо увеличилось. Так что десктопов за последние 5 лет стало больше чем 5 лет назад, даже с учетом того что часть рынка отобрали ноутбуки.

ты вроде тоже из Москвы, я не знаю в каких сферах ты работаешь, но я лично в офисах вижу 90% ноутбуков и 10% десктопов. 5 лет назад было 50% ноутбуков и 50% десктопов.

autonomous ★★★★★
()
Ответ на: комментарий от vasily_pupkin

Кстати твоя схема с SSH не имеет смысла :] Ведь после компрометации я могу слать что угодно, и я знаю что отослал, и знаю что подсунуть при заходе по ssh :]

При заходе по ssh выполняется команда вида:

head -n 191077 /var/log/messages | md5sum
Что ей можно подсунуть? Оригинальный лог? Тогда это и значит, что лог остался неизменным, что и требовалось проверить. :)

Но существуют еще и перемещаемые устройства, и ограничение на возможность подключения хранилища по доверенному каналу итд.

Замечание принято. Для этого случая тоже можно добавить простенький скрипт контрольной суммы, но для таких устройств (мобилки, ноутбуки) это не актуально. Пока устройство подключено к сети, оно может отправлять копию логов. А когда его отключают и уносят — его и защищать не надо, не от владельца же его защищать.

anonymous
()
Ответ на: комментарий от vasily_pupkin

Ну вот что-то типа такого

По ссылке лицензионное соглашение. Это точно то, что ты имел в виду?

Aceler ★★★★★
()
Ответ на: комментарий от anonymous

Это ещё не всё. После этого надо rsyslog повесить на сокет journald.

Зачем? Просто systemctl enable syslog-ng, например

vasily_pupkin ★★★★★
()
Ответ на: комментарий от anonymous

Правда еще лучше в болезненные сервисы напихать Requires=ntpdate.service

А, ну да, можно ещё поправить эти несколько десятков сервисов. :)

В этом нет необходимости, systemd умеет внешние зависимости

Эх... А в initscripts всё было так просто...

Ну да, с NM кейс был бы на много проще :D

vasily_pupkin ★★★★★
()
Ответ на: комментарий от anonymous

Пока устройство подключено к сети, оно может отправлять копию логов.

Пока оно подключено к _своей_ сети :)

Что ей можно подсунуть? Оригинальный лог?

Последующий лог. Если злоумышленник знает, что логи форвардятся, какой смысл ему их фейкать?

vasily_pupkin ★★★★★
()
Ответ на: комментарий от anonymous

Я не поленился и проверил:

> cat /etc/systemd/system/ntpdate-hack.service 
[Unit]
Description=Sync time once
OnFailureIsolate=yes
OnFailure=emergency.target
Requires=NetworkManager.service
Before=network.target multi-user.target
After=NetworkManager.service

[Service]
Type=oneshot
RemainAfterExit=yes
TimeoutSec=1m
RestartSec=5
ExecStart=/bin/sh -c "while :; do /usr/sbin/ntpdate pool.ntp.org && break; done"

[Install]
RequiredBy=network.target multi-user.target

Сервисы которые требуют network.target и multi-user.target запустятся только после успешного ntpdate. Если за минуту не отработает, то все вывалится в эмердженси консоль. Само собой можно напихать вместо таргетов отдельно те 55 сервисов

vasily_pupkin ★★★★★
()
Ответ на: комментарий от anonymous

придётся всё-таки прочитать несколько абзацев текста и даже, о ужас! понять их.

Какая незамутненная детская радость: «Я умею читать!». Не хочу тебя расстраивать, но очень многие умеют и читать, и понимать прочитанное, и делать на основании этого выводы.

tailgunner ★★★★★
()
Ответ на: комментарий от vasily_pupkin

Слоупоки. Я об этом писал когда только запилили

«Что бы ни случилось, всегда найдется человек, который скажет: „Я говорил, что так оно и будет!“» (с) Законы Мерфи

dr_dobermann
()
Ответ на: комментарий от vasily_pupkin

Типа того. Т.к. единообразный способ загребания логов от всех процессов запущенных systemd.

ЕМНИП, чтобы это волшебство работало как того Поттеринг хочет, тебе надо свою программку переписать, чтобы она в журналд правильно все писало. А так оно пишет стандартное непосредство в виде текстовой строчки, не давая тебе возможность всей этой волшебностью воспользоваться.

dr_dobermann
()
Ответ на: комментарий от vasily_pupkin

Почему ты считатешь это решение нормальным в ситуации с десктопом?

а нахрена анализировать логи mpop на десктопе? Что за задача такая? concy нечем занять?

dr_dobermann
()
Ответ на: комментарий от vasily_pupkin

Пока оно подключено к _своей_ сети :)

Да. Но мне кажется, нет смысла защищать логи в таких случаях. От хозяина логи не защитить, он итак имеет к ним доступ и всегда может их подделать. А если машину смогли унести и подключить в другую сеть, то там, в «другой сети» за нее под видом хозяина мог сесть другой человек, и с того момента он тоже сможет подделывать логи. А мы никак не сможем отличить его от хозяина.

Можно, в принципе, делать периодические фотографии с камеры, распознавать лицо и писать его в лог. Но это уже идея для следующей версии journal-а. :) Ждём новости о systemd 224, который зависит от gphoto2 и заливает снимки в G+ для распознавания.

Последующий лог. Если злоумышленник знает, что логи форвардятся, какой смысл ему их фейкать?

Если логи не модифицировались, то задача решена. Ведь целью и было не допустить незаметную модификацию логов. А дальше по этим логам можно будет найти, когда он подключился и что сделал.

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

автокад это супер дорогой, профессиональный софт, который у нас принято использовать как чертилку

Парниша, ты не путай себя - студентоту - и настоящих инженеров

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

Парниша, ты не путай себя - студентоту - и настоящих инженеров

школоло, я инженер, но мне почему-то не нужен автокад. разрыв шаблона?

autonomous ★★★★★
()
Ответ на: комментарий от anonymous

Офисы бывают разные. Если цель - «печатать в ворде», то да, ноутбук сойдёт

ну расскажи, какие бывают цели, когда ноутбук не подойдет?

autonomous ★★★★★
()
Ответ на: комментарий от FreeLiver

Игры на ноуте то еще извращение.

вырастешь, поймешь, что на игры времени не хватает. уж если хочется провести полчасика за игрушкой, то я тебя уверяю, приставки в сто раз удобнее и играбельнее.

я лично дома стараюсь не пользоваться компом вобще, на работе хватает. для тех, кому нужен монитор для ноута, покупается док-станция, она дешевле десктопа, а профита вагон.

autonomous ★★★★★
()
Ответ на: комментарий от autonomous

Я вообще домашнее использование имел в виду. Но если говорить про офисы, то в последнем в котором я был, было штук 70 десктопов и ни 1 ноута. Это было в этом году.

ps. Быстрый набор текста, работа с видео, с граффикой , игры, просто блин файлы архиватором пожать и место куда это положить - во всех этих задачах десктоп удобней и быстрей. Да и кино на экране современных мониторов 22-27дюймов смотреть ощутимо приятней, чем в коробочке размером с видеокассету.

Lennier ★★★★
()
Последнее исправление: Lennier (всего исправлений: 2)
Ответ на: комментарий от autonomous

Опять же например: тяжёлые расчёты для любой цели десктоп + 4 nVidia решают, чертить, рисовать, кодить с нормальной IDE. Вообще для любой цели, которая не подразумевает таскать аппарат с собой десктоп выигрывает по всем параметрам.

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

Сча ещё неттопы есть и прочие all-in-one, они скорее заменят десктопы чем ноуты. И то только частично. Т.к. такие конструкции тоже имеют пред десктопом недостатки. А у ноутов только одна дорога - вымирать в пользу смартфонов и планшетов. Т.к. их носить удобней.

Правка: Ой не тому написал, ник похожий с autonomous

Lennier ★★★★
()
Последнее исправление: Lennier (всего исправлений: 1)

Когда уже Поттеринг сделает свою ОС. И, желательно, несовместимую с линуксом, чтоб оттуда в последний всякую дрянь не тянули.

segfault ★★★★★
()
Ответ на: комментарий от autonomous

А что делать в наших широтах долгими зимними вечерами? На лыжах не покатаешься ибо темно. И покажите мне приставку с графической системой уровня HD 7970 или GF 680?

FreeLiver ★★★
()
Ответ на: комментарий от Binary

Например?

Ну как ты не понимаешь? Вагон же - можно дрова перевозить, например.

anonymous
()
Ответ на: комментарий от FreeLiver

А что делать в наших широтах долгими зимними вечерами?

Книжки читать? За девушкой/юношей/женой/мужем/ребенком ухаживать? :-)

sergv
()
Ответ на: комментарий от Lennier

штук 70 десктопов и ни 1 ноута

экономят на железе, не более того

Быстрый набор текста

есть ноуты с нормальной клавой, и не мало

работа с видео, с граффикой , игры

что не так с конфигурацией i7/8Гб/nvidia-3Гб/2Тб? это сейчас чуть выше стандартного железа для ноутов.

Да и кино на экране современных мониторов 22-27дюймов смотреть ощутимо приятней, чем в коробочке размером с видеокассету.

кино надо смотреть на телевизоре от 38 дюймов

autonomous ★★★★★
()
Ответ на: комментарий от anonymous

ок. уточнение инженер-конструктор, например.

ну и пусть юзают, что им нужно по работе. их слишком мало, чтобы ориентировать на них потребности большинства юзеров

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