Ты читал десять статей про XSS и до сих пор не знаешь, почему один сайт ломается через <img onerror>, а другой нет.

Ты прошёл три курса по «основам безопасности» и не сможешь сейчас провести нмап своей сетки.
Ты решал CTF, но если спросят «как работает Kerberos», ты залипнешь.

Проблема не в тебе. Проблема в том, что безопасность преподают как теорию.

Этот курс делает наоборот. С первого урока ты ломаешь, чинишь, поднимаешь стенды, читаешь HTTP-сырьём, собираешь ROP-цепочки руками. SQLi, XSS, CSRF, SSRF, IDOR, обход аутентификации, переполнение буфера, атаки на AD, побег из K8s-пода, реверс мобильных приложений, сборка собственного C2.

20 блоков, реальные задания с кодом, финальный пентест с отчётом для портфолио. С нуля. До Pro.

Начать Учиться: https://stepik.org/a/279968/
9
🔥 4
👍 2
4 29 3.1K
На UNIX stdout - это просто файловый дескриптор 1.

И из-за этого можно поймать очень неприятный эффект: если закрыть stdout, следующий открытый файл может получить тот же дескриптор 1.

То есть код вроде этого:


close(1);
FILE *f = fopen("output.txt", "w");
printf("hello\n");


Может записать printf не в терминал, а прямо в output.txt.

Потому что система обычно выдаёт минимальный свободный файловый дескриптор. Закрыл 1 - значит он снова свободен. Открыл файл - он может стать новым stdout.

Мелочь, но именно из таких мелочей и состоит настоящее понимание UNIX.
10
👍 6
🗿 4
33 3.2K
Linux умеет запускать программы в почти контейнерной изоляции вообще без Docker.

За это отвечает `unshare`.

Команда создает для процесса отдельные namespace: свой список процессов, свой mount-view, hostname, IPC, network и user namespace. В итоге программа видит не всю систему, а только ограниченный «кусок» окружения.

Пример:


sudo unshare --pid --fork --mount --uts --ipc --net --user --map-root-user --mount-proc bash


Внутри новой shell можно выполнить:


ps aux


И вместо сотен процессов увидеть почти пустую систему: bash с PID 1 и сам ps.

Это не Docker, не container runtime и не магия. Это базовый механизм ядра Linux, на котором контейнеры во многом и построены.

Полезно знать, если хотите понимать контейнеры не как «черный ящик», а на уровне того, что реально делает kernel.
👍 38
🔥 10
7
13 131 4.1K
📁🧹 Умный файловый организатор для терминала

File Organizer — это современный инструмент CLI для автоматической организации файлов в папках. С интуитивно понятным интерфейсом TUI, он поддерживает более 170 форматов файлов, обеспечивает дублирование и интеллектуальную категоризацию.

🚀Основные моменты:
- Автоматическая категоризация по типу файлов
- Интерактивный TUI с живым предварительным просмотром
- Режим "сухого запуска" для безопасного тестирования
- Поддержка JSON для гибкой настройки правил
- Обнаружение дубликатов с реальным временем прогресса

📌 GitHub: https://github.com/SaschaKohler/file-organizer

#cpp
12
👍 3
🤝 2
1 54 4.4K
Пересмотр решения о создании редакции Fedora AI Developer Desktop

Управляющий совет проекта Fedora (Fedora Council) отозвал ранее принятое решение о создании Fedora AI Developer Desktop - официальной редакции дистрибутива для разработчиков, использующих AI-инструменты. Изначально все 6 членов управляющего совета проголосовали за создание проекта, но после ознакомления с критикой, высказанной в ходе обсуждения в сообществе, через несколько дней два участника изменили свои голоса и высказались против. Так как единогласия не достигнуто, утверждение решения отложено. Вопрос планируют решить до проведения конференции Flock 2026, которая пройдёт с 14 по 16 июня.

Подробнее:
https://opennet.ru/65454/
https://opennet.me/65454/
9
👍 5
🔥 4
1 9 4.5K
emoji На Stepik обновили курс «Rust: полный курс разработчика. С нуля до профи»

Представьте: через три месяца вы открываете чужой Rust-код и читаете его как книгу.

Arc<Mutex<T>> не вызывает панику. impl Future не пугает. Вы точно знаете, почему компилятор ругается и как это починить за 10 секунд.

Это не фантазия. Это результат 50 уроков, в которых каждая концепция объясняется через код и закрепляется практикой.

Ownership, traits, generics, async, unsafe - всё, что казалось магией, станет рабочим инструментом.

А бонусом - портфолио проектов: от CLI-утилит до REST API и WebAssembly.

Вы и так знаете, что Rust - ваш следующий язык. Этот курс просто сделает это реальностью.

Сегодня - 55% процентов от цены, торопись: https://stepik.org/a/269250/
7
👍 3
🤣 3
5 27 4.4K
🐧 Быстрый Linux совет

Место на Диске снова «внезапно» закончилось? Начни с этой команды:

`du -h / --max-depth=1 2>/dev/null | sort -rh | head -10`

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

2>/dev/null просто скрывает ошибки доступа, чтобы вывод не превращался в кашу из permission denied.

На продакшн-серверах чаще всего раздуваются /var/log, /var/lib/docker, кэши пакетных менеджеров и временные файлы. Поэтому если место исчезло без причины, сначала смотри туда.

Одна команда - и уже понятно, где копать.
👍 27
8
🔥 6
3 142 4.7K
Linux не станет свалкой AI-кода

Линус Торвальдс довольно ясно обозначил позицию: Linux не собираются превращать в мусорку для кода, который сгенерировали ИИ-инструменты и толком не проверили.

После долгих споров в сообществе появились официальные правила по использованию GitHub Copilot, Claude и других помощников при разработке ядра.

пользоваться ИИ можно. Протаскивать slop - нельзя.

Главная фраза всей истории: «За ошибки отвечают люди».

Хочешь писать с Copilot - пиши. Хочешь просить Claude помочь с патчем - проси. Но если код попадает в Linux kernel, ответственность лежит не на модели, не на тулзе и не на «оно само так сгенерировало».

Ответственность на тебе.

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

И это, пожалуй, самая взрослая позиция open source-сообщества по отношению к ИИ.

Linux строили больше 30 лет. Его не будут ломать ради экономии 20 минут на написании кода.
75
👍 48
🔥 30
4 61 6K
FTXUI

Простая кроссплатформенная библиотека C++ для пользовательских интерфейсов на базе терминала!

• Функциональный стиль
• Простой и элегантный синтаксис
• Создаваемые консольные UI поддерживают навигацию с помощью клавиатуры и мыши
• Поддержка UTF8
• Поддержка анимации
• Поддержка рисования
• Нет зависимостей
• Кроссплатформенность: Linux/MacOS, WebAssembly, Windows


https://github.com/ArthurSonzogni/FTXUI
👍 13
7
👾 2
1 53 6.2K
На Stepik обновили курс «C# с нуля до профи»

Представьте: через четыре месяца вы открываете чужой .NET-проект и читаете его как книгу.

IServiceCollection не вызывает ступора. async Task<IActionResult> пишется на автомате. Вы точно знаете, почему EF Core сгенерировал именно такой SQL - и как переписать запрос, чтобы он летал.

Это не фантазия. Это результат после 16 модулей, в которых каждая концепция объясняется через код и закрепляется практикой.

ООП, SOLID, LINQ, async/await, DI, EF Core, ASP.NET Core, Docker, Kubernetes - всё, что казалось магией, станет рабочим инструментом.

А бонусом - портфолио проектов: от CLI-утилит и REST API до собственного SaaS с multi-tenancy, JWT и деплоем в Kubernetes под TLS.

Скидка - 58% доступна 48 часов: https://stepik.org/a/282984/
6
👍 3
🔥 2
3 12 5.1K
Cамые нужные команд SSH

Запускай команды быстро
Чтобы выполнить всего одну удаленную команду, совсем не обязательно подключаться к SSH, вводить команду, а затем отключаться. Можно сделать это сразу. Например, так можно посмотреть заполненность ФС удаленной машины:
$ ssh user@host df -h
А так — перезагрузить ее:
$ ssh user@host sudo reboot

Составляй списки команд и запускай их разом
Если у тебя есть целый список команд, которые следует выполнить, их можно записать в файл и скормить этот файл SSH:
$ ssh user@host "`cat file.txt`"

Редактируй удаленные файлы локальным редактором
Чтобы отредактировать файл на удаленной машине, не требуется заходить на нее и использовать консольный редактор. На самом деле файл можно открыть в твоем любимом текстовом редакторе на локальной машине (gvim заменяем на свой редактор):
$ gvim scp://user@host//путь/к/файлу

Копируй содержимое удаленного файла в буфер обмена
Если необходимо скопировать содержимое удаленного файла или вывод команды в буфер обмена, не обязательно выводить его на экран или открывать в текстовом редакторе и копировать вручную. Можно использовать следующую команду:
$ ssh user@host cat /путь/к/файлу | xclip
А так можно скопировать вывод команды:
$ ssh user@host uname -a | xclip

Сравнивай удаленный и локальный файл без копирования
Похожий прием можно использовать для сравнения двух файлов:
$ ssh user@host cat /путь/к/удаленному/файлу | diff /путь/к/лoкальному/файлу -

Работай с удаленными файлами с помощью локального файлового менеджера
Не всегда удобно работать с большим количеством файлов с помощью консольных команд или mc, запущенного на удаленной машине. Но всегда можно подключить любой каталог удаленной машины как сетевой диск. Для этого достаточно установить sshfs:
$ sudo apt-get install sshfs
Создать каталог для подключения «сетевого диска»:
$ mkdir remote_files
И подключить его:
$ sshfs user@host:/home/user ~/remote_files/
Теперь все файлы удаленного каталога /home/user будут видны в каталоге ~/remote_files/ и с ними можно работать, как с обычными.

Копируй ключи быстро
Хоть и копирование публичного ключа на удаленный сервер — задача простая, но она требует выполнения нескольких действий вручную. Если тебя это напpягает, скопировать ключ можно в автоматическом режиме:
$ ssh-copy-id user@host
При этом не обязательно копировать основной ключ, с помощью флага -i можно указать любой другой:
$ ssh-copy-id -i ~/my_key.pub user@host

Создай постоянное соединение с машиной
Если в течение дня ты часто подключаешься к одной машине, в том числе на несколько минут или секунд (чтобы просто запустить одну команду, например), есть смысл создать с ней постоянное соединение. Твой комп будет держать соединение открытым и использовать его для каждого подключения к машине. Это намного быстрее и экономичнее с точки зрения трафика и нагрузки на процессор.
Добавь следующие строки в ~/.ssh/config:
Host host
ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster no

А затем создай соединение:
$ ssh -MNf user@host
🔥 18
7
👍 5
4 201 5.1K
🔥 Продвинутый Rust без учебных игрушек

Базу уже прошли? Тогда следующий шаг - production-разработка.

На Stepik идет скидка 60% на продвинутый курс по Rust для тех, кто хочет не просто знать синтаксис, а строить реальные системы.

Внутри: async, unsafe, gRPC, lock-free, observability, Kafka, NATS, axum, tower, CI/CD и канареечный деплой.

Финальный проект - production-ready feed-сервис от архитектуры до релиза.

21 модуль, 84 урока, 400+ проверочных шагов.

Если хотите перейти от маленьких Rust-утилит к коммерческой разработке, сейчас хороший момент зайти: https://stepik.org/a/285608/pay
4
👍 2
🔥 2
12 4.5K
👉 Linux - strace: один из самых недооценённых инструментов

Он нужен в тот момент, когда приложение падает, не видит конфиг, не может найти библиотеку или ругается на файл, которого “вроде бы нет”.

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

Но strace позволяет не гадать.

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

И вот тут часто всё становится очевидно: приложение ищет config не в той директории, лезет за библиотекой по старому пути, не может открыть сертификат или получает отказ из-за прав доступа.

Это особенно полезно при отладке сервисов, Docker-контейнеров, странных production-багов и бинарников, у которых нет нормальных логов.

Главная идея простая: когда Linux-программа ведёт себя непонятно, сначала посмотри её системные вызовы.

https://www.youtube.com/shorts/iRnNQWKozSA
👍 11
🔥 9
💯 4
104 4.2K
Если Linux-приложение падает и пишет что-то вроде “config not found”, не гадай, где оно ищет файл.

Используй strace.

Команда:

strace -f -e trace=file myapp 2>&1 | grep -E 'ENOENT|EACCES|openat|stat'

Она покажет, какие файлы программа реально пытается открыть.

Смотри на три вещи:

ENOENT - файл не найден

EACCES - нет прав

openat / stat - точный путь, куда программа полезла

Это особенно спасает, когда сервис не видит конфиг, бинарник не находит .so библиотеку или приложение ищет сокет и сертификат вообще не там, где ты думал.

А если процесс уже запущен:

sudo strace -f -e trace=file -p PID

Один из самых полезных приёмов для отладки Linux: не угадывать проблему, а посмотреть, что процесс делает на самом деле.
👍 28
🔥 14
10
227 4.9K
�� Лучшие БЕСПЛАТНЫЕ ресурсы по Linux в 2026 году

1. Linux Foundation Training
https://training.linuxfoundation.org/training/introduction-to-linux/

2. Linux Journey
https://linuxjourney.com

3. Ubuntu Tutorials
https://ubuntu.com/tutorials

4. Red Hat Training Resources
https://developers.redhat.com/learn

5. Документация GNU
https://gnu.org/manual

6. OverTheWire Bandit (Linux-варгеймы)
https://overthewire.org/wargames

7. Книга The Linux Command Line
https://linuxcommand.org/tlcl.php

8. MIT Missing Semester (Linux и CLI)

https://missing.csail.mit.edu

9. Туториалы по Linux от DigitalOcean
https://digitalocean.com/community/tutorials

10. Linux From Scratch
https://linuxfromscratch.org

11. Arch Linux Wiki
https://wiki.archlinux.org

12. Курс по Linux от freeCodeCamp
https://freecodecamp.org/news/tag/linux

13. Linux Survival (интерактивное обучение)
https://linuxsurvival.com

14. NDG Linux Essentials
https://netacad.com/courses/os-it/ndg-linux-essentials

15. Bash Guide (руководство по Bash)
https://tldp.org/LDP/Bash-Beginners-Guide/html
21
143 2.2K