The Correct Way of Running Python Programs (How to use name == “main”)
Запускать программы на Python очень просто: вы пишете свой код, сохраняете его, переходите в консоль и выполняете python myprogram.py. Это все, что вам нужно сделать. Но тогда зачем я пишу эту статью?
Правда в том, что есть гораздо лучший способ сделать это, и если вы хотите стать опытным разработчиком Python, вы должны его знать. Способ добиться этого на самом деле довольно прост: единственное, что вам нужно добавить, это оператор if. Читать дальше.
Запускать программы на Python очень просто: вы пишете свой код, сохраняете его, переходите в консоль и выполняете python myprogram.py. Это все, что вам нужно сделать. Но тогда зачем я пишу эту статью?
Правда в том, что есть гораздо лучший способ сделать это, и если вы хотите стать опытным разработчиком Python, вы должны его знать. Способ добиться этого на самом деле довольно прост: единственное, что вам нужно добавить, это оператор if. Читать дальше.
Эскалация привилегий в Kubernetes
Когда кто-то говорит о безопасности, в первую очередь имеет ввиду авторизацию и аутентификацию, но в контексте Kubernetes эти две составляющие являются лишь маленькими кусочками большого пазла.
В этой статье вы увидите, как пользователь с ограниченными правами, может повысить свои привилегии и стать админом кластера. Читать дальше.
Когда кто-то говорит о безопасности, в первую очередь имеет ввиду авторизацию и аутентификацию, но в контексте Kubernetes эти две составляющие являются лишь маленькими кусочками большого пазла.
В этой статье вы увидите, как пользователь с ограниченными правами, может повысить свои привилегии и стать админом кластера. Читать дальше.
Checkov: Security and Compliance for Infrastructure as Code
Checkov — это инструмент статического анализа кода для сканирования файлов IaC на наличие неправильных конфигураций, которые могут привести к проблемам с безопасностью или соответствию требованиям. Checkov включает более 750 предопределенных политик для проверки распространенных проблем с неправильной настройкой. Checkov также поддерживает создание и добавление пользовательских политик. Читать дальше.
Репыч на Гитхабе.
Checkov — это инструмент статического анализа кода для сканирования файлов IaC на наличие неправильных конфигураций, которые могут привести к проблемам с безопасностью или соответствию требованиям. Checkov включает более 750 предопределенных политик для проверки распространенных проблем с неправильной настройкой. Checkov также поддерживает создание и добавление пользовательских политик. Читать дальше.
Репыч на Гитхабе.
Exploring the Linux proc file system
Представление каждого объекта операционной системы в виде файла означает, что вы можете найти в файловой системе всевозможные вещи, такие как, например, процессы операционной системы. Запущенные процессы находятся в каталоге /proc, и сегодня мы поговорим о том, что мы можем там найти. Читать дальше.
Представление каждого объекта операционной системы в виде файла означает, что вы можете найти в файловой системе всевозможные вещи, такие как, например, процессы операционной системы. Запущенные процессы находятся в каталоге /proc, и сегодня мы поговорим о том, что мы можем там найти. Читать дальше.
A curated list of “Top” based monitoring tools for use in Linux and Unix terminals.
В этой статье ссылки на репозитории инструментов для мониторинга Linux.
Для мониторинга статуса процессов: htop, bpytop, btop, bashtop, atop, vtop, gtop, gotop, ytop, treetop, tiptop, pytop, mintop, ntop, below, hegemon, glances, nmon.
Для мониторинга GPU: nvtop, intel_gpu_top, radeontop, gltop.
Для мониторинга сети: iftop, sntop, jnettop, dnstop, nats-top, nettop, pingtop, iptraf-ng.
Для мониторинга дисковой подсистемы: iotop, drbdtop, nfstop, hdtop, viotop.
Для мониторинга контейнеров: ctop, ktop, kube-top.
И много других.
В этой статье ссылки на репозитории инструментов для мониторинга Linux.
Для мониторинга статуса процессов: htop, bpytop, btop, bashtop, atop, vtop, gtop, gotop, ytop, treetop, tiptop, pytop, mintop, ntop, below, hegemon, glances, nmon.
Для мониторинга GPU: nvtop, intel_gpu_top, radeontop, gltop.
Для мониторинга сети: iftop, sntop, jnettop, dnstop, nats-top, nettop, pingtop, iptraf-ng.
Для мониторинга дисковой подсистемы: iotop, drbdtop, nfstop, hdtop, viotop.
Для мониторинга контейнеров: ctop, ktop, kube-top.
И много других.
Debugging Distributed Trace Gaps
Ранее в этом году мы заметили странные пробелы примерно в 0,5% трассировок наших распределенных приложений. Эти перерывы длились до нескольких секунд и приводили к ухудшению обслуживания пользователей и почти ежедневным оповещениям в течение нескольких недель. Мы подозревали, что причина этих пробелов лежит вне кода приложения, где-то в сети или еще в слоях программного обеспечения, поверх которых работают наши приложения.
В этом цикле из 3 статей команда Teachers Pay Teachers разбирается с трассировкой вызовов внутри операционной системы.
Debugging Distributed Trace Gaps with tcpdump
Debugging Distributed Trace Gaps with ftrace
Monitoring Linux Audit
Ранее в этом году мы заметили странные пробелы примерно в 0,5% трассировок наших распределенных приложений. Эти перерывы длились до нескольких секунд и приводили к ухудшению обслуживания пользователей и почти ежедневным оповещениям в течение нескольких недель. Мы подозревали, что причина этих пробелов лежит вне кода приложения, где-то в сети или еще в слоях программного обеспечения, поверх которых работают наши приложения.
В этом цикле из 3 статей команда Teachers Pay Teachers разбирается с трассировкой вызовов внутри операционной системы.
Debugging Distributed Trace Gaps with tcpdump
Debugging Distributed Trace Gaps with ftrace
Monitoring Linux Audit
How to monitor IP changes using cron or a systemd timer
Я использую Raspberry PI в качестве NAS для своей домашней сети, а также использую WireGuard для подключения к своей домашней сети из любого места. Поэтому мне важно знать IP-адрес моей домашней сети. К сожалению, мой домашний общедоступный IP-адрес время от времени меняется. Динамический DNS — это решение, но я предпочитаю не привлекать третьих лиц, поэтому мне остается вручную проверять свой IP-адрес, смотреть, меняется ли он, и обновлять конфигурацию WireGuard на своем телефоне.
Я хотел автоматизировать ту часть, где я всегда знаю свой текущий IP-адрес, поэтому я запустил свой терминал и вот что у меня получилось. Читать дальше.
Я использую Raspberry PI в качестве NAS для своей домашней сети, а также использую WireGuard для подключения к своей домашней сети из любого места. Поэтому мне важно знать IP-адрес моей домашней сети. К сожалению, мой домашний общедоступный IP-адрес время от времени меняется. Динамический DNS — это решение, но я предпочитаю не привлекать третьих лиц, поэтому мне остается вручную проверять свой IP-адрес, смотреть, меняется ли он, и обновлять конфигурацию WireGuard на своем телефоне.
Я хотел автоматизировать ту часть, где я всегда знаю свой текущий IP-адрес, поэтому я запустил свой терминал и вот что у меня получилось. Читать дальше.
Usage notes for nc command
Несколько рекомендаций по использованию утилиты nc для диагностики проблем с сетью. Читать далее.
Несколько рекомендаций по использованию утилиты nc для диагностики проблем с сетью. Читать далее.
Structured Logging in a Shell Script with jq
Доработка скриптов для структурированного ведения логов означает, что вы можете себе помочь сократить среднее время решения проблем. Мы напишем простую функцию-оболочку вокруг jq, чтобы улучшить сообщения в логе. Читать дальше.
Доработка скриптов для структурированного ведения логов означает, что вы можете себе помочь сократить среднее время решения проблем. Мы напишем простую функцию-оболочку вокруг jq, чтобы улучшить сообщения в логе. Читать дальше.
:(){ :|: & }; :
Это простой Bash-скрипт, который сделает всё, что нужно. Или не нужно. По сути, это создание процессов, которые ничего не делают, кроме как снова создают себя. В этой статье метод борьбы с таким типом атаки при помощи конфигурации limits.conf.
Вот описание того, что происходит:
:() — This is a simple function definition, '<function-name>()'. In this case, the function name is ':'. As defined, this function accepts no parameters.
{ — Begin Function Definition.
:|: — Call the function & pipe it to the same function. Simple recursion technique.
& — Send the process to background so it cannot be killed with simple Ctrl+C.
}; — Terminate Function Definition.
: — Call the Function ':'.
Это простой Bash-скрипт, который сделает всё, что нужно. Или не нужно. По сути, это создание процессов, которые ничего не делают, кроме как снова создают себя. В этой статье метод борьбы с таким типом атаки при помощи конфигурации limits.conf.
Вот описание того, что происходит:
:() — This is a simple function definition, '<function-name>()'. In this case, the function name is ':'. As defined, this function accepts no parameters.
{ — Begin Function Definition.
:|: — Call the function & pipe it to the same function. Simple recursion technique.
& — Send the process to background so it cannot be killed with simple Ctrl+C.
}; — Terminate Function Definition.
: — Call the Function ':'.
Resource Limits in Linux | limits.conf
Продолжение вчерашней статьи о безопасности Linux. Вы узнаете какие ещё есть настройки в limits.conf. Читать дальше.
Продолжение вчерашней статьи о безопасности Linux. Вы узнаете какие ещё есть настройки в limits.conf. Читать дальше.
Курс для тех, кто отвечает «Jenkins»
Специально для тех, у кого Jenkins падает при каждом деплое, в Слёрм есть курс от Кирилла Борисова, Infrastructure Engineer технологического центра Deutsche Bank. В курсе будет много кейсов и примеров из практики спикера, которые помогут научиться работать с инструментом так, чтобы все работало стабильно и предсказуемо 😎
Старт — 6 сентября.
Здесь можно ознакомиться с подробной программой и подобрать удобный формат обучения 👉 https://slurm.club/3Pzjfx8
Специально для тех, у кого Jenkins падает при каждом деплое, в Слёрм есть курс от Кирилла Борисова, Infrastructure Engineer технологического центра Deutsche Bank. В курсе будет много кейсов и примеров из практики спикера, которые помогут научиться работать с инструментом так, чтобы все работало стабильно и предсказуемо 😎
Старт — 6 сентября.
Здесь можно ознакомиться с подробной программой и подобрать удобный формат обучения 👉 https://slurm.club/3Pzjfx8
Пособие по программированию модулей ядра Linux. Ч.1
Перед вами последняя версия пособия по программированию модулей ядра Linux, вышедшего 2 июля 2022 года. Пособие большое, поэтому материал будет разбит на серию статей. В первой части мы разберём, что такое модули ядра, рассмотрим необходимые подготовительные этапы для их создания и в завершении по традиции напишем первый простейший модуль «Hello world», попутно разобрав лицензирование, передачу аргументов командной строки и прочие нюансы. Читать дальше.
Перед вами последняя версия пособия по программированию модулей ядра Linux, вышедшего 2 июля 2022 года. Пособие большое, поэтому материал будет разбит на серию статей. В первой части мы разберём, что такое модули ядра, рассмотрим необходимые подготовительные этапы для их создания и в завершении по традиции напишем первый простейший модуль «Hello world», попутно разобрав лицензирование, передачу аргументов командной строки и прочие нюансы. Читать дальше.
Эскалация привилегий при помощи polkit: как заполучить root-доступ в Linux, воспользовавшись семилетним багом
polkit — это системный сервис, по умолчанию устанавливаемый во многих дистрибутивах Linux. Он используется демоном systemd, поэтому в любом дистрибутиве Linux, где применяется system, также используется polkit. Автор этой статьи, входя в состав GitHub Security Lab, работает над улучшением безопасности опенсорсного софта; он ищет уязвимости и докладывает о них. Именно он однажды нашел уязвимость в polkit, позволяющую злоумышленнику увеличить его привилегии. Читать дальше.
polkit — это системный сервис, по умолчанию устанавливаемый во многих дистрибутивах Linux. Он используется демоном systemd, поэтому в любом дистрибутиве Linux, где применяется system, также используется polkit. Автор этой статьи, входя в состав GitHub Security Lab, работает над улучшением безопасности опенсорсного софта; он ищет уязвимости и докладывает о них. Именно он однажды нашел уязвимость в polkit, позволяющую злоумышленнику увеличить его привилегии. Читать дальше.
Большое количество курсов и полезного материала для системных администраторов и безопасников:
https://t.iss.one/Social_engineering/2002
Самая редкая и актуальная литература для специалистов в области информационной безопасности:
https://t.iss.one/S_E_Book/2664
#реклама
https://t.iss.one/Social_engineering/2002
Самая редкая и актуальная литература для специалистов в области информационной безопасности:
https://t.iss.one/S_E_Book/2664
#реклама
Разработка драйвера сетевого адаптера для Linux. Часть 1
В этой статье рассмотрим общую структуру сетевого адаптера, узнаем какие компоненты входят в его состав, что такое MAC и PHY, разберемся как подготовить адаптер к работе, сконфигурировать, и как в итоге получать сетевые пакеты.
Хотя при разработке драйверов необходимо использовать стандартные ядерные фреймворки, такие как clock, reset, libphy и пр., поначалу мы будем работать с адаптером напрямую через регистры состояния и управления. Это позволит нам детально разобраться с аппаратной частью. Читать дальше.
В этой статье рассмотрим общую структуру сетевого адаптера, узнаем какие компоненты входят в его состав, что такое MAC и PHY, разберемся как подготовить адаптер к работе, сконфигурировать, и как в итоге получать сетевые пакеты.
Хотя при разработке драйверов необходимо использовать стандартные ядерные фреймворки, такие как clock, reset, libphy и пр., поначалу мы будем работать с адаптером напрямую через регистры состояния и управления. Это позволит нам детально разобраться с аппаратной частью. Читать дальше.
Linux: How to rsync between two remote servers that do not communicate each other
rsync широко используется системными администраторами для синхронизации файлов между серверами. Сценарии, с которыми я сталкивался до сих пор, были простыми: «синхронизировать файлы с удаленного хоста на локальный» или «синхронизировать файлы с локального на удаленный хост».
Но сценарий, с которым мне недавно приходилось иметь дело, заключался в синхронизации файлов между двумя удаленными серверами с использованием третьего сервера между этими двумя удаленными серверами. Причиной этого было то, что между двумя удаленными серверами не было связи из-за ограничений брандмауэра, и это не могло измениться быстро или легко из-за корпоративной политики. rsync не поддерживает синхронизацию двух удаленных серверов, поэтому я начал думать об альтернативах. Читать душещипательную историю.
rsync широко используется системными администраторами для синхронизации файлов между серверами. Сценарии, с которыми я сталкивался до сих пор, были простыми: «синхронизировать файлы с удаленного хоста на локальный» или «синхронизировать файлы с локального на удаленный хост».
Но сценарий, с которым мне недавно приходилось иметь дело, заключался в синхронизации файлов между двумя удаленными серверами с использованием третьего сервера между этими двумя удаленными серверами. Причиной этого было то, что между двумя удаленными серверами не было связи из-за ограничений брандмауэра, и это не могло измениться быстро или легко из-за корпоративной политики. rsync не поддерживает синхронизацию двух удаленных серверов, поэтому я начал думать об альтернативах. Читать душещипательную историю.
Linux: How to compress data in a remote server and save them locally in one command!
Одной из наиболее распространенных задач системного администратора является сжатие некоторых файлов на удаленном сервере, а затем их перемещение на другой сервер либо для резервного копирования, либо для обработки данных. Это относительно простая операция, но она имеет два подводных камня:
⚡️ Удаленный сервер мог исчерпать место на диске во время сжатия
⚡️ Требуются дополнительные команды для загрузки и удаления сжатого файла.
Читать дальше.
Одной из наиболее распространенных задач системного администратора является сжатие некоторых файлов на удаленном сервере, а затем их перемещение на другой сервер либо для резервного копирования, либо для обработки данных. Это относительно простая операция, но она имеет два подводных камня:
⚡️ Удаленный сервер мог исчерпать место на диске во время сжатия
⚡️ Требуются дополнительные команды для загрузки и удаления сжатого файла.
Читать дальше.
Python для инженеров — курс, где не будем отвлекаться на абстрактные задачи, а займёмся тем, что действительно нужно в работе, например:
— Написать модуль управления правами для ansible,
— Внедрить commit conventions и генерировать ченджлоги из коммитов при слиянии dev-бранча с релизным.
Смотреть программу курса
В конце напишем итоговый проект, для которого можно взять рабочую задачу и получить на неё ревью.
Занять место можно со скидкой 16,99%, если подписаться на вот этот канал
— Написать модуль управления правами для ansible,
— Внедрить commit conventions и генерировать ченджлоги из коммитов при слиянии dev-бранча с релизным.
Смотреть программу курса
В конце напишем итоговый проект, для которого можно взять рабочую задачу и получить на неё ревью.
Занять место можно со скидкой 16,99%, если подписаться на вот этот канал
Как превратить пишущую машинку в терминал Linux
Пятничное. Кто не любит звук старой пишущей машинки? Я точно люблю! Вот почему я работаю над превращением своей пишущей машинки Brother AX-25 в терминал Linux.
Клавиатура машинки подключена по матрице 8x11 с помощью кабелей на 8 пинов и на 11 пинов. Когда один из пинов строки соединяется с пином столбца после нажатия клавиши, пишущая машинка обнаруживает это и печатает соответствующий символ.
Матрица клавиатуры пишущей машинки управляется двумя мультиплексорами Arduino Uno. Я использовал мультиплексоры от Amazon, но для этого подойдёт любой цифровой или аналоговый мультиплексор, если он имеет более 11 каналов. Arduino может обмануть пишущую машинку и заставить её думать, что была нажата клавиша. Для этого нужно выбрать канал на каждом мультиплексоре и соединить контакты. Читать дальше.
Пятничное. Кто не любит звук старой пишущей машинки? Я точно люблю! Вот почему я работаю над превращением своей пишущей машинки Brother AX-25 в терминал Linux.
Клавиатура машинки подключена по матрице 8x11 с помощью кабелей на 8 пинов и на 11 пинов. Когда один из пинов строки соединяется с пином столбца после нажатия клавиши, пишущая машинка обнаруживает это и печатает соответствующий символ.
Матрица клавиатуры пишущей машинки управляется двумя мультиплексорами Arduino Uno. Я использовал мультиплексоры от Amazon, но для этого подойдёт любой цифровой или аналоговый мультиплексор, если он имеет более 11 каналов. Arduino может обмануть пишущую машинку и заставить её думать, что была нажата клавиша. Для этого нужно выбрать канал на каждом мультиплексоре и соединить контакты. Читать дальше.
Memory Management in Linux
Управление памятью в Linux состоит из двух основных компонентов:
а). Первый касается совместного использования и освобождения блоков физической памяти, групп страниц и небольших блоков памяти.
б). Второй обрабатывает виртуальную память, отображаемую в памяти в адресное пространство активных процессов.
Читать дальше.
Управление памятью в Linux состоит из двух основных компонентов:
а). Первый касается совместного использования и освобождения блоков физической памяти, групп страниц и небольших блоков памяти.
б). Второй обрабатывает виртуальную память, отображаемую в памяти в адресное пространство активных процессов.
Читать дальше.