Обновить
325.3

Linux *

Пишем под *nix

Сначала показывать
Порог рейтинга
Уровень сложности

Криптографический АРМ на базе стандартов с открытым ключом. Конфигурирование токенов PKCS#11

Время на прочтение4 мин
Охват и читатели2.3K
Еще раз просмотрев функционал утилиты cryptoarmpkcs, обратил внимание на то, что она, в основном работая с криптографическими токенами/смаркартами PKCS#11, не имеет встроенного функционала для их конфирурирования. Речь идет об инициализации токенов, установки PIN-кодов и т.п. И было решено добавить этот функционал. Первым делом для этого пришлось расширить функционал пакета TclPKCS11, библиотека которого написана на языке Си.

Новые функции пакета TclPKCS11


В пакете появились три новые функции:

::pki::pkcs11::inittoken <handle> <slotId> <SO-pin> <label for token>

::pki::pkcs11::inituserpin <handle> <slotId> <SO-pin> <USER-pin>

::pki::pkcs11::setpin <handle> <slotId> <so | user> <oldpin> <newpin>
Читать дальше →

Умный сервис кэша на базе ZeroMQ и Tarantool

Время на прочтение14 мин
Охват и читатели5.2K
Руслан Ароматов, главный разработчик, МКБ



Привет, Хабр! Я работаю бэкенд-разработчиком в Московском кредитном банке, и за время работы у меня накопился некоторый опыт, которым я хотел бы поделиться с сообществом. Сегодня я расскажу, как мы писали свой собственный сервис кэша для фронт-серверов наших клиентов, использующих мобильное приложение «МКБ Онлайн». Статья может быть полезна тем, кто занимается проектированием сервисов и знаком с микросервисной архитектурой, in-memory базой данных Tarantool и библиотекой ZeroMQ. В статье практически не будет примеров кода и объяснения основ, а только описание логики работы сервисов и их взаимодействия на конкретном примере, работающем у нас на бою уже более двух лет.
Читать дальше →

Необычные системные вызовы на Linux

Время на прочтение17 мин
Охват и читатели26K

ls /usr/share/man/man2/


Что видит программист, начиная работать с языком C? Он видит fopen, printf, scanf и ещё много других функций. Видит он и всякие open и mmap — казалось бы, зачем их выделять? Но, в отличие от первой группы, эти две функции при выполнении на ядре Linux являются системными вызовами (на самом деле нет, почти никогда системный вызов нельзя просто вызвать как функцию, и поэтому libc содержит обёртки, перепаковывающие аргументы и иногда, как в случае с тем же open, заменяющие старые системные вызовы более общими новыми). Вообще, в отличие от тысяч библиотечных функций, доступных на типичной GNU/Linux системе, интерфейс ядра имеет довольно ограниченное количество точек входа — порядка нескольких сотен, зато то, что для user space — crash (например, обращение к отсутствующей странице), для ядра — default mode of operation.


В этой статье я расскажу некоторые интересные на мой взгляд факты. В ней не будет futex-ов и прочих скучных (наверное) деталей реализации. Будет преимущественно то, что вызывало у меня реакцию «А что, так можно было?!?».

Читать дальше →

Обработка системных вызовов посредством LD_PRELOAD с единой точкой входа

Время на прочтение24 мин
Охват и читатели2.9K

Делая пере-реализацию QInst на LLVM, я столкнулся с такой проблемой: QEMU в режиме эмуляции одного процесса естественным образом перехватывает все «гостевые» системные вызовы. В итоге плагин инструментации имеет единую точку входа для их предобработки, где можно по номерам SYS_* и значениям аргументов принимать решения. Это довольно удобно. Проблема в том, что все системные вызовы делает, в основном, libc и, переписывая код статически, мы просто до этой части в большинстве случаев не доберёмся. Конечно, можно было бы использовать ptrace, который как раз предназначен и для этого в том числе. Но тогда не уверен, что получилось бы обойтись без отдельного процесса, а семантика QInst предполагала тривиальный «синхронный» перехват — пришлось бы как-то инжектить вызов обработчика, а это сильно сложнее привычного LD_PRELOAD. Можно оборачивать каждый системный вызов — но это, как минимум, неудобно (к тому же, можем что-нибудь пропустить, ведь в этом случае мы перехватываем на самом не системные вызовы, а их конкретные обёртки).


Под катом — решение, не привязанное к LLVM, но заточенное под Linux на x86_64 (но адаптируемое для Linux на других архитектурах).


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

Читать дальше →

Что нужно знать о Red Hat OpenShift Service Mesh

Время на прочтение5 мин
Охват и читатели8.2K
Переход на Kubernetes и Linux-инфраструктуры при цифровой трансформации организаций приводит к тому, что приложения все чаще начинают строиться на основе микросервисной архитектуры и, как следствие, очень часто обрастают сложными схемами маршрутизации запросов между сервисами.



В Red Hat OpenShift Service Mesh мы выходим за рамки традиционной маршрутизации и предлагаем компоненты для трассировки и визуализации таких запросов, чтобы сделать взаимодействие сервисов более простым и надежным. Введение специального логического уровня управления, так называемой сервисной сетки service mesh, помогает упростить подключение, контроль и оперативное управление на уровне каждого отдельного приложения, развернутого на Red Hat OpenShift, ведущей Kubernetes-платформе корпоративного класса.
Читать дальше: Red Hat OpenShift Service Mesh

Разработка с Docker на Windows Subsystem for Linux (WSL)

Время на прочтение4 мин
Охват и читатели119K



Для полноценной работы с проектом на docker'е в WSL необходима установка WSL 2. На момент написания заметки ее использование возможно только в рамках участия в программе предварительной оценки Windows (WSL 2 доступна в сборках 18932 и выше). Так же отдельно стоит упомянуть, что необходима версия Windows 10 Pro для установки и настройки Docker Desktop.


Важно! В WSL 2 пропала острая необходимость в Docker Desktop для Windows 10. Как обходиться без него описано в пункте Про Docker в Ubuntu.


Читать дальше →

Криптографический АРМ на базе стандартов с открытым ключом. Функции разбора и просмотра ASN1-структуры

Время на прочтение4 мин
Охват и читатели2.8K
Основной работой при создании утилиты cryptoarmpkcs было не разработка кода или графического интерфейса, а работа с ASN1-структурами. Именно в этих структурах хранятся сертификаты x509v3, электронные подписи документов (PKCS#7, CMS), запросы на сертификаты (PKCS#10, CSR), открытые и закрытые ключи, защищенные контейнеры PKCS#12/PFX, списки отозванных сертификатов CRL и штампы времени для электронной подписи, запросы и ответы OCSP и так далее и тому подобное. Постоянно приходилось просматривать уже имеющиеся структуры для понимания того как это делали другие, просматривать только что собранные самим AN1-структуры. Процесс понятен. Но поскольку я работаю на Linux (сейчас это Mageia, и код для Windows тоже готовлю на Linux), то под рукой из доступных средств разбора ASN1-структур были утилиты openssl и derdump из пакета NSS. Лично мои предпочтения были на стороне derdump. Именно она и стала прототипом рассматриваемой здесь утилиты derdump.tcl/tclderdump для просмотра ASN1-структур. И если вы сравните вывод утилиты derdump из пакета NSS и утилиты derdump.tcl, то вы практически не увидите различий:
Читать дальше →

Опыт участия в GSoC: как двое (трое) студентов реально улучшили код CRIU

Время на прочтение5 мин
Охват и читатели1.8K
Ежегодно Google проводит мероприятие Google Summer of Code, на котором ведущие OpenSource проекты находят себе новых талантливых разработчиков среди студентов. В 2019 нашему проекту CRIU удалось не только пройти отборочный тур, но также привлечь сразу несколько молодых разработчиков. О том, зачем все это, и как проходила работа над CRUI в рамках GSoC — читайте под катом.

image

Читать дальше →

Пишем защиту от DDoS-атак на XDP. Ядерная часть

Время на прочтение16 мин
Охват и читатели24K

Технология eXpress Data Path (XDP) позволяет выполнить произвольную обработку трафика на интерфейсах Linux до того, как пакеты поступят в сетевой стек ядра. Применение XDP — защита от DDoS-атак (CloudFlare), сложные фильтры, сбор статистики (Netflix). Программы XDP исполняются виртуальной машиной eBPF, поэтому имеют ограничения как на свой код, так и на доступные функции ядра в зависимости от типа фильтра.


Статья призвана восполнить недостатки многочисленных материалов по XDP. Во-первых, в них дается готовый код, который сразу обходит особенности XDP: подготовлен для верификации или слишком прост, чтобы вызвать проблемы. При попытке потом написать свой код с нуля нет понимания, что делать с характерными ошибками. Во-вторых, не освещаются способы локально тестировать XDP без ВМ и «железа», при том, что у них свои «подводные камни». Текст рассчитан на программистов, знакомых с сетями и Linux, которым интересен XDP и eBPF.

Читать дальше →

Работа в IT, управление проектами, регулирование ПД и разработка в облаке: мегадайджест от 1cloud.ru

Время на прочтение5 мин
Охват и читатели4K
Это — наши лучшие хабратопики. Здесь вы найдете материалы об истории Linux, обсуждение стоп-фраз для PM'ов и зарплат разработчиков плюс — большую фотоэкскурсию по нашему облаку.

Читать дальше →

Avalonia мои за и против

Время на прочтение3 мин
Охват и читатели16K
Я очень много пишу про Авалонию и часто восторгаюсь этим фреймворком, но, как и у любой технологии, у нее есть свои достоинства и недостатки, о них и хотелось бы поговорить.

Читать дальше →

Использование новых NVMe SSD в качестве загрузочного диска на старых системах с Legacy BIOS (для любой ОС)

Время на прочтение8 мин
Охват и читатели313K
Короткий мануал — как реализовать поддержку загрузочного NVMe SSD на старых материнских платах с Legacy BIOS и с использованием Clover (для любых ОС). По следам вот этого поста, где на мой взгляд, решение не так изящно и не для всех BIOS & OS.

Читать дальше →

Windows 10 + Python = VS Code + WSL

Время на прочтение3 мин
Охват и читатели37K
image

Microsoft… Технологических локомотивов нашего времени. Ни для кого не секрет что они крутые, а также, что они поглощают все больше и больше… Всего. К счастью последнее время они только радуют меня своим потенциалом. А после выступления Satya Nadella, где он рассказал миру о том, что Windows больше не является основным продуктом компании, так как они положили курс на внедрение своих API…. Повсюду

Для разработчиков ПО они так же не скупятся. C#, Azure, Visual Studio… Но сейчас пойдет речь о Python, ведь для него местечко здесь тоже пригрели.

Кратко о WSL


С обновлением Windows появилась возможность использовать такую штуку, как WSL (Windows Subsystem for Linux). Не так давно появилась WSL2 с ОЧЕНЬ крутыми доработками. WSL2 использует новейшую и самую новую технологию виртуализации для запуска ядра Linux внутри упрощенной служебной виртуальной машины. Это значит, что такие атрибуты, как изоляция и замедление работы здесь отсутствуют.
Читать дальше →

Ближайшие события

Мой опыт подключения LPS331AP к Omega Onion2

Время на прочтение4 мин
Охват и читатели2.2K
Доброго времени суток, хабровчане!

Небольшое предисловие


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

Фото для интересующихся
image

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

Какой выбор остаётся?

  1. Собрать прослойку на микроконтроллёре ATmega328, прошить, залить готовый код и читать с неё. Очень увлекательно, но звучит как попытка собрать велосипед для дальнейшего использования в качестве костыля.
  2. Читать «вручную» с I2C, опираясь на официальный даташит. Попробовал, это возможно, но плодить bash-скрипты не хотелось и не казалось методологически верным.
  3. Написать библиотеку, чтобы работать с датчиком так, как хочется.

Если интересно, как шло и что из этого получилось, то добро пожаловать под кат.
Продолжение истории

В двух словах о привилегиях Linux (capabilities)

Время на прочтение8 мин
Охват и читатели59K
Перевод статьи подготовлен специально для студентов курса «Администратор Linux».


Привилегии (capabilities) используются всё больше и больше во многом благодаря SystemD, Docker и оркестраторам, таким как Kubernetes. Но, как мне кажется, документация немного сложна для понимания и некоторые части реализации привилегий для меня оказались несколько запутанными, поэтому я и решил поделиться своими текущими знаниями в этой короткой статье.



Самая важная ссылка по привилегиям — это man-страница capabilities(7). Но она не очень хорошо подходит для первоначального знакомства.
Читать дальше →

Linux многоликий: как работать на любом дистрибутиве

Время на прочтение12 мин
Охват и читатели49K


Создать приложение для резервного копирования, работающее на любом дистрибутиве — задачка непростая. Чтобы обеспечить работу Veeam Agent for Linux на дистрибутивах от RHEL 6 и Debian 6, до openSUSE Leap 15.1 и Ubuntu 19.04 приходится решать спектр проблем, особенно если учесть, что в состав программного продукта входит модуль ядра.

Статья создана по материалам выступления на конференции LinuxPiter 2019.
Читать дальше →

Стильная Авалония

Время на прочтение7 мин
Охват и читатели17K
Стили, по умолчанию, что в wpf, что в авалонии, крайне нейтральны, и далеко не всегда подходят под нужные нам задачи, и немногие начинающие разработчики дружат с ними. В этой заметке я бы хотел рассказать про основы работы со стилями и показать пару интересных примеров.


Читать дальше →

Опыт создания сборок Linux под одноплатники с поддержкой обновлений

Время на прочтение9 мин
Охват и читатели31K
image

Введение


На данный момент, на рынке представлен большой ассортимент одноплатников на любой вкус по приемлемой цене.

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

Как использовать systemd-nspawn для восстановления Linux-системы

Время на прочтение7 мин
Охват и читатели13K
Перевод статьи подготовлен специально для студентов курса «Администратор Linux».





Разбираемся со способностью systemd запускать контейнеры для восстановления корневой файловой системы поврежденной системы.

До тех пор пока будут существовать системы GNU/Linux, системным администраторам будет необходимо восстанавливаться после повреждения корневой файловой системы, случайных изменений конфигурации или других ситуаций, которые не дают системе загрузиться в «нормальное» состояние.

Читать дальше →

Экономим время при работе с командной строкой

Время на прочтение3 мин
Охват и читатели16K
Инструменты для автоматизации работы с операторами и повышения читабельности кода.

Читать дальше →