Bash Days | Linux | DevOps
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Bash Days | Linux | DevOps
تُعد قناة Bash Days | Linux | DevOps (@bashdays) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 23 792 مشتركاً، محتلاً المرتبة 5 701 في فئة التكنولوجيات والتطبيقات والمرتبة 28 128 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 23 792 مشتركاً.
بحسب آخر البيانات بتاريخ 17 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -202، وفي آخر 24 ساعة بمقدار -5، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 21.91%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 12.48% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 5 213 مشاهدة. وخلال اليوم الأول يجمع عادةً 2 971 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 21.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل bashdays, linux, bash, docker, скрипт.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Авторский блог от действующего девопса
Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.
Автор: Роман Шубин
Реклама: @maxgrue
MAX: https://max.ru/bashdays
Курс: @tormozilla_bot
Блог: https://bashdays.r...”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 18 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
PasswordAuthentication no
PubkeyAuthentication yes
Match User bashdays
MaxSessions 10
MaxAuthTries 10
PasswordAuthentication yes
В этом примере парольная аутентификация запрещена для всех, кроме пользователя bashdays.
Скажу по секрету, я тоже делаю настройки для пользователя последнего шанса.
У меня на флэшке есть ключи и putty. Потому что не знаешь, когда и откуда понадобится порулить. Но я допускаю, что и флэшки может не оказаться.
Вот тогда пригодится такой пользователь. Только чтобы пользователя быстро не нашли, я беру логин, сложнее, чем admin, Root student или pi.
Ну и парольную фразу задаю больше 20 символов. К статейке должен быть прикреплен архив с логинами реальных простукиваний.
В первой колонке - количество стуков для данного пароля. Реальная база, собранная с одной машины, с системой защиты от переборов за пару лет.
Если вы нашли свой логин в этой базе - повод задуматься. Логин "_" в базе - замена пользователя пробел.
Да, раньше можно было и такое. Благо сейчас эту дыру закрыли.
Что-то я отвлекся.
В блоке MATCH доступны ключевые слова User, Group, Host, Address, LocalAddress, LocalPort, RDomain.
Первые четыре применяются наиболее часто. Если в блоке MATCH несколько ключевых слов, они объединяются по AND.
Также возможно использование шаблонов.
Например:
Match User *bashdays*, guest*
Address 192.168.0.0/24,!192.168.0.27
Перечисления идут через запятую БЕЗ ПРОБЕЛОВ. Допускается несколько блоков MATCH.
Ну, и последний вопрос. Раз конфиг у нас с условием, как его проверять?
sudo sshd -T -C user=bashdays,addr=192.168.0.27
Выдаст на stdout конфиг для указанного пользователя с указанного адреса.
Обратите внимание. здесь ключевые слова немного отличаются:
«addr», «user», «host», «laddr», «lport», «rdomain» и отсутствует группа.
man sshd
man sshd_config
продолжение следует...
tags: #linux
—
🔔 @bashdayssshd_config, другую оставляю для возможного отката при косяках, поскольку при перезапуске sshd с измененным конфигом текущие сессии сохраняются.
ㅤ
Наличие физического доступа к консоли - приветствуется.
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.2
Вы уже знаете, как настроить ключи. Они прописаны и работают!!!
Допустим в файле /etc/ssh/sshd_config
PubkeyAuthentication yes
# перед изменениями рекомендую включить парольную аутентификацию
PasswordAuthentication yes
PermitRootLogin prohibit-password
Там же есть опция AuthorizedKeysFile и обычно она закомментирована. Она указывает, где находится файл аuthorized_кeys.
делаем так:
sudo test -f /etc/ssh/authorized_keys && sudo mv /etc/ssh/authorized_keys /etc/ssh/authorized_keys.1
sudo mkdir /etc/ssh/authorized_keys
sudo cp "/home/${USER}/.ssh/authorized_keys" "/etc/ssh/authorized_keys/${USER}"
sudo chown -R root:root /etc/ssh/authorized_keys
sudo chmod -R u=rwX,go=rX /etc/ssh/authorized_keys
в файле /etc/ssh/sshd_config
AuthorizedKeysFile /etc/ssh/authorized_keys/%u
перезапускаем sshd:
systemctl restart sshd
Всё. Будут действовать только ключи из из папки /etc/ssh/authorized_keys в файле с именем пользователя, и подключить их может только root.
После успешного подключения по ключу:
PasswordAuthentication no
systemctl restart sshd
Кстати, протестировать и посмотреть все опции sshd_config можно командой sudo sshd -T
Это так, к сведению.
tags: #linux
—
🔔 @bashdaysssh двумя сессиями.
В одной правлю sshd_config, другую оставляю для возможного отката при косяках, поскольку при перезапуске sshd с измененным конфигом текущие сессии сохраняются.
ㅤ
Наличие физического доступа к консоли - приветствуется.
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.1
Вы уже знаете, как настроить ключи. Они прописаны и работают!!!
Допустим в файле /etc/ssh/sshd_config
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin prohibit-password
Там же есть опция AuthorizedKeysFile и обычно она закомментирована. Она указывает, где находится файл аuthorized_кeys.
В нём хранятся публичные ключи пользователей, которым разрешено ssh.
Обычно это ~/.ssh/authorized_keys
делаем так:
sudo cp ~/.ssh/authorized_keys /etc/ssh/authorized_keys
sudo chown root:root /etc/ssh/authorized_keys
sudo chmod 644 /etc/ssh/authorized_keys
а в файле /etc/ssh/sshd_config
AuthorizedKeysFile %h/.ssh/authorized_keys /etc/ssh/authorized_keys
перезапускаем sshd:
systemctl restart sshd
Всё. С ключом, прописанным в /etc/ssh/authorized_keys можно заходить
под любым пользователем, у которого прописан вменяемый shell, включая root!!!
Наличие ключей в домашней папке пользователя теперь необязательно.
Может быть удобно, если рулить сотней пользователей. Ну, или как дырочка.
Лучше, конечно задать:
PermitRootLogin no
Кстати, при данной опции попытки перебора по root попадают в log, но не отмечаются в lastb. Это так, к сведению.
Продолжение следует...
tags: #linux
—
🔔 @bashdaysawk --nostalgia
Всё нахуй упадет с ошибкой — awk: bailing out near line 1 Aborted
nostalgia это не документированная опция, которая была добавлена в версии 2.11 beta и сопровождалось странным комментарием:
undocumented feature, inspired by nostalgia, and a T-shirt
Чо за херня?
Ранние версии awk аварийно завершались при различных эксепшенах выводя подобную ошибку. Утилиту отладили, но осталась — ностальгия. Но кто знает, возможно это ключ к отвеу на главный вопрос жизни.
ㅤ
Еще из интересного. Gawk использует GNUтое расширение предоставляемое функциями разбора аргументов командной строки. При активации этого расширения доступен специальный синтаксис -W long_option.
awk -Wnos
awk -Wcopy
Эти команды аналогичны:
awk --nostalgia
awk --copyright
Странное конечно поведение учитывая содержимое этого поста.
Ну да ладно, хуй с ним. Чо только не придумают…
Хороших тебе предстоящих выходных и береги себя.
Кстати кто сегодня винду обновил и получил синьку, самое быстрое решение опубликовал Дима в полезняшках. Репостить не буду, кому надо сами сходите посмотрите.Ааа еще забыл, Tagd Tagd написал нам две пиздатых статьи, на днях выложу. Спасибо Tagd Tagd с меня бонусы! tags: #linux #bash — 🔔 @bashdays
ALT+SysRq+key.
А где взять клавишу SysRq? На современных клавиатурах это клавиша PrintScreen.
А какой key нажимать в конце? Ну например:
+b - немедленная перезагрузка системы
+o - выключение системы
+s - синхронизация всех файловых систем
+u - перемонтирование файловых систем в read only
+r - возвращение управления с клавиатуры X-сервера к консоли
+k - завершение всех процессов на текущей консоли
В моем случае, чтобы послать эту комбинацию клавиш в Virtualbox, мне пришлось нажать — Правый ALT+PrintScreen+h.
После нажатия этой комбинации, в терминале выводится справка по доступным командам SysRq.
После вывода справки, смотрим логи ядра:
dmesg -tk | grep -m1 '^sysrq: HELP :'
и видим, что ядро триггернулось и записало в журнал:
sysrq: HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(v) show-blocked-tasks(w) dump-ftrace-buffer(z)
Грубо говоря, если система встала раком и не отвечает, можешь ребутнуть её магическими клавишами: ALT+SysRq+b.
Ну либо поиграться с read only на проде.
В официальной доке, этот функционал шикарно расписан, прям рекомендую почитать, хоть и с переводчиком.
Изучай...
PS: А если у меня нет клавиши PrintScreen? Ну значит, не судьба!tags: #linux — 🔔 @bashdays
Привет, коллега Вадим Белоус, эксклюзивно написал для нашего канала пост. Пост не проплачен. Если тоже хочешь опубликоваться, скидывай Максу, если годнота — залетит. Спасибо Вадим! Публикуем 👇 Подержите лайками, дело хорошее!Создаем стильные PDF из мануалов в Linux 📁 Если вы устали от привычных мануалов в Linux, то представляю вашему вниманию команду, которая преобразует их в документы в формате PDF с хакерским шрифтом! Установите все необходимые зависимости
sudo apt install texlive-full pandoc fonts-jetbrains-mono
1. texlive-full - полный пакет TeX Live, который предоставляет все необходимые компоненты для работы с LaTeX
2. pandoc - универсальный конвертер документов. На официальной странице можно ознакомиться с диаграммой, которая отображает поддерживаемые форматы файлов
3. fonts-jetbrains-mono - хакерский шрифт
Выполните скрипт в оболочке командной строки
zcat /usr/share/man/man1/cat.1.gz | nroff -man | col -b | pandoc -f markdown -t pdf -V geometry:margin=0.5in -V 'mainfont=JetBrains Mono' -V 'sansfont=JetBrains Mono' -V 'monofont=JetBrains Mono' -V fontsize=16pt --pdf-engine=lualatex -o cat.pdf
Разберём эту команду по этапам
1. zcat /usr/share/man/man1/cat.1.gz - чтение сжатого мануала cat
2. nroff -man - форматирование текста мануала cat, полученного на предыдущем этапе, согласно указанным макросам для страниц man (-man)
3. col -b - удаление управляющих символов для корректного отображения текста
4. pandoc -f markdown -t pdf -V geometry:margin=0.5in -V 'mainfont=JetBrains Mono' -V 'sansfont=JetBrains Mono' -V 'monofont=JetBrains Mono' -V fontsize=16pt --pdf-engine=lualatex -o cat.pdf - преобразование Markdown в PDF с применением указанных стилей (хакерский шрифт, отступ)
На выходе в качестве артефакта получится отформатированный файл в формате PDF с содержимым мануала cat
P.S. Этот небольшой пост можно посмотреть на вебсайте по ссылке
Также всем причастным предлагаю ознакомиться с постом про мою подборку интересных трюков на Bash
Вебсайт: vadimbelous.com
Автор: Вадим Белоус
Хэштеги: #linux #bash #trick #man #latex #pdf #pandoc
—
🔔 @bashdayssed 's/string/\x1b[31m&\x1b[m/g' bashdays.txt
String нужно заменить на то слово, которое нужно подсветить.
ㅤ
Это случай когда использование sed оправдано.
Изучай…
tags: #linux #bash
—
🔔 @bashdaysAWK - сильно недооценен. Мало кто его использует кроме как - вывести вторую колонку.
А между тем - это полноценный язык программирования.
Я решил выучить AWK, когда на хабре увидел конструкцию:
awk '!a[$0]++' ./file
Эта конструкция убирает дубли строк файла, оставляя только уникальные.
Причем делает это за один проход чтения файла!
Работает она очень просто:
Считывается строка файла ($0), Если a[$0] не (!) равен 0, то строка выводится в stdout.
После этого, a[$0] инкрементируется. Если далее встретится такое же значение строки $0, то a[$0] уже будет ненулевым и строка проигнорируется.
У этой конструкции есть и подводные камни. Весь файл фактически считывается в массив и хранится в памяти. Так что если файл больше половины свободной памяти - используйте uniq.
И теперь несколько примеров без объяснений:
awk '++a[$0]==3'
Уникальные строки, c числом вхождений >=3.
awk '++a[$0]>=3'
Все вхождения, начиная с третьего.
Эти конструкции могут быть полезны, когда хочется выявить особо настырных.
Ну, и еще. AWK поддерживает вещественные числа. Поэтому когда нужно что-то посчитать:
awk 'BEGIN'{print 1/3}'
или
echo 1 3|awk '{print $1/$2}'
Не так красиво, как bc. Но bc/dc может и не быть в системе, а awk, есть, практически везде.
В общем, если припрёт awk'ом можно заменить cat, sed, grep, tr, cut, head, tail, wc...
Ну, и ложка дегтя. Есть несколько версий awk: MAWK NAWK GAWK
Базовый функционал у них одинаковый. Так что не заморачивайтесь. Если кто-то заинтересовался - help по GAWK.
👉 Вопросы, комментарии приветствуются.
tags: #linux
—
🔔 @bashdaysman.
Это с виду она дохуя скучная, на деле там всё по полочкам.
Man содержит разделы от 1 до 9 + дополнительные (n, l, p). В дополнительные разделы входят всё то, что по каким-то причинам не попало в первые 9.
Все это дело сконфигурировано в файле: /etc/manpath.config, в него можно не смотреть, там хуйня какая-то непонятная для не подготовленного человека.
Ну дак вот. В каждом man разделе, есть страница intro. То бишь «вступление», которое описывает что содержит раздел.
✔ Давай тыкать палкой.
Ставим пакет:
apt install manpages-dev
Запускаем:
man 1 intro
Выведется список с содержимым 1го раздела:
- Login
- The shell
- Pathnames and the current directory
- Directories
- Disks and filesystems
и т.п.
Теперь пройдемся по разделам:
1. Справка по стандартным командам (программы и утилиты). Это самый огромный раздел в справочной системе. Глаза разбегутся. Но есть лайкфак, можно воспользоваться поиском.
man -k copy
Выведется ограниченный список команд и утилит, которые содержат слово «copy»
cp (1) - copy files and directories
cpgr (8) - copy with locking the given file
cpio (1) - copy files to and from archives
cppw (8) - copy with locking the given file
dd (1) - convert and copy a file
В скобках выводится цифра раздела, в котором была найдена справка. А дальше можно сделать например так:
man 8 cppw
Херак и ты получил желаемое. С поиском намного удобнее и приятнее работать.
2. Раздел содержит описание системных вызовов. В этом разделе можно найти понимание этих ваших линуксов. Например, смотрим справку по mkdir.
man 2 mkdir
Кончаем и получаем список системных вызовов с которыми работает mkdir.
3. Раздел с библиотечными функциями. Тут больше для программистов.
4. Описание файлов-устройств расположенные в /dev
5. Описание форматов файлов. Конфигурационные файлы приложений и их синтаксис. Например, синтаксис файла теневых паролей.
man 5 login.defs
Чтиво весьма занятное. Именно в этом файле задаются «SYS_UID_MAX», «SYS_UID_MIN». Это диапазон UID, который будет присвоен пользователю, при использовании утилит «useradd» или «newusers» когда, ты добавляешь нового пользователя.
6. Раздел игр.
7. Описание стандартов и соглашений. Например, последовательность загрузки ОС.
man 7 boot
или параметры ядра при загрузке:
man 7 bootparam
или шаблоны имён файлов:
man 7 glob
8. Команды для системного администрирования. Например, информация о портах/сокетах:
man 8 netstat
монтирование устройств:
man 8 mount
отображение информации о дисках и их настройка:
man 8 hdparm
9. Функции ядра. В большинстве случаев этот раздел отсутствует в современных дистрибутивах. Раздел не является стандартом. Если нужно узнать про функции ядра, тут только поиск через man -k <ключевое слово>.
Так же ты можешь встретить разделы n, l, p, но опять-же они не всегда присутствуют, все зависит от того, какой софт ты ставил себе на машину.
Ну и закончим эту простыню вишенкой. Для этой команды нужны Иксы.
apt install man-db groff
man -H bash
Страница со справкой Bash будет отформатирована в «html» формате и открыта в браузере по умолчанию.
Без Иксов просто сформируется «html» файл в папке tmp, у меня он появился тут: /tmp/hmanU3yORv/bash.html
Ладно, изучай. Увидимся завтра!
PS: Все кто подал заявки на вписку в Linux factory, все ок. Как только решу вопросы с эквайрингом Тибанка (бекенд у них отвалился), всем напишу. Терпения вам и мне дорогие подписчики. Всех обнял!tags: #linux #bash — 🔔 @bashdays
TL;DR если хочешь в девопс, я тебя научуПривет. В личку регулярно заходят наши подписчики и интересуются наставничеством, обучением и т.п. Ладно, чо тянуть, закроем вопрос. Встречаем Linux Factory! 1.08 выпускаю кракена. Но кракен будет для маленьких. Матёрые заскучают, но кто знает… Курс пилить я ебал, поэтому покажу протоптанные дорожки и основы. И если ты ими правильно воспользуешься — слава тебе и почет + 100500 денег в секунду. Живописнее и подробнее можешь ознакомиться тут, всё утро красоту наводил 🥳 Чтобы стать частью прекрасного, подавай заявку через бота и я отвечу на все твои вопросы. Программа: https://bashdays.ru/intro/ Контакты: @linuxfactorybot 👇👇👇
cd /tmp
touch bashdays.txt
rm -i bashdays.txt
Получаем интерактивный запрос:
rm: remove regular empty file 'test.txt'?
Выбор зависит от потребности. Либо да, либо нет. Но что вводить? Очевидно же — y или n.
Справедливо. Но что если… Запускаем:
locale -k noexpr yesexpr
Выхлоп:
noexpr="^[-0nNНн]"
yesexpr="^[+1yYДд]"
Это все возможные варианты, которыми ты можешь воспользоваться. Если вместо «y» ты введешь знак «+» — файл удалится.
Аналогично можно ввести 0 или 1. Либо «Д» или «Н».
Не везде из коробки прописаны такие регулярки, например на англоязычной убунте хуй с маслом.
noexpr="^[nN]"
yesexpr="^[yY]"
Функция оценивающая ответ пользователя, учитывает локализацию.
ㅤ
Для подтверждения, или отмены может быть использован любой символ в квадратных скобках из вывода вышеприведённой команды.
А любой символ не совпадающий с символами из набора yesexpr будет равносилен отмене, в том числе и пустой ввод.
Как на это можно повлиять?
Всё это забиндино в файлах которые лежат в папке: /usr/share/i18n/locales
Например, в файле ru_RU есть такое:
LC_MESSAGES
yesexpr "^[+1yY<U0414><U0434>]"
noexpr "^[-0nN<U041D><U043D>]"
yesstr "<U0434><U0430>"
nostr "<U043D><U0435><U0442>"
END LC_MESSAGES
Тут присутствует как раз «0» и «1» / «+» и «-».
Если хочется упороться, можешь собрать свою локаль и добавить свои символы в регулярку:
cp /usr/share/i18n/locales/ru_RU ~/my_ru_RU
localedef -f UTF-8 -i ~/my_ru_RU ru_RU.UTF-8
После первой команды, нужно отредактировать файл ~/my_ru_RU и затем запускать вторую команду.
Такие вот перлы и приколы. Изучай.
👉 Многие этого ждали, завтра закину анонс про личное наставничество и обучение в рамках проекта Linux Factory.
tags: #linux
—
🔔 @bashdays
متاح الآن! بحث تيليغرام 2025 — أهم رؤى العام 
