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، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -202 و در ۲۴ ساعت گذشته برابر -5 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 21.91% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 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
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
