Обновить
303.51

Linux *

Пишем под *nix

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

Как простой баг повреждения памяти ядра Linux может привести к полной компрометации системы

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

Введение


В этом посте описывается простой в реализации баг блокировки ядра Linux и то, как я использовал его против ядра Debian Buster 4.19.0-13-amd64. В посте рассматриваются варианты устранения бага, препятствующие или усложняющие использование подобных проблем злоумышленниками.

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

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

IO_URING. Часть 2. Let's GO

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

Всем привет! Продолжаем разбираться с io_uring. Сегодня попробуем использовать io_uring для решения прикладных задач. А именно напишем полноценный TCP сервер. Для этого мигрируем наши приложения с C на GO. Не буду писать длинные вступления, вперед экспериментировать!

Читать далее

Работа с файлами формата ELF из Хаскела

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

Работа с файлами формата ELF -- популярная тема на Хабре. ("Введение в ELF-файлы в Linux: понимание и анализ", "Минимизация файла ELF – попробуем в 2021?" и т. д.)

Существуют библиотеки для Хаскела для работы с этими файлами: elf
(Hackage) и data-elf (Hackage). Эти библиотеки работают только с заголовками и элементами таблиц и не дают возможности сгенерировать объектный файл.

Библиотека melf (GitHub, Hackage) даёт возможность полностью разобрать файл ELF и сгенерировать такой файл по несложной структуре данных. Ниже даются примеры её использования.

Читать далее

Свободная касса: как мы ушли от монолита и настроили межмодульное взаимодействие на RPC

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

Всем привет, я — Дмитрий Пестеха, ведущий разработчик С++ команды POS-систем в «Магните». В этой статье я расскажу, как мы пилили монолитное приложение Касса на модули и отлаживали их взаимодействие на RPC-JSON. Спойлер: в процессе появился новый самописный язык интерфейсов - IDL.

Читать далее

Повышаем производительность файлового I/O в JVM на Linux

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

Все кто хоть раз касался разработки I/O интенсивных приложений, наверное, задумывался о повышении их производительности. Особенно когда у проекта много внешних хранилищ и они находятся по всему миру. Давайте разберем какие есть инструменты с их плюсами и минусами и как их лучше использовать на примере конкретного проекта, в котором принимал участие Дмитрий Бундин, старший Big Data-разработчик в Grid Dynamics.

Читать далее

Автоматизированные бэкапы postgresql

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

Всем привет! Я бы сказал что эта статья cookbok по которому можно создать простое и эффективное решение для создания бэкапов базы данных.

Казалось бы довольно очевидная задача но тем не менее когда я хотел её решить столкнулся с множеством проблем. Готовые бесплатные решения в большинстве своем направленны на управления кластерами или не поддерживаются на ARM-машинах.

В ходе исследования был собран следующий рецепт с помощью которого можно делать бэкапы и получать уведомления по почте, вам даже не понадобиться свой smtp достаточно gmail-аккаунта.

Узнать как

Выводим программных роботов на третью космическую скорость, или RPA в Linux

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

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

Многие профессиональные RPA-разработчики уже давно мечтают о том, чтобы роботов можно было запускать не только под управлением платной требовательной к ресурсам Windows, но и под бесплатной нетребовательной Linux. В этой статье знакомим читателей с возможностью разработки кроссплатформенных процессов с использованием UiPath и подробно разбираем преимущества от использования Linux-роботов.

Статья написана при поддержке технического эксперта UiPath: Валентина Драздова.

Читать далее

Создание уведомлений и напоминаний на рабочем столе из Linux терминала

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

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

Читать далее

Файл-сервер на Raspberry Pi как домашний NAS

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

Одноплатные мини-компьютеры подходят для совершенно разных полезных применений: блокировки рекламы во всём трафике (Pi-hole), управления умным домом или печати на стареньком принтере в кладовке по Wi-Fi. Но практически идеальный вариант использования — в качестве файл-сервера с подключением внешнего SSD или HDD. Это может быть и домашний хостинг, и даже колокейшн в настоящем дата-центре.

Мы уже рассказывали про создание собственного веб-сервера на Andoid, а также про хостинг файлов в ДНК.

Теперь посмотрим, какие есть разработки под Linux:
Читать дальше →

Генераторы случайных чисел в разных ОС

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

"Генерация случайных чисел слишком важна, чтобы оставлять ее на волю случая" - Роберт Р. Кавью

Как-то поздним летним вечером мне пришлось разобраться, как устроены генераторы случайных чисел в Windows и Linux. Собственно, в этой статье я попробую привести саккумулированную информацию, и преподнести её максимально простыми словами, без необходимости лезть в исходники, туториалы и статьи.

Читать далее >>>

Углубленное знакомство с пространствами имен Linux. Часть 2

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


В предыдущей части мы разобрали, чем являются пространства имен, и какую роль они играют в современных системах, после чего познакомились с двумя их видами: PID и NET. Во второй и заключительной части материала мы изучим пространства имен USER, MNT, UTS, IPC и CGROUP, а в завершении объединим полученные знания, создав полностью изолированную среду для процесса.
Читать дальше →

Линукс-порт Far Manager: что нового за 2021

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

Предыдущий пост про порт Far Manager под Linux, far2l, оказался невероятно популярным, так что я подумал, что неплохо бы раз в год писать что-то вроде дайджеста самых интересных новостей разработки. Начнём.

Буфер обмена в консольной версии

Теперь far2l, как и mc, умеет использовать буфер обмена X11 даже в консольной версии (в графической умел с самого начала). Для этого собирается отдельный модуль взаимодействия с X, который загружается, только если в системе установлена библиотека libx11. Можно даже ходить на удаленные сервера через ssh -X, буфер обмена будет работать и там (опять же, если libx11 на сервере установлена).

И ещё о консольном режиме. Не забываем про параметр командной строки --ee, позволяющий избавиться от необходимости нажимать ESC дважды.

Кстати, о клавиатуре в консоли. Горячие клавиши в сторонних терминалах поддерживаются практически все — по крайней мере, я знаю только про проблемы с комбинациями Ctrl+цифра, над ними идёт работа.

Читать далее

Embedded Linux. Отладка ядра

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

В предыдущих статьях описано, как мы учились дебажить загрузчик u-boot: 1, 2. С ядром все оказалось сложнее. Например, выяснилось, что ядро Linux в принице невозможно скомпилировать с отключенной оптимизацией (-O0). В статье описывается как нам все таки удалось запустить ядро на микропроцессоре ARM в режиме пошаговой отладки.

Читать далее

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

Углубленное знакомство с пространствами имен Linux. Часть 1

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

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

Работа с квалифицированными сертификатами в свете новой редакции Приказа №795 ФСБ РФ от 21.01.2021. Часть II

Время на прочтение5 мин
Охват и читатели5.8K
imageПосле опубликования статьи, посвящённой требованиям Приказа №795 ФСБ России в редакции от 29 января 2021 года, меня не покидало чувство её незавершённости. Это чувство было связано с тем, что в статье ни слова не было сказано про утилиту CAFL63, которая позволяет разворачивать удостоверяющие центры. И естественным является то, что её тоже необходимо привести в соответствие с новыми требованиями.
Читать дальше →

Настраиваем любой Linux под себя одной командой

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

Иногда приходится настраивать различные *unix системы: персональные компьютеры, VPS, Raspberry Pi и так далее. Но когда их становится много, настраивать их становится всё сложнее и сложнее. Поэтому хочется автоматизировать этот процесс. В данной статье я расскажу, как я решил подобную проблему, расскажу про некоторые существующие решения, а также покажу магию bash!

Читать далее

Настройка VSCode для программирования AVR в Linux

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

Всем, кто занимается электроникой, так или иначе знакомы контроллеры AVR. Начинающим они знакомы, по большей части, за счёт экосистемы Arduino. В данной статье я попытаюсь рассказать начинающим программистам, как можно в Linux просто настроить VSCode для работы с контроллерари AVR и получить удобную навигацию по коду, приятную подсветку синтаксиса и прочие рабости, которые даёт VSCode. Это даст желающим возможность перейти от экосистемы Arduino к прямой работе с процессорами.

Читать далее

Как писать bash-скрипты надежно и безопасно: минимальный шаблон

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

Скрипты на Bash. Как много в этом слове. Любому разработчику рано или поздно приходится их писать. Почти никто не скажет "да, я люблю писать bash-скрипты", и поэтому этой теме уделяют мало внимания.

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

Читать далее

IO_URING. Часть 1. Введение

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

Всем привет! Наверное, многие уже слышали о новом интерфейсе ядра Linux — io_uring. Это новый способ работы с асинхронным I/O (и не только) в Linux. Кстати, новый он не только из-за даты выхода в свет, но и в плане подходов, которые предлагает разработчику.

Заинтересовало? Более подробно разберемся под катом.

Читать далее

Использование git pw клиента для patchwork

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

При bleeding edge разработке или просто в рамках экспериментов, приходиться добавлять патчи прямиком из maillists.

Скачивать серию вручную и сохранять в mbox можно действительно озвереть, даже не смотря на то, что можно спокойно выделить патчи (например в mutt) по одному и сохранить всю пачку (ключевое слово здесь спокойно).

Тем у кого горит, предлагаю воспользоваться git-pw.

Читать далее