С памятью в Linux всё сложно. Многие не понимают, как в принципе её смотреть и на какое конкретно значение обращать внимание. Особенно тяжело разбираться в этом после такого родного и понятного диспетчера задач в Windows, который чётко показывает, сколько у тебя памяти использовано и сколько свободно. В Linux использование памяти процессами — сложный вопрос. Вы не сможете просто запустить какую-то программу и сразу понять, что у нас с памятью процесса.
В заметке речь пойдёт о том, как посмотреть, что конкретно занимает память в каком то процессе. Возьмём для примера Nginx или Php-fpm. У них много модулей, поэтому бывает интересно заглянуть, а сколько каждый из них может потреблять памяти.
Для этого сначала посмотрим PID материнского процесса:
# ps ax | grep nginx
А теперь смотрим потребление памяти с помощью pmap. Эта утилита обычно есть в стандартном системном наборе.
# pmap 1947 -p
Если я правильно понимаю, то данная команда в самом низу показывает всю виртуальную память процесса (VSZ или VIRT), которая включает в себя в том числе и библиотеки, которые могут быть разделены между разными процессами, а также то, что в swap. То есть эта такая условная метрика, с которой не понятно, что делать. Мастер процесс Nginx и все его рабочие процессы будут занимать одну и ту же виртуальную память.
Если использовать ключ -x, то увидим ещё и резидентную память (RES или RSS).
# pmap 1947 -x
Это память процесса без swap, включает в себя память, занимаемую разделяемыми библиотеками, но только ту, что реально находится в оперативной памяти и используется в данный момент. Это уже больше похоже на реальное потребление процесса, но всё равно не точно, потому что если у процесса есть форки, то они все будут занимать одинаковое количество RSS памяти. Сумма занимаемой ими памяти не будет соответствовать тому, что реально занято в оперативе.
Ключ -d добавляет ещё одну метрику writeable/private:
# pmap 1947 -d
Вот это уже можно считать памятью, которую потребляет конкретный процесс, без общих библиотек. Эта цифра важна, когда вы подбираете максимальное число процессов php-fpm или apache, которые будут автоматически запускаться. Вам надо понимать, сколько реально процессов вытянет сервер по памяти, чтобы не занять её всю и не повстречаться с oomkiller. Но всё равно не так просто правильно рассчитать количество процессов. В зависимости от того, что он делает, будет требоваться разное количество памяти. Так что придётся искать какое-то усреднённое значение с запасом.
Информацию pmap берёт из /proc/PID/smaps и превращает её в удобочитаемый формат.
Если я в чём то заблуждаюсь или вам есть чем дополнить данную заметку, поделитесь информацией. Тема с памятью в Linux замороченная, так что иногда мне кажется, что не понимаю, как там всё устроено и просто забиваю на это, добавив память виртуалке, или явно ограничив какой-то сервис.
#linux #terminal
Вчера немного успел застать вебинара Ребрейн про OpenVPN. Попал на самый конец, но всё равно успел получить очень полезную для себя информацию, которой поделюсь с вами.
1️⃣ Первое прям открытие для меня — параметр ccd-exclusive. Если установлен этот параметр, то пользователь даже при наличие актуального сертификата сможет пройти аутентификацию только в том случае, если для него существует файл конфигурации пользователя в директории, заданной параметром client-config-dir.
Объясняю, зачем это может понадобиться. Чтобы запретить подключения какому-то пользователю, необходимо отозвать его сертификат, подготовить файл отозванных сертификатов и прописать их в конфигурации сервера с помощью параметра crl-verify. И после каждого отзыва файл надо перезаписывать.
С помощью ccd-exclusive можно отключать пользователей, просто удаляя их файл конфигурации. Я лично их почти всегда использую. Даже если там нет отдельных параметров, привык создавать эти файлы пустыми, чтобы для каждого пользователя был его файл конфигурации. На основе этих файлов делаю мониторинг подключений openvpn.
Да, сертификаты отключенных пользователей всё равно надо отзывать. Так правильно. Но можно это делать разово по регламенту, к примеру, раз в месяц. А если надо просто отключить пользователя, удаляем ему файл конфигурации и всё. Это намного проще и удобнее. Потом можно его снова вернуть и пользователь сможет подключиться с тем же сертификатом.
Лет 10 активно использую openvpn, а этот параметр никогда не попадался на глаза. Не знал, что так можно было сделать.
2️⃣ Работы по переводу OpenVPN из контекста пользователя в ядро Linux ведутся. Более того, модуль ядра уже написан и он реально работает. Пока ещё его не добавили в популярные дистрибутивы. Скорее всего это рано или поздно состоится. Уже сейчас можно скачать исходники модуля, скомпилировать их и всё заработает с некоторыми ограничениями по параметрам. К примеру, при обработке ядром не работает сжатие.
Поясню, в чём тут проблема. OpenVPN работает в пространстве пользователя, в отличите от WireGuard, которая обрабатывается напрямую в ядре Linux. Этим объясняется её быстродействие. Разработчики OpenVPN озадачились и решили тоже перенести обработку в ядро и написали свой модуль для этого. Так что в скором времени большой разницы в скоростях между OpenVPN и Wireguard не должно быть.
#openvpn
🗓 22 июня в 12:00 (мск) приглашаем на вебинар по теме: Практические подходы к мониторингу сложных ИТ систем для обеспечения непрерывности бизнеса.
Своим опытом поделятся эксперты: S7 ИТ, Актион, M1Cloud.
Планируем обсудить:
◽Подходы к построению системы комплексного мониторинга ИТ инфраструктуры и приложений;
◽Проактивный мониторинг для повышения надежности;
◽Практические моменты и лайфхаки при настройке мониторинга в 2023;
◽Как построить мониторинг сложных ИТ систем;
◽Как собирать и анализировать ключевые метрики, чтобы видеть полную картину;
◽Best practice из разных сфер бизнеса;
Участие бесплатное.
👉 Посмотреть программу и зарегистрироваться.
#реклама
Утилиту lsof в дистрибутивах Linux чаще всего используют для просмотра открытых файлов. Я и сам так делаю, и много материалов на эту тему видел. Да и название у неё говорящее. Оно как раз образовано от фразы list open files.
Тем не менее, её можно использовать не только для этого.
▪ Но сначала про основную функциональность. Лично я чаще всего запускаю lsof для просмотра открытых файлов, которые удалили, но забыли закрыть файловый дескриптор. Например, наживую удалили лог nginx или docker и не перезапустили сервис. В итоге файла нет, а место он занимает. Такие файлы будет видно вот так:
# lsof | grep '(deleted)'
или так:
# lsof +L1
▪ Смотрим кем и что конкретно открыто из файлов в указанной директории:
# lsof +D /var/log
▪ Смотрим открытые файлы конкретного пользователя:
# lsof -u user
Часто бывает нужно быстро узнать, сколько файлов у него открыто, чтобы понять, если с ним проблема или нет:
# lsof -u user | wc -l
А теперь то же самое, только наоборот исключим открытые файлы пользователя:
# lsof -u^user | wc -l
Рассмотрим ситуацию, когда под пользователем плодятся процессы, которые открывают кучу файлов и нам всё это надо быстро прибить. Добавляем ключ -t к lsof, который позволяет выводить только PID процессов. И отправляем вывод в kill:
# kill -9 `lsof -t -u user`
▪ Файлы, открытые конкретным процессом, для которого указан его PID. Очень востребованная функциональность.
# lsof -p 94169
▪ А теперь немного того, что от lsof не ожидаешь. Список TCP соединений, причём очень наглядный и удобный для восприятия.
# lsof -ni
▪ Смотрим подробную информацию о том, кто открыл 80-й порт:
# lsof -ni TCP:80
▪ Список TCP соединений к конкретному IP адресу:
# lsof -ni [email protected]
▪ Список TCP соединений конкретного пользователя:
# lsof -ai -u nginx
▪ Помимо TCP, можно и UDP соединения смотреть:
# lsof -iUDP
Публикацию имеет смысл сохранить в закладки.
#linux #terminal
❓Вы когда-нибудь задумывались, чем в Unix отличаются директории /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/{bin,sbin}? Я давно задавался этим вопросом. Точно помню, что несколько лет назад разбирался с этой темой, но уже забыл, к чему пришёл. Решил ещё раз поднять её и поделиться с вами, чтобы и самому запомнить.
Отдельно ещё стоит директория /usr/loca/etc. Я начинал изучение Unix с Freebsd. Все конфиги установленных программ по умолчанию были в /usr/loca/etc. Это было удобно. Так как всё системное в /etc, а всё, что поставил ты, в /usr/loca/etc. Потом непривычно было на Linux переходить, где директория /usr/loca/etc вообще не используется.
Вообще, на эту тему есть много различных мнений. В том же Debian можно запустить:
# man hier
И прочитать про иерархию файловой системы. Там сказано:
▪ /bin - каталог, содержащий исполняемые программы, необходимые для работы в однопользовательском режиме и для запуска или ремонта системы.
▪ /sbin - как и /bin, содержит команды, необходимые для запуска системы, но, как правило, не запускаемые обычными пользователями.
▪ /usr/bin - основной каталог для исполняемых программ. Большая часть программ, не требующихся для загрузки или для ремонта системы, не устанавливаемых локально и запускаемых обычными пользователями, должна быть помещена в этот каталог.
▪ /usr/sbin - каталог, содержащий исполняемые программы для системного администрирования, не относящиеся к процессу загрузки, запуску /usr или ремонту системы.
▪ /usr/local/bin - локальные исполняемые файлы.
▪ /usr/local/sbin - локальные программы для системного администрирования.
Вроде объяснили, но всё равно не понятно, а почему именно такая иерархия. Есть такое мнение на этот счёт. Разработчики Unix в далёком 71-м году в какой-то момент проапгрейдили комп и получили 2 диска вместо одного. Когда ОС разрослась и перестала помещаться на первый диск, часть данных решили перенести на второй диск, где хранились данные пользователей, поэтому раздел назвали /usr (от слова user). Они продублировали на этом разделе все необходимые для ОС директории, в том числе bin и sbin. И всё новое складывали на новый диск, так как на старом не осталось места. Но при этом, чтобы во время загрузки иметь возможность смонтировать диск с /usr, программы типа mount обязательно жили в /bin на первом диске.
Такая есть история появления раздела /usr. С директорией /usr/local уже более ли менее понятно по смыслу. Туда кладётся всё то, что относится к конкретной локальной системе, а не дистрибутиву. В Freebsd именно так и было и это удобно. В Linux почему-то это не поддержали. Там обычно каталог /usr/local пустой.
В Debian 11 /bin и /sbin это символьные ссылки на /usr/bin и /usr/sbin. В rpm дистрибутивах то же самое уже давно. Так что в целом вся эта историческая иерархия фактически не поддерживается. Па факту всё живет в /usr. Было бы неплохо, если бы это всё привели к какому-то единому виду и распрощались с анахронизмами. А то неудобно с кучей каталогов, в которых уже не осталось смысла. Единственное, я бы идею с local поддержал и распространил.
#linux
Начни карьеру Linux-инженера уже этим летом 🐧
Летняя ИТ-школа – это двухнедельный интенсив для студентов старших курсов с возможностью получить оффер в КРОК!
На школе по программной инфраструктуре тебя ждет:
◽Работа с программной инфраструктурой на базе Linux;
◽Бесплатное обучение в офлайне;
◽Общение с другими студентами и экспертами.
Всем участникам – закрытие практики, а тем, кто круто себя проявит – оффер в КРОК.
👉 https://clck.ru/34dWvXКому подойдет?
Студентам или выпускникам 22-23 гг., которые готовы приезжать в московский офис, разбираются в выбранном треке и хотят стартовать карьеру.
Зарегистрироваться можно уже сейчас 👇
https://clck.ru/34dWvXhttps://clck.ru/34dWvXhttps://clck.ru/34dWvX#Реклама. ЗАО "КРОК инкорпорейтед". Erid: LjN8K14JA
Разбираю ещё один документ от CIS с рекомендациями по настройке Docker. Напомню, что ранее я уже делал выжимки по настройке Nginx, MySQL, Apache, Debian 11. Используя эти руководства нелишним будет освежить свои инструкции и принять некоторую информацию к сведению.
📌 Директорию для информации /var/lib/docker рекомендуется вынести на отдельный раздел. Docker постоянно потребляет свободное место, так что переполнение раздела нередкое явление.
📌 У Docker высокие полномочия для доступа к хостовой системе. Следите за тем, чтобы в системной группе docker не было лишних пользователей.
📌 Для повышения безопасности рекомендуется настроить аудит службы docker, например с помощью auditd. Ставим службу:
# apt install auditd
Добавляем правило в /etc/audit/rules.d/audit.rules:
-w /usr/bin/dockerd -k docker
Перезапускаем службу:
# systemctl restart auditd
Для повышенной безопасности можно настроить аудит и за файлами и директориями Docker, за конфигурационными файлами, за юнитом systemd, за сокетом. Это общая рекомендация для служб, которые работают с правами root.
📌 Разделяйте контейнеры по отдельным сетям для межконтейнерного взаимодействия. Если этого не делать, они будут взаимодействовать через общий системный бридж, который docker создаёт по умолчанию.
📌 Включите уровень логирования службы "info", добавив в файл конфигурации /etc/docker/daemon.json параметр:
"log-level": "info"
Для повышения безопасности логи имеет смысл хранить где-то во вне. Их можно направить по syslog. Пример:
{ "log-driver": "syslog", "log-opts": { "syslog-address": "tcp://192.xxx.xxx.xxx" }}
📌 Если используете подключение к службе Docker по TCP, не забудьте настроить аутентификацию по TLS и ограничьте сетевой доступ.
📌 Используйте параметр no-new-privileges при создании контейнеров, либо добавьте этот параметр в настройку службы по умолчанию.
"no-new-privileges": true
Это предотвратит повышение привилегий в контейнере от пользователя до root. Подробнее тут.
📌 Включите параметр live-restore:
"live-restore": true
Это позволит не останавливать контейнеры в случае остановки самой службы docker, что позволит обновлять её без остановки сервисов. По умолчанию он отключен.
📌 Отключите использование userland-proxy.
"userland-proxy": false
В подавляющем большинстве случаев для проброса портов в контейнеры используется NAT. Отключение прокси уменьшает вектор атак.
📌 Чаще всего файл с настройками /etc/docker/daemon.json по умолчанию отсутствует и вы его создаёте сами, когда нужно задать те или иные параметры. Проследите, чтобы доступ на запись к нему имел только root (root:root 644).
📌 Не используйте без крайней необходимости в контейнерах пользователя root. Хорошая практика запускать всё от обычного пользователя.
📌 Ограничивайте использование памяти контейнерами так, чтобы они не могли использовать всю доступную память хоста. Для этого запускайте их с параметром --memory и задайте объём, к примеру, 1024m.
📌 Ограничивайте количество попыток перезапуска контейнера в случае ошибок. То есть не запускайте их с параметром --restart=always. Используйте вместо этого --restart=on-failure:5. Будет сделано 5 попыток запуска в случае ошибки.
Было много советов по написанию DockerFile. Не стал их разбирать, так как мне кажется, это отдельная тема, которая к самой службе не имеет отношения. Также было много советов по запуску контейнеров. Например, не запускать там службу sshd, не монтировать системные директории и т.д. Это тоже отдельная тема, пропускал такие рекомендации.
К данной заметке будет актуальна ссылка на автоматическую проверку контейнеров с помощью Trivy и исправление с помощью Copacetic. Я написал небольшую статью:
⇨ Проверка безопасности Docker образов с помощью Trivy
Данный список составил на основе переработки вот этого документа: CIS Docker Benchmark v1.5.0 - 12-28-2022. Там подробное описание с обоснованием всех рекомендаций.
#cis #docker
Буквально на днях узнал, что в bash квадратная скобка [ и утилита test это одно и то же. Точнее, я вообще не знал, что существует эта встроенная утилита. Всегда и везде в скриптах видел и сам использовал именно скобку.
# type testtest is a shell builtin# type [[ is a shell builtin
Синтаксис с квадратными скобками в bash терпеть не могу. Всё время, когда пишу, думаю, кто же это всё придумал. Вообще неинтуитивно и нечитаемо. Простой пример. Создадим файл:
# touch file.txt
Сделаем проверку, что он существует, как я обычно это делаю:
#!/bin/bashif [ -e file.txt]then echo "File exist"else echo "There is no testfile"
А теперь то же самое, только через test:
#!/bin/bashif test -e file.txtthen echo "File exist"else echo "There is no testfile"
Вам какой вариант кажется более понятным и читаемым? Мне кажется, что второй скрипт явно понятнее. К тому же скобки могут быть как одинарными, так и двойными.
Bash максимально непонятный язык программирования. Если неподготовленному человеку показать какой-то более ли менее сложный скрипт на bash, он ничего не поймёт. Но если посмотреть код python или go, то он вполне читаемый. Помню как-то писал про программу, которая делает обфускацию bash скриптов. Понравился к ней комментарий, где человек написал, что разве bash коду нужна какая-то обфускация? Его и так невозможно понять. Пример:
ps axo rss,comm,pid | awk '{ proc_list[$2] += $1; } END { for (proc in proc_list) { printf("%d\t%s\n", proc_list[proc],proc); }}' | sort -n | tail -n 10 | sort -rn | awk '{$1/=1024;printf "%.0fMB\t",$1}{print $2}'
Что тут происходит? 😲 Всего-то посмотрели топ 10 пожирателей оперативной памяти на сервере. Кстати, скрипт сохраните, пригодится.
Не знаю, в чём феномен bash и почему он стал таким популярным в повседневном использовании. На нём трудно и муторно писать и отлаживать. Я лично не могу сходу написать что-то на bash. Мне нужно сесть, подумать, посмотреть, как я что-то похожее делал раньше, вспомнить синтаксис условий, вспомнить, чем одинарные скобки отличаются от двойных, посмотреть логические операторы. И только после этого я готов с копипастом что-то писать.
А у вас какие с bash отношения?
#bash #script
⚡ Пройдите тест на знание K8s⚡️
Ответите успешно на 15 вопросов и сможете поступить на онлайн-курс — «Инфраструктурная платформа на основе Kubernetes» от Отус. Курс можно приобрести в рассрочку!
➡️ ПРОЙТИ ТЕСТ - https://otus.pw/fjAZX/
❗️На курсе вы пройдете весь путь разработки инфраструктурной платформы на основе Kubernetes и получите все необходимые навыки, которые позволят вам вырасти до платформенного инженера.
🎁 Бонусом за успешное прохождение теста - получите доступ к открытому уроку курса + записи прошедших открытых уроков!
#Реклама. Информация о рекламодателе на сайте www.otus.ru
Сегодня расскажу вам про современный функциональный инструмент для управления парком рабочих станций и серверов с разными ОС. Речь пойдёт про Fleetdm. В рунете вообще не нашёл не то что информации по настройке, но даже упоминаний. Во всём разбирался сам на основе документации. Установил себе сервер и два управляемых хоста: Windows и Linux.
Fleetdm — это open source клиент-серверное приложение. Устанавливаете сервер, на управляемые хосты агенты. Поддерживаются системы: Windows, Linux, Macos. Раскатка агентов максимально простая — заранее готовится преднастроенный установщик. Далее он устанавливается на хост и тот появляется в панели управления.
С помощью Fleetdm можно управлять настройками хостов и проверять всё установленное ПО на наличие уязвимостей. Для выборки используется известный open source язык запросов osquery, который разработан специально для этих целей. С его помощью можно делать всевозможные выборки и к ним применять какие-то действия или политики. Вот простой пример, как это работает. Допустим, вы хотите найти все хосты и учётные записи, где установлена оболочка bash. Запрос выглядит так:
SELECT * FROM users WHERE shell='/bin/bash';
Для Windows запросы схожи. К примеру, найдём всех, у кого разрешён SMB1 на клиенте:
SELECT 1 FROM windows_optional_features \WHERE name = 'SMB1Protocol-Client' AND state != 1;
Описание запросов хорошо документировано. Писать их с помощью подсказок не сложно.
Бесплатная версия Fleetdm не предполагает встроенных средств для автоматизации выставления настроек или обновления уязвимого ПО. Вы можете создавать политики, которые будут в режиме реального времени проверять хосты. И если находят расхождения в политиках или уязвимое ПО, уведомляют об этом. С помощью API и вебхуков вы можете сами решать проблемы, например с помощью Ansible. Либо автоматически создавать задачи в Jira и Zendesk. В бесплатной версии настроены эти интеграции.
Теперь постараюсь кратко рассказать, как это всё быстро развернуть в тестовой среде, чтобы получилось быстро. В продуктив лучше поставить руками, есть подробная инструкция. Для работы сервера обязательно нужен TLS сертификат. Желательно валидный. С этим я провозился дольше всего, так как настраивал всё в локалке с использованием самоподписанного сертификата. Подготовим его:
# mkdir fleet# openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \-keyout fleet/server.key -out fleet/server.cert -subj "/CN=fleet.example.com" \-addext "subjectAltName=DNS:fleet.example.com"# chown -R 100:101 fleet/
Теперь берём минимально необходимый набор софта (Mysql+Redis) и запускаем Fleetdm через docker-compose (возьмите свежую 2-ю версию):
# docker-compose up
Дожидаемся запуска, идём на fleet.example.com:8080, создаём учётку. На всех управляемых хостах имя fleet.example.com должно резолвиться в IP адрес. Это важно.
Теперь качаем fleetctl последней версии под Linux. Это утилита, которая генерирует установщик для хостов. Распаковываем и создаём установщики под deb и windows. Используем тот же сертификат сервера, secret смотрим в веб интерфейсе, в разделе hosts.
# wget https://github.com/fleetdm/fleet/releases/download/fleet-v4.32.0/fleetctl_v4.32.0_linux.tar.gz# tar xzvf fleetctl_v4.32.0_linux.tar.gz# cd fleetctl_v4.32.0_linux# ./fleetctl package --type=msi --fleet-url=https://fleet.example.com:8080 \--enroll-secret=jlBXb1LUMo4/0Pn1cHXnVKqziMo87CgN --fleet-certificate=server.cert# ./fleetctl package --type=deb --fleet-url=https://fleet.example.com:8080 \--enroll-secret=jlBXb1LUMo4/0Pn1cHXnVKqziMo87CgN --fleet-certificate=server.cert
Передаём установщики на целевые хосты. Я запустил http сервер и скачал пакеты:
# python3 -m http.server 8181
После установки пакетов на целевые хосты, через пару минут они появятся в веб интерфейсе. Дальше с ними можно работать.
Программа мне понравилась, достойна полноценной статьи. Может напишу. Бесплатную, мультисистемную, с похожей функциональностью не припоминаю.
⇨ Сайт / Исходники
#управление #security #devops
В комментариях как-то раз увидел упоминание утилиты f*ck. Заинтересовался. Думаю, что это может быть, ни разу не слышал. Прям так и загуглил со звёздочкой. Оказалось, что речь идёт об open source проекте The Fuck.
Было очень любопытно, что же скрывается под таким неговорящим названием. Причём явно что-то популярное и полезное, потому что 77.7k звёзд на гитхабе. Оказалось, что это утилита для исправления опечаток или неполностью набранных команд.
Показываю сразу на примерах. Допустим, вы устанавливаете софт через пакетный менеджер и забыли написать sudo:
# apt install mc
Появляется ошибка:
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
Вы расстраиваетесь и материтесь, потому что нервы у айтишников никудышные. Сидячая работа, стрессы, кофе и т.д. Пишите в консоль с досады:
# fuck
TheFuck понимает ошибку и предлагает выполнить команду с учётом исправления.
# sudo apt-get install mc
TheFuck распознаёт популярные ошибки, опечатки, не только в командах, но и в их ключах, параметрах. Например:
# git pushfatal: The current branch master has no upstream branch.# fuck# git push --set-upstream origin master
То есть запустили гит пуш, забыли обязательные параметры, fuck добавил дефолтные параметры для этой команды.
Ещё больше примеров можно в репе посмотреть. Все исправления описаны правилами, которые лежат в соответствующей директории. Правила написаны на python, можете изменить готовые или написать свои. Например, есть правило для chmod. Если в консоли запускается скрипт через ./ и в выводе появляется сообщение permission denied, что типично, если у файла нет прав на исполнение, fuck исправляет это, добавяля права через chmod +x.
Больше всего правил написано для git. Судя по всему этот инструмент писался для разработчиков и немного девопсов, поэтому так много звёзд на гитхаб.
Если будете пробовать в Debian, утилита живёт в стандартных репах:
# apt install thefuck
Автор пакет заботливо отключил все правила для sudo. На всякий случай. По умолчанию бинарники ставятся в $HOME/.local/bin, поэтому надо добавить этот путь в PATH:
# export PATH="$PATH:$HOME/.local/bin"
Если что, матершину не одобряю. Сам не матерюсь.
#linux #консоль
В поисках надёжного корпоративного сетевого оборудования в условиях импортозамещения?
Регистрируйтесь на вебинар «Импортозамещение сетевого оборудования на базе Eltex», который пройдёт 20 июня в 12:00.
На вебинаре расскажем:
🔹 Об основных достижениях и направлениях развития компании Eltex;
🔹 Про сетевое оборудование Eltex: коммутаторы и маршрутизаторы;
🔹 Возможности, спецификации, ПО, гарантия, сервис сетевого оборудования Eltex;
🔹 Схемы применения сетевого оборудования Eltex;
🔹 Сравнение сетевого оборудования Eltex с иностранными аналогами.
Регистрируйтесь на вебинар «Импортозамещение сетевого оборудования на базе Eltex» https://clck.ru/34YWe4#Реклама. Рекламодатель: ООО "Инфратех", ИНН 5024197250, erid: Kra23Uugp
В операционной системе на базе Linux существуют два разных способа назначения прав доступа к файлам. Не все начинающие администраторы об этом знают. Недавно один читатель попросил помочь настроить права доступа к файловой шаре samba. Он описал задачу на основе того, как привык раздавать права на директории в Windows. В Linux у него не получалось настроить так же в рамках стандартных прав доступа через локальных пользователей, групп и утилит chown, chmod.
В Linux, помимо основных прав доступа, которые вы видите при просмотре директории с помощью ls -l, существуют дополнительные списки доступа ACL (access control list). Они позволяют очень гибко управлять доступом. По умолчанию инструменты для управления этими списками в минимальной установке Debian отсутствуют. Устанавливаются так:
# apt install acl
После установки данного пакета у вас появятся две основные утилиты, которые будут нужны для управления доступом: getfacl - посмотреть права доступа, setfacl - установить права доступа.
Я не буду сейчас подробно расписывать как всем этим пользоваться. В интернете масса руководств. Просто знайте, что в Linux правами на файлы и директории можно управлять практически точно так же, как в домене Windows. Есть нюансы и различия, но в базовых случаях несущественные. Если добавить Linux сервер с Samba и ACL в домен, то через систему Windows можно будет управлять доступом к файлами через её свойства папки с галочками и списками групп.
Пример того, как всё это может выглядеть, есть в моей статье:
⇨ serveradmin.ru/nastroy…iey-v-ad
Она очень старая и скорее всего уже неактуальна в технической части. Я сам давно файловые сервера в Linux в домене не настраивал и не эксплуатировал. Но общее понимание картины можно получить. Соответственно, вместо Microsoft AD может выступать любой другой LDAP каталог пользователей и групп.
Подскажите, кто скрещивает Linux с Windows. На текущий момент нет проблем с добавлением Linux в AD под управлением свежих Windows Server? Интеграция упростилась или усложнилась? Давно уже не слежу за этой темой. Я где-то видел новость, что Ubuntu для платных подписчиков выпустила какой-то свой инструмент для упрощения работы в AD.
#linux #fileserver
Подборка консольных игр в Linux. Начнём с классики. Интересно, с этими играми знакомы те, кому сейчас до 25 лет? Я в эти игры играл ещё на приставках, типа денди, и на отдельных карманных устройствах на батарейках с монохромным дисплеем.
◽Тетрис. Его придумал Алексей Леонидович Пажитнов в 1984 году, работавший в Вычислительном центре Академии наук СССР.
# apt install bastet
Не удержался, и сыграл раунд после написания этих строк 😎
◽Pacman. Классический pacman. В обычной консоли выглядит немного узко, но играбельно.
# apt install pacman4console
Напомню, кто не знает. Задача скушать все звёздочки и не встретиться с другими движущимися символами.
◽Snake. Классическая змейка.
# apt install nsnake
Стартовая скорость очень низкая. Захотелось на кнопку Turbo нажать. Когда я программировал что-то подобное в школе на turbo basic, это ускоряло исполнение кода примерно в два раза. Очень любил эту игру на телефоне Nokia 3310.
📌 Переходим к менее массовым играм.
◽2048. Математическая игра, где сдвигая плитки нужно добиться их объединения с увеличением номинала.
# apt install 2048
Немного непривычно и непонятно. Пришлось пару раз возвращаться к правилам, пока не понял, как тут играть.
◽Moon Buggy. Очень простая и залипательная игрушка, где особо не надо думать. Вы управляете машинкой, которая едет по луне. Нужно перепрыгивать ямы разной длины.
# apt install moon-buggy
◽Ascii-patrol. Очень навороченная и красивая консольная игра. Автор упаковал её в snap, предлагает устанавливать оттуда:
# snap install ascii-patrol
Либо можете в html версию поиграть.
◽Space Invader. Вам надо управлять корабликом, стрелять по вражеским кораблям и уворачиваться от их выстрелов.
# apt install ninvaders
◽ZAngband. Терминальная rpg. Очень навороченная, где куча классов, специальностей. Надо качать персонажа, улучшать навыки. Лазить по подземелью, собирать предметы, улучшать оружие и т.д.
# apt install zangband (нужен non-free репозиторй)
В универе сокурсник постоянно играл в эту игру на парах по Linux и программированию. Я не мог понять, как эта консольная штука может быть игрой, да ещё интересной.
◽BSD games. Куча старых консольных игр, портированных из BSD систем.
# apt install bsdgames
Там есть аналог змейки - worm, аналог тетриса - tetris-bsd, монополия - monop, пасьянс - canfield, нарды - backgammon и другие.
◽Sudoku. Классическая Судоку, которую часто печатают во всяких сборниках и журналах.
# apt install sudoku
#игра #подборка
Паблик-ток «10 вопросов IVA Technologies или Всё, что нужно знать об отечественной платформе унифицированных коммуникаций»
На ИТ-рынке представлены десятки отечественных производителей ВКС-решений. Однако не все производители предлагают полноценные платформы унифицированных коммуникаций. Одним из лидеров, представляющих единую унифицированную платформу, является компания IVA Technologies.
9 июня в 11:00 на онлайн-встрече эксперты «Инфосистемы Джет» и IVA Technologies обсудят:
🔹Есть ли в продуктах компании тот функционал, к которому привыкли пользователи решений зарубежных вендоров?
🔹Может ли платформа видеоконференцсвязи IVA MCU заменить Skype for Business, Zoom или MS Teams?
🔹Как будет в дальнейшем развиваться продуктовая линейка IVA?
💻 Формат — онлайн
✅ Регистрация на мероприятие
#реклама
Решил немного развить тему с развлечением в терминале. Сегодня как раз подходящий день для этого. Ниже будет подборка приколов и просто забавных приложений для терминала. А вечером подборка игр.
▪Cmatrix. Визитная карточка фильма Матрица — набор символов, падающих как водопад, сверху вниз. Эта утилита воспроизводит его у вас в терминале. Живёт в стандартных репах:
# apt install cmatrix
Почитайте man, там много ключей для видоизменения эффектов. Выглядит прикольно, хоть и не так, как в кино. Посмотреть.
▪MapSCII. Карта мира в терминале. Написана на JS, поэтому живёт в репах nodejs.
# npm install -g mapscii
В убунте через snap можно поставить:
# snap install mapscii
Выглядит необычно и подробно для такого рода программы. Вплоть до отдельных улиц городов можно увидеть. Посмотреть.
▪Aafire. Разжигает терминальный ASCII огонь. Живёт в репах:
# apt install libaa-bin
Поджигаем:
# aafire
После этого огня у меня все символы в терминале становятся серыми. Не понял, это так задумано или какой-то глюк. Релогин сбрасывает эффект.
▪Toilet. Преобразует введённые слова в большие символы ASCII. Совершенно не понятно, почему у утилиты такое странное название. Живёт в репах:
# apt install toilet# toilet туалетПосмотреть.
▪Cowsay. С помощью этой утилиты вы можете попросить ASCII корову сказать любую фразу:
# apt install cowsay# /usr/games/cowsay HiПосмотреть. Похожие программы: cowthink, ponysay.
▪Cal. Терминальный календарь. Рассказывал о нём отдельно. Полноценный календарь. В rpm дистрибутивах пакет называется cal, в deb — ncal:
# apt install ncal
Утилита без всяких шуток может быть полезной. В Centos вроде бы в базовой установке была. Даже устанавливать не надо было. Посмотреть месяц назад, текущий и будущий:
# cal -A 1 -B 1
▪Rev. Отображает введённый текст в обратном порядке. В Debian присутствует по умолчанию в минимальной установке.
# revserveradminnimdarevres
▪>Sl. Паровозик в терминале. Писал о нём не так давно.
# apt install sl
По полям, по полям, ASCII-паровозик едет к нам... (поймут только отцы)
▪Рождественская ёлочка от хостера scaleway в виде bash скрипта. Посмотреть.
▪Пасхалка в apt-get и apt:
# apt moo
▪Пасхалка в who:
# who is GOD?
#linux #terminal
Последнее время стала актуальна тема VPN. Расскажу вам по этому поводу про интересный open source проект — Nebula. Авторы называют его scalable overlay networking tool, что для меня затруднительно однозначно перевести. В общем случае это программа для построения связной виртуальной сети поверх физической, в том числе и через интернет.
Термин overlay обычно применяют для больших виртуальных сетей, построенный как бы над обычными. Есть физические сети underlay и виртуальные overlay. В Nebula используется агент, который устанавливается на каждый хост и в зависимости от своих настроек, подключается к тем или иным хостам. Соединения образуются между хостами напрямую (p2p), то есть получается mesh сеть. В этом основное отличие от традиционных VPN сетей, где используются туннели между шлюзами, а все остальные хосты общаются друг с другом посредством шлюзов.
Nebula разработали в Slack и потом выложили в открытый доступ. Авторы инструмента открыли свою компанию, saas сервис, занимаются внедрением и поддержкой. У них, кстати, есть бесплатный тарифный план.
Развернуть Nebula у себя не представляет большой сложности. Простейшая инструкция для запуска есть в самом репозитории. Аутентификация хостов происходит посредством сертификатов, как в openvpn. Так что придётся поднять свой CA и выпускать для клиентов сертификаты. У Nebula всё это есть в комплекте, так что не придётся прибегать к сторонним инструментам.
Пример выпуска CA:
# ./nebula-cert ca -name "Myorganization, Inc"
Сертификата для клиента:
# ./nebula-cert sign -name "laptop" -ip "192.168.100.2/24" \-groups "laptop,home,ssh"
Тут сразу идёт функциональная привязка к выпущенному сертификату, так что продумать структуру сети нужно до выпуска сертификатов. Потом клиенту передаётся конфиг с сертификатом, где указан IP адрес одного или группы хостов, которые выступают в роли управляющего сервера. Точкой обмена трафиком они не будут. В зависимости от своих настроек, хосты обмениваются трафиком между собой напрямую. Даже если оба клиента находятся за NAT, управляющая нода соединит их напрямую посредством технологии UDP hole punching.
Если я правильно понял принцип работы Nebula, VPN туннели поднимаются динамически между хостами в случае необходимости. При этом используется своя технология на базе обмена ключами Диффи-Хеллмана (ECDH) и шифре AES-256-GCM. То есть это не надстройка над каким-нибудь wireguard или чем-то аналогичным. И всё это создано для построения очень больших сетей из сотен и тысяч хостов.
Nebula немного похожа на Tailscale, только у неё изначально всё готово для установки на своём железе. Нет привязки к облачному сервису. Для Tailscale тоже есть подобный сервер — Headscale. Но его развивают и поддерживают другие люди, не разработчики.
⇨ Сайт / Исходники / Документация / Обзор
#vpn
Приглашаем вас на бесплатный вебинар:
"Группы консистентности и управление СХД АЭРОДИСК через REST API".
🗓 Дата: 6 июня в 15:00 (МСК).
🗣 Спикеры: Алексей Никифоров – ведущий системный архитектор АЭРОДИСК и Евгений Григорьев – разработчик СХД АЭРОДИСК.
О чем поговорим:
▪ Защита данных с помощью встроенных технологий СХД: кому и когда они нужны?
▪ Автоматизация при управлении CХД, примеры из эксплуатации.
▪ Как мы разрабатываем новые фичи в СХД? Взгляд разработчика.
▪ Демонстрация работы функциональности снимков данных и групп консистентности томов на живых системах.
▪ Демонстрация автоматизации процессов с помощью REST API. Встраиваем управление СХД в экосистему.
В конце, традиционно, ответим на ваши вопросы.
👉 Регистрация по ссылке: https://clck.ru/34ZHbr
#реклама