Типичный Сисадмин – Telegram
Типичный Сисадмин
1.37K subscribers
417 photos
48 videos
228 links
⚙️Информация для системного администратора

По всем вопросам : @Sofiia_artamonova
Download Telegram
Doas – утилита, которая позволяет обычным пользователям выполнять задачи от имени root, так же как это делает sudo. Она была разработана проектом OpenBSD как минималистичная альтернатива sudo.

Запускайте apt install doas.

Так как doas не входит по умолчанию в коробочные версии linux, утилита требует немного бОльших настроек, в отличие от sudo. Но конфигурация намного проще для понимания чем sudo. Настраивается все это через файл /etc/doas.conf. Если файла нет — создайте.

Сымитируем поведение sudo и позволим пользователю выполнять любые команды от пользователя root. Добавим в конфиг такое:


permit persist user as root


Теперь пользователь user сможет выполнять команды от root + пользователь получает льготный период, когда не нужно вводить пароль в течение нескольких минут после последовательных команд doas.

Допустим нужно сделать подобное, но для определенной группы, добавляем в конфиг строчку:


permit persist :wheel as root


Теперь все кто в группе wheel смогут побыть рутом. Также и с белым списком команд, которые можно выдать для запуска без пароля:


permit persist user as root
permit nopass :user as root cmd apt


Да, конфиг более читабельный чем у sudo

Конфиг sudo

%wheel ALL=(ALL) NOPASSWD: ALL


Конфиг doas

permit nopass :wheel as root


Ну и с помощью doas можно запустить root shell такой командой:

doas -s
3👍2
📌 Модель OSI Vs TCP/IP
2
GitHub Actions для Terraform

Если вы используете Terraform и хотите интегрировать его с CI/CD процессами на GitHub Actions, используйте библиотеку terraform-github-actions.

С её помощью вы сможете:
- Автоматизировать и тестировать Terraform-код.
- Настраивать проверки terraform plan и terraform apply.
- Ускорить деплой инфраструктуры.

Документация в репозитории описывает примеры использования и тонкости настройки.

https://github.com/dflook/terraform-github-actions
2
Системные утилиты для безопасного удаления файлов с HDD

Windows
В данном примере мы форматируем том D в файловую систему NTFS, при этом даем операционной системе команду предварительно перезаписать весь раздел нулями 10 раз, используя параметр /p («passes»), задающий количество проходов.
format d: /fs:NTFS /p:10

Linux
Быстро и надежно удаляет один или несколько файлов.
shred -u -n 40 /private/file.txt

В этом примере мы перезаписали файл file.txt случайными данными 40 раз подряд (параметр -n, по умолчанию же shred совершает 25 проходов) и затем удалили его (параметр -u, поскольку по умолчанию shred не удаляет файлы, а сразу перезаписывает).
shred -u -n 40 /private/file.txt /private/file2.txt

Если нам внужно дополнительно скрыть и сам факт «зачистки», то можете воспользоваться параметром -z:
shred -u -z -n 40 /private/file.txt

Единственный недостаток shred — данная утилита не умеет работать с директориями. Поэтому если вам требуется уничтожить содержимое целого каталога с вложенными папками, стоит воспользоваться wipe. В данном примере мы отдали команду рекурсивно (-r) удалить все, что находится в папке private, а также отключили запрос подтверждения удаления папок и файлов (-f), которое wipe выводит по умолчанию. Среди интересных дополнительных опций, поддерживаемых утилитой, стоит выделить принудительное выполнение chmod для каталогов и файлов, защищенных от перезаписи (-c), работу в тихом режиме (-s) и возможность заставить wipe следовать символическим ссылкам (-D, конфликтует с -r).
wipe -rf /private/*

Mac OS
В версиях операционной системы с 10.4 по 10.10 вы могли инициировать перезапись файлов, переместив их в корзину, а затем выбрав в Finder опцию «Очистить корзину необратимо», однако впоследствии Apple от нее отказалась. Вплоть до версии 10.11 для безопасного удаления данных можно было воспользоваться консольной командой srm. В данном примере мы рекурсивно удаляем содержимое папки private (-r), перезаписывая каждый файл случайными данными 7 раз подряд (-m). Также можно выбрать однократную перезапись файлов (-s) или же не указывать этот параметр вовсе — в этом случае утилита выполнит 35 проходов.
srm -rm /private/

В актуальных версиях Mac OS инициировать безопасное удаление файлов с жесткого диска можно с помощью Дисковой утилиты (для этого необходимо нажать на кнопку «Параметры безопасности» и задать количество циклов перезаписи), либо через терминал, используя конструкцию вида. Параметр -P является специфичным для Mac OS и сообщает утилите, что удаляемые файлы необходимо трижды перезаписать.
rm -P /private/file.txt
2🔥1
ArcherySec — open-source инструмент, который позволяет проводить сканирование инфраструктуры

export TIME_ZONE='Asia/Kolkata'
git clone https://github.com/archerysec/archerysec.git
cd archerysec
NAME=User EMAIL=user@user.com PASSWORD=admin@123A bash setup.sh
./run.sh


ArcherySec интегрируется с 80+ коммерческими и открытыми инструментами и имеет удобный ArcherySec CLI — локально развертываемый инструмент командной строки, предназначенный для запуска на любом хосте Linux.

https://github.com/archerysec/archerysec
1
This media is not supported in your browser
VIEW IN TELEGRAM
Glasskube

Это пакетный менеджер с открытым исходным кодом для Kubernetes. Он делает развертывание, обновление и настройку пакетов в Kubernetes в 20 раз быстрее по сравнению с такими инструментами, как Helm или Kustomize. Вдохновлён простотой Homebrew и npm. Вы можете выбрать: использовать Glasskube через интерфейс (UI), командную строку (CLI) или развёртывать пакеты напрямую через GitOps.

https://github.com/glasskube/glasskube
1
Утилиты linux

rsync
-v — выводит подробную информацию о процессе копирования;
[-a] — сохраняет все атрибуты оригинальных файлов;
-u — не перезаписывать более новые файлы;
-l — копирует символьные ссылки;
-L — копирует содержимое ссылок;
-p — сохраняет права для файлов;
-t — сохраняет время модификации;
-e — использовать другой транспорт, например, ssh;
[-z] — cжимает файлы перед передачей;
—recursive — перебирать директории рекурсивно;
—exclude — Исключить файлы по шаблону;

Примеры:
rsync -avz skillproject/data/ . — из подкаталога в текущий каталог
rsync -avz skillproject/data/ aaa/ — из подпапки в подпапку aaa/
rsync -avz skillproject/data/ digita6d@digita6d.beget.tech:/home/d/digita6d/code-skills.ru/public_html/sources/skillproject/data/ — передача на удаленный сервер
rsync -avze ssh skillproject/data/ digita6d@digita6d.beget.tech:/home/d/digita6d/code-skills.ru/public_html/sources/skillproject/data/ — то же самое м явным указанием ssh

ss
-l или —listening — посмотреть только прослушиваемые порты;
-p или —program — показать имя программы и ее PID;
-t или —tcp — показать tcp порты;
-u или —udp показать udp порты;
-n или —numeric показывать ip адреса в числовом виде.

Примеры:
ss -tlpn — проверить все прослушивающие tcp-порты
ss -tulpn | grep :80 — показать все процессы, работающие на 80-м порту

ps
ps -e — показать все процессы
ps -ef — показать подробную информацию о каждом процессе
ps -ef | grep phantom — найти все процессы с именем phantom

mpstat
Показывает статистику загрузки процессора. Команды:
mpstat — показывает общую информацию
mpstat -P ALL — по каждому ядру

free
Показывает потребление ОЗУ на текущий момент:
free -h — показывает информацию в гигабайтах (более человеко читаемо, чем в байтах)

top
Что-то наподобие диспетчера задач, только для линукс, показывает попроцессное потребление озу

dpkg
Пакетный менеджер для debian систем (не путать с системой управления пакетами — apt/apt-get)
dpkg -s <packname> — проверить, установлен ли пакет
dpkg -l — список всех пакетов
dpkg -l | grep apache2 — проверить, установлен ли конкретный пакет
dpkg -i <package.deb> — установить пакет

netstat
netstat -pnltu — посмотреть список используемых портов
1👍1
Перенос VM с Hyper-V на Proxmox

Перенос виртуальной машины (VM) с Hyper-V на Proxmox включает несколько шагов, поскольку Hyper-V и Proxmox используют разные форматы виртуальных дисков. Hyper-V использует формат VHDX, а Proxmox предпочитает формат QCOW2 или RAW. Основная задача заключается в конвертации дисков и настройке виртуальной машины на новом гипервизоре.

Шаги для переноса VM с Hyper-V на Proxmox

📌1. Подготовка виртуальной машины в Hyper-V

1. Выключите виртуальную машину в Hyper-V.
Чтобы избежать проблем с консистентностью данных, убедитесь, что VM выключена перед экспортом.

2. Экспортируйте виртуальную машину.
Откройте Hyper-V Manager и выполните экспорт виртуальной машины:
- Выберите нужную виртуальную машину.
- Нажмите "Экспортировать" и выберите директорию для сохранения экспортированных файлов.

В результате экспорт сохранит всю конфигурацию виртуальной машины и файлы дисков (обычно в формате VHD или VHDX).

📌2. Конвертация виртуального диска

Proxmox поддерживает несколько форматов виртуальных дисков, таких как QCOW2 и RAW. Вы можете использовать утилиту qemu-img для конвертации формата.

1. Перенесите диск (VHDX/VHD) на сервер Proxmox.
Скопируйте файл виртуального диска с Hyper-V на сервер Proxmox с помощью SCP или другого метода передачи файлов.

Пример использования SCP:

scp /path/to/your/disk.vhdx user@proxmox:/var/lib/vz/images/


2. Установите `qemu-utils` (если он не установлен).
Для конвертации используйте утилиту qemu-img. На Proxmox по умолчанию установлена эта утилита, но если её нет, установите:

apt-get install qemu-utils


3. Конвертируйте VHDX в формат QCOW2 или RAW.
Выполните команду для конвертации:
- В QCOW2:

qemu-img convert -f vhdx -O qcow2 /path/to/your/disk.vhdx /var/lib/vz/images/VMID/vm-disk.qcow2

- В RAW:

qemu-img convert -f vhdx -O raw /path/to/your/disk.vhdx /var/lib/vz/images/VMID/vm-disk.raw


- /path/to/your/disk.vhdx — путь к вашему файлу VHDX.
- /var/lib/vz/images/VMID/vm-disk.qcow2 — путь, куда будет сохранен новый виртуальный диск, с указанием идентификатора VM (`VMID`).

📌3. Создание новой VM на Proxmox

1. Создайте новую виртуальную машину на Proxmox.
В интерфейсе Proxmox:
- Нажмите "Создать VM".
- Укажите настройки (например, процессоры, память, сетевые адаптеры), соответствующие параметрам вашей VM на Hyper-V.
- На этапе создания жесткого диска выберите небольшой размер временного диска (он не будет использоваться).

2. Подмените созданный диск на сконвертированный.
После создания VM:
- Перейдите в директорию, где хранится диск новой VM: /var/lib/vz/images/VMID/.
- Удалите временный диск и замените его на сконвертированный диск:

mv /path/to/vm-disk.qcow2 /var/lib/vz/images/VMID/


3. Проверьте и отредактируйте конфигурацию виртуальной машины.
Откройте файл конфигурации VM, который находится по пути /etc/pve/qemu-server/VMID.conf, и убедитесь, что строка с указанием диска ссылается на ваш новый файл:

scsi0: local:VMID/vm-disk.qcow2


📌4. Запуск виртуальной машины

1. Запустите виртуальную машину в Proxmox.
В интерфейсе Proxmox запустите VM и проверьте, корректно ли она работает.

2. Установите необходимые драйвера.
Если в Hyper-V VM использовала специфичные драйвера, возможно, потребуется установить новые драйвера в ОС, чтобы она корректно функционировала в Proxmox (например, драйвера для сетевого адаптера или виртуальных дисков).

Заключение
После выполнения этих шагов виртуальная машина должна корректно работать на платформе Proxmox. Если возникнут проблемы с драйверами или загрузкой системы, возможно, потребуется дополнительно настроить параметры виртуальной машины или обновить конфигурацию ОС.
3
This media is not supported in your browser
VIEW IN TELEGRAM
Xeol

Cканер образов контейнеров, SBOM и файловых систем на проверку пакетов на end-of-life (EOL)

https://github.com/xeol-io/xeol
👍21
Внутреннее устройство Linux - доступно, но всерьез.

Уроки по Linux от Дмитрия Кетова для самостоятельного обучаения.

https://www.youtube.com/c/DmitryKetov/playlists
3
Примеры скриптов для Mikrotik


Проверка изменения IP-адреса интерфейса для Mikrotik

Иногда провайдер выдает динамические IP-адреса. Этот скрипт проверит, не изменился ли динамический IP-адрес.

:global currentIP;

:local newIP [/ip address get [find interface="ether1"] address];

:if ($newIP != $currentIP) do={
:put "ip address $currentIP changed to $newIP";
:set currentIP $newIP;
}


Netmask

Этот скрипт полезен, если вам нужен ip-адрес без netmask (например, чтобы использовать его в брандмауэре), а "/ip address get [id] address" возвращает ip-адрес и netmask.

:global ipaddress 10.1.101.1/24

:for i from=( [:len $ipaddress] - 1) to=0 do={
:if ( [:pick $ipaddress $i] = "/") do={
:put [:pick $ipaddress 0 $i]
}
}



Резолвим имя хоста

Многие пользователи спрашивают, как использовать dns-имена вместо IP-адресов для серверов radius, правил брандмауэра и т. д.

Вот пример того, как резовлить IP-адрес сервера RADIUS.
Допустим, у нас настроен сервер radius:

/radius
add address=3.4.5.6 comment=myRad


А вот скрипт, который резовлит ip-адрес, сравнит ip с настроенным и заменит, если они не равны:

/system noscript add name="resolver" source= {

:local resolvedIP [:resolve "server.example.com"];
:local radiusID [/radius find comment="myRad"];
:local currentIP [/radius get $radiusID address];

:if ($resolvedIP != $currentIP) do={
/radius set $radiusID address=$resolvedIP;
/log info "radius ip updated";
}

}



Добавьте этот скрипт в планировщик, чтобы он выполнялся, например, каждые 5 минут

/system scheduler add name=resolveRadiusIP on-event="resolver" interval=5m
1
This media is not supported in your browser
VIEW IN TELEGRAM
Winapps – проект, что позволяет запускать приложения Windows, такие как Microsoft Office в Linux (Ubuntu) и GNOME, как если бы они были частью собственной ОС, включая интеграцию с Nautilus

https://github.com/Fmstrat/winapps
2👍2
Трюки терминала Bash

Полезные комбинации клавиш (хоткеи) и небольшие хитрости, которые сделают Вашу работу в Linux более эффективной.

Горячие клавиши" Bash с Ctrl
Ctrl + n — то же самое, что и стрелка вниз.
Ctrl + p — то же самое, что и стрелка вверх.
Ctrl + r — поиск по предыдущим командам из истории команд (history). Продолжайте нажимать Ctrl + r, чтобы искать дальше. Ctrl + Shift + r — поиск в другую сторону.
Ctrl + s — остановить вывод в терминал.
Ctrl + q — восстановить вывод в терминал после Ctrl + s.
Ctrl + a — перейти к началу строки (аналог клавиши Home).
Ctrl + e — перейти к концу строки (аналог клавиши End).
Ctrl + d — если вы ввели что-то, то Ctrl + d удаляет символ под курсором. В противном случае означает конец ввода и завершает текущую сессию Bash.
Ctrl + k — удалить весь текст от курсора до конца строки.
Ctrl + x + backspace — удалить весь текст от начала строки до курсора.
Ctrl + t — переставить символ до курсора на символ под курсором. Нажмите Esc + t для перестановки двух слов до курсора.
Ctrl + w — удалить слово до курсора; затем Ctrl + y, чтобы вставить его.
Ctrl + u — удалить строку перед курсором; Ctrl + y для вставки его.
Ctrl + _ — отменить ввод.
Ctrl + l — очищает окно терминала. То же самое, что и clear.
Ctrl + x + Ctrl + e — запускает редактор, определённый в переменной $EDITOR, для ввода команды. Полезно для многострочных команд.

Изменить заглавные на строчные и наоборот
Esc + u — преобразовать буквы от курсора до конца строки в заглавные буквы.
Esc + l — преобразовать буквы от курсора до конца строки в нижний регистр.
Esc + c — заменить букву под курсором на заглавную.

Запустить предыдущую команду ещё раз
Запустить команду из истории по номеру (например, 53)
!53
!! — запуск последней команды.
sudo !! — запустить предыдущую команду с sudo.

Запускает последнюю команду и меняет какой-то параметр. Например, меняем "aaa" на "bbb":
# Последняя команда: echo 'aaa'
$ ^aaa^bbb

$ echo 'bbb'
bbb


Важно: предыдущая команда заменит только первое вхождение "aaa". Если вы хотите заменить все вхождения, используйте :&:
^aaa^bbb^:&
# или
!!:gs/aaa/bbb/


Запустить последнюю команду, которая начинается с...
Например, до этого в истории команд была команда cat filename:
!cat
# или
!c


— запускает cat filename ещё раз.

Указание файлов по шаблону в Bash
/etc/pa*wd/etc/passwd — символ * означает "несколько любых символов".
/b?n/?at/bin/cat — символ ? означает "один любой символ".
ls -l [a-z]* — вывести список файлов, содержащих только буквы латинского алфавита. В квадратных скобках [] перечисляются символы, которые будут искаться. А символ * после [] означает "хоть сколько раз".
ls {*.sh,*.py} — вывести все .sh и .py файлы. {} используется для группировки нескольких шаблонов по принципу "или".

Полезные переменные окружения Bash
Короткие переменные:
$0 — оболочка командной строки или путь до запускаемого файла.
$1, $2, $3, ... — аргументы запуска скрипта.
$# — число аргументов, переданных в скрипт из терминала.
$? — код завершения последней команды.
$- — текущие опции, установленные для оболочки.
$$ — идентификатор текущего процесса.
$! — идентификатор процесса, завершённого последним.

Более длинные, но тоже полезные переменные:
$DESKTOP_SESSION — текущий менеджер дисплеев.
$EDITOR — редактор текста по умолчанию.
$LANG — используемый системой язык.
$PATH — список директорий, в которых будут искаться исполняемые файлы.
$PWD — текущая директория.
$SHELL — текущая оболочка командной строки.
$USER — имя текущего пользователя.
$HOSTNAME — имя текущего хоста (компьютера).
🙏2