ch
Feedback
Linux

Linux

前往频道在 Telegram

Все для системного администратора, новости и информация из мира Linux По всем вопросам @evgenycarter

显示更多
2 345
订阅者
-524 小时
-347
-20730
帖子存档
Linux
2 346
🔥 Оптимизация SSH-доступа: ускоряем работу с серверами 🔥 🔹 Отключаем DNS-резолвинг на сервере При подключении по SSH сервер по умолчанию пытается определить IP клиента через DNS, что может замедлять вход. Отключаем это:

echo "UseDNS no" | sudo tee -a /etc/ssh/sshd_config
sudo systemctl restart sshd
🔹 Используем MUX-сессии SSH Чтобы не устанавливать новое соединение при каждом подключении, можно использовать multiplexing: Добавьте в ~/.ssh/config:

Host *
    ControlMaster auto
    ControlPath ~/.ssh/sockets/%r@%h-%p
    ControlPersist 10m
Создайте папку:

mkdir -p ~/.ssh/sockets
Теперь первое соединение будет стандартным, а последующие — молниеносными! ⚡ 🔹 Включаем сжатие трафика Если соединение медленное, попробуйте сжатие:

ssh -C user@server
Или добавьте в ~/.ssh/config:

Compression yes
🔹 Используем mosh вместо ssh mosh (Mobile Shell) держит соединение даже при смене сети и потере пакетов. Устанавливаем:

sudo apt install mosh  # Debian/Ubuntu
sudo yum install mosh  # CentOS/RHEL
Подключаемся:

mosh user@server
👉@linuxchmod

Linux
2 346
RustScan – Инструмент для быстрого сканирования портов Данный проект может похвастаться высокой скоростью работы(Сканирует все 65 тыс. портов за 3 секунды), гибкой расширяемостью и адаптивным методом работы. https://github.com/RustScan/RustScan 👉@linuxchmod

Linux
2 346
Как разбить команду на несколько строк в linux В Linux можно разбить длинную команду на несколько строк, используя обратный слэш (\) в терминале. Это позволяет сделать команду более читаемой. 1. Запуск команды с аргументами:

   cp -r \
      /home/user/Documents \
      /backup/Documents
   
Здесь команда cp -r переносится на новую строку после \. 2. Использование в скриптах (bash):

   echo "Этот текст будет \
   выведен в одной строке"
   
Результат:
   Этот текст будет выведен в одной строке
   
3. Конвейер (Pipeline) с |:

   cat /var/log/syslog | \
   grep "error" | \
   sort | \
   uniq
   
4. Переменные и длинные строки:

   MY_VAR="Это очень длинная строка, \
   которая разбивается на несколько строк, \
   но сохраняет свою целостность."
   echo "$MY_VAR"
   
5. Использование фигурных скобок {}:

   mv {file1.txt,file2.txt,file3.txt} \
      /destination/
   
6. Перенос в командах sed, awk, grep:

   awk '{ print $1, \
   $2 }' file.txt
   
7. Использование EOF (многострочный ввод):

   cat <<EOF
   Это многострочный текст,
   который будет выведен в терминал.
   EOF
   
🔹 Важно: \ должен стоять в конце строки, без пробелов после него. 👉@linuxchmod

Linux
2 346
+5
RAID-массивы - восстановление данных Технологии Raid массивов. Что делать, если из raid массива выпал диск? Сетевое хранилище Synology - восстановление данных RAID 5 - особенности и восстановление данных Почему наличие Raid массивов любого уровня не освобождает вас от создания резервного копирования Сбои Raid - контроллеров Raid-массивы: ошибки пересборки источник 👉@linuxchmod

Linux
2 346
Stacer – Опенсорсная утилита для оптимизации и мониторинга Linux-систем https://github.com/oguzhaninan/Stacer 👉@linuxchmod
Stacer – Опенсорсная утилита для оптимизации и мониторинга Linux-систем https://github.com/oguzhaninan/Stacer 👉@linuxchmod

Linux
2 346
🔥 Linux Kernel Manager and Activity Monitor — Мониторинг ядра Linux в реальном времени 🐧💻 Kmon - удобный инструмент для мониторинга и управления модулями ядра Linux прямо из терминала. Если вам нужно быстро загрузить, выгрузить или повторно загрузить модули ядра, kmon станет отличным помощником. 🔹 Основные возможности: - Просмотр загруженных модулей ядра - Фильтрация и поиск по модулям - Управление модулями (load, unload, reload) - Интуитивный TUI-интерфейс на ncurses 📌 Установка:

cargo install kmon
📌 Запуск:

kmon
После этого откроется удобный интерфейс для работы с модулями ядра! https://github.com/orhun/kmon 👉@linuxchmod

Linux
2 346
🔧 Оптимизация SSH: Ускоряем подключение к серверу 1️⃣ Отключаем проверку DNS По умолчанию SSH проверяет IP-адрес клиента в DNS, что может замедлять соединение. Отключим это: Открываем конфиг sshd_config:

sudo nano /etc/ssh/sshd_config
Добавляем/изменяем строку:

UseDNS no
Сохраняем и перезапускаем SSH:

sudo systemctl restart sshd
2️⃣ Убираем задержку при аутентификации GSSAPI Если у вас в сети не используется Kerberos, отключите GSSAPI-аутентификацию: В файле sshd_config добавляем:

GSSAPIAuthentication no
А также в файле ssh_config (для клиента):

GSSAPIAuthentication no
3️⃣ Подключаемся быстрее с ControlMaster Чтобы не устанавливать новое соединение при каждом вызове SSH, используем сессионный сокет: Добавляем в ~/.ssh/config:

Host *
    ControlMaster auto
    ControlPath ~/.ssh/sockets/%r@%h-%p
    ControlPersist 10m
Создаем папку:

mkdir -p ~/.ssh/sockets
chmod 700 ~/.ssh/sockets
Теперь повторные соединения к серверу будут мгновенными! ⚡ 👉@linuxchmod

Linux
2 346
Shell Scripting Bash (Born Again) - это оболочка Unix и язык командной строки, написанный Брайаном Фоксом. Оболочка Born Agai
Shell Scripting Bash (Born Again) - это оболочка Unix и язык командной строки, написанный Брайаном Фоксом. Оболочка Born Again используется большинством операционных систем Unix/Linux в качестве оболочки по умолчанию. Этот туториал по Shell Script написан для тех, кто хочет изучить основы программирования сценариев оболочки (Shell scripting). В этой серии уроков вы узнаете о скриптах bash, которые будут очень полезны для автоматизации повседневных задач. Он помогает автоматизировать такие задачи, как резервное копирование, очистка диска и т.д. https://tecadmin.net/tutorial/bash-scripting/ 👉@linuxchmod

Linux
2 346
Firewall в Mikrotik: разбираем, как обеспечивать безопасность сети Firewall дает огромные возможности по управлению сетевым трафиком, проходящим через Mikrotik. Вы, как администратор сети, должны суметь разделить все потоки трафика. дать каждому из них свои права, а весь лишний трафик — заблокировать. Firewall в Mikrotik по большей части позаимствован из IPTables из Linux. 02:27 Вопросы вебинара 03:23 Firewall filter 07:06 Работа по принципу «Если-То» 23:54 Filter Actions 57:15 Firewall NAT 1:03:33 NAT Actions 1:14:59 Connection State 1:30:49 Connection Tracking 1:31:22 Простая настройка firewall 1:33:16 Сложная настройка firewall 1:33:46 Address List 1:35:03 Блокирование сайтов через адрес листы с добавлением доменного имени 1:45:06 NAT Helpers 1:46:51 Полезные ссылки источник 👉@linuxchmod

Linux
2 346
+3
Mikrotik firewall Цепочка Output в Mikrotik Firewall Filter Основные цепочки IP Firewall Filter, используемые в MikroTik Цепочка Input в Firewall Filter Mikrotik Цепочка Forward в Firewall Mikrotik Filter Action в Mikrotik ip firewall filter - accept, log, add to address list Action Mikrotik ip firewall filter — drop, fasttrack connection, jump, passtrough, reject, tarpit Address List в Mikrotik Принцип «Если-То» в Firewall MikroTik, Вкладки «General», «Advanced», «Extra», «Action» Ручная Настройка Default Firewall Filter Rules в MikroTik Настройка Honeypot в Mikrotik Port Knocking в Mikrotik Firewall Filter Все видео на youtube 👉@linuxchmod

Linux
2 346
Было / стало 👉@linuxchmod
+7
Было / стало 👉@linuxchmod

Linux
2 346
Batch-скрипт. Устаналивает портабельную программу с сетевого диска на локальный диск пользователя и выводит ярлык на рабочий стол. Отредактированный под себя скрипт нужно прикрепить с помощью GPO в домене, как сценарий запуска при старте системы. Логи по установке пишутся на сетевой диск в отдельную папку.

@echo off
rem меняем кодировку чтобы использовать кириллицу
chcp 1251 >nul
rem указываем директорию с программой для копирования (в нашем случае на сетевом диске М)
set old_dir="M:\Programs\ExampleProgramPortable"
rem указываем директорию куда копировать программу (в нашем случае в корень диска С)
set new_dir="C:\ExampleProgramPortable"
rem если директория уже существует пишем запись в лог (дата, время, файл называется именем пользователя), в противном случае копируем программу в директорию new_dir
rem копируем ярлык программы в общую папку для всех пользователей, чтобы вывести на рабочий стол
rem переименовываем ярлык кириллицей (если нужно)
rem делаем запись в лог
If Exist "%new_dir%\*.*" (
echo %date% %time:~-11,8% DIR exist already >> M:\logs\%username%.txt
) Else (
xcopy %old_dir% %new_dir% /i /e /h /y
xcopy "C:\ExampleProgramPortable\example_program.lnk" C:\Users\Public\Desktop
rename "C:\Users\Public\Desktop\example_program.lnk" Программа.lnk
echo %date% %time:~-11,8% Example Program install successful >> M:\logs\%username%.txt
)
👉@linuxchmod

Linux
2 346
Linux: делаем скриншот и отправляем его на электронную почту 📭 Для успешной работы скрипта необходимо сначала установить: ss
Linux: делаем скриншот и отправляем его на электронную почту 📭 Для успешной работы скрипта необходимо сначала установить: ssmtp(обязательно настроить), mpack и scrot

#!/usr/bin/env bash
# Важно! Для работы скрипта необходимо установить и настроить ssmtp, mpack и scrot
# путь к директории со скриншотами
dirpath=/home/$USER/screenshots
# проверяем наличие директории (если нет, то создаем). Делаем скриншот с названием по маске: ДД-ММ-ГГ_ЧЧ-ММ-СС.jpg
if [[ -d $dirpath ]]; then
        scrot '%d-%m-%Y_%H-%M-%S.jpg' -e "mv \$f $dirpath"
        screenshot=$(find "$dirpath" -name "*.jpg")
else
        mkdir -p "$dirpath"
        scrot '%d-%m-%Y_%H-%M-%S.jpg' -e "mv \$f $dirpath"
        screenshot=$(find "$dirpath" -name "*.jpg")
fi
# отправляем письмо на почту
echo "Скриншот с сервера: $HOSTNAME" > $dirpath/message_body.txt
mpack -s "Скриншот" -d $dirpath/message_body.txt $screenshot your_login@mail.ru
# удаляем скриншот
rm -f $screenshot
👉@linuxchmod

Linux
2 346
Как найти количество открытых файлов в Linux Значение сохраняется в # cat /proc/sys/fs/file-max Проверка Hard лимит в Linux # ulimit -Hn Проверка Soft лимит в Linux # ulimit -Sn Чтобы просмотреть значения Hard и Soft для разных пользователей, переключите пользователя с «su» на пользователя, ограничения которого вы хотите проверить. Например: # su root $ ulimit -Sn $ ulimit -Hn Как проверить количество системных дескрипторов файлов в Linux На серверах, некоторые из ваших приложений могут потребовать более высокий лимит для открытых дескрипторов файлов. Хорошим примером этого являются службы MySQL / MariaDB или веб-сервер Apache. Вы можете увеличить лимит открытых файлов в Linux, отредактировав опцию ядра fs.file-max. Для этого используйте утилиту sysctl. Sysctl используется для настройки параметров ядра. Например, чтобы увеличить ограничение на количество открых файла до 500000, вы можете использовать следующую команду: # sysctl -w fs.file-max=500000 Вы можете проверить текущее значение для количества открытых файлов с помощью следующей команды: $ cat /proc/sys/fs/file-max С помощью указанной команды изменения, которые вы внесли, будут оставаться активными только до следующей перезагрузки. Если вы хотите применить их на постоянной основе, вам придется отредактировать следующий файл: # vi /etc/sysctl.conf Добавьте следующую команду: fs.file-max=500000 Конечно, вы можете изменить число в соответствии с вашими потребностями. Чтобы снова проверить изменения, используйте: # cat /proc/sys/fs/file-max Чтобы изменения вступили в силу, пользователям необходимо будет выйти из системы и снова войти в систему. Если вы хотите немедленно применить ограничения, вы можете использовать следующую команду: # sysctl -p Установка количества открытых файлов для пользователя в Linux Вышеприведенные примеры показали, как установить ограничения, но вы можете установить лимит для каждого пользователя. Для этой цели, с правами пользователя root, вам необходимо отредактировать следующий файл: # vi /etc/security/limits.conf Если вы администратор Linux, предлагаем Вам ознакомиться с этим файлом. Прочитайте все комментарии в нем, поскольку он обеспечивает гибкость в плане управления системными ресурсами путем установки лимита пользователям на разных уровнях. Команды, которые вы должны добавить, имеют следующие параметры: <domain>        <type>  <item>  <value> Вот пример установки Soft и Hard лимитов для пользователя dimon: ## Example hard limit for max opened files dimon hard nofile 4096 ## Example soft limit for max opened files dimon soft nofile 1024 👉@linuxchmod

Linux
2 346
SFTPGo — это мощный и гибкий сервер SFTP с поддержкой FTPS, S3, WebDAV и HTTP. Он написан на Go и предоставляет широкий набор функций для безопасного управления файлами. Основные возможности: 🔹 Многопротокольная поддержка – SFTP, FTP, WebDAV, HTTP/S 🔹 Хранение данных – локально, в S3 (AWS, MinIO и др.), Google Cloud Storage, Azure Blob 🔹 Поддержка пользователей и групп – управление через API, веб-интерфейс или конфигурационные файлы 🔹 Аутентификация – встроенная, через JWT, OAuth2, OpenID Connect, PAM, LDAP 🔹 Шифрование и защита – встроенная поддержка TLS, двухфакторная аутентификация 🔹 Гибкость – поддержка виртуальных каталогов, перехват событий вебхуками, API и скриптами 📌 Идеальный вариант для развёртывания безопасного сервера передачи файлов в компании или облачной среде. https://github.com/drakkan/sftpgo 👉@linuxchmod

Linux
2 346
Кошмар системного администратора 👉@linuxchmod
+4
Кошмар системного администратора 👉@linuxchmod

Linux
2 346
Шпаргалка по RAID mdadm — утилита для работы с программными RAID-массивами различных уровней. В данной инструкции рассмотрим примеры ее использования. Информация о RAID cat /proc/mdstat - состояние всех RAID mdadm -D /dev/md0 - подробная инфа о конкретном RAID lsblk - список дисков с разделами, местом, типом df -hT - свободное место, тип файловой системы, точки монтирования Сборка RAID mdadm —zero-superblock —force /dev/sd{b,c} - обнуление суперблоков на дисках sdb sdc (для удаления инфы о других RAID) при получении ответа mdadm: Unrecognised md component device - /dev/sdb значит, что диск не использовался для RAID, продолжаем mdadm —create —verbose /dev/md0 -l 1 -n 2 /dev/sd{b,c} * где /dev/md0 — устройство RAID, которое появится после сборки; -l 1 — уровень RAID; -n 2 — количество дисков, из которых собирается массив; /dev/sd{b,c} — сборка выполняется из дисков sdb и sdc. Создание файловой системы и монтирование массива mkfs.ext4 /dev/md0 - создание файловой системы ext4 на md0 mount /dev/md0 /mnt - разово примонтировать md0 к /mnt nano /etc/fstab, прописать /dev/md0 /mnt ext4 defaults 1 2 - постоянное монтирование, работает после перезагрузки Восстановление RAID Замена жесткого диска При выходе из строя, команда mdadm -D /dev/md0 выдаст: State : clean, degraded mdadm /dev/md0 —remove /dev/sdc - удалить сбойный диск mdadm /dev/md0 —add /dev/sde - добавить новый диск в массив Статус должен стать Rebuild Status : 40% complete и так до полного восстановления Пересборка массива Если нам нужно вернуть ранее разобранный или развалившийся массив из дисков, которые уже входили в состав RAID, вводим: mdadm —assemble —scan - команда сама найдет необходимую конфигурацию и восстановит RAID. mdadm —assemble /dev/md0 /dev/sdb /dev/sdc - с указанием из каких дисков пересобрать Запасной диск (Hot Spare) Если в массиве будет запасной диск для горячей замены, при выходе из строя одного из основных дисков, его место займет запасной. mdadm /dev/md0 —add /dev/sdd - Диском Hot Spare станет тот, который просто будет добавлен к массиву Добавить диск к массиву, расширить массив Добавление активного диска к RAID, который будет использоваться для работы, а не в качестве запасного. mdadm /dev/md0 —add /dev/sde mdadm -G /dev/md0 —raid-devices=3 - расширяем RAID * в данном примере подразумевается, что у нас RAID 1 и мы добавили к нему 3-й диск. Установка mdadm Если каким-то образом в дистрибутиве нет этого пакета apt-get install mdadm Удаление массива Если нам нужно полностью разобрать RAID, сначала размонтируем и остановим его: umount /mnt * где /mnt — каталог монтирования нашего RAID. mdadm -S /dev/md0 Затем очищаем суперблоки на всех дисках, из которых он был собран: mdadm —zero-superblock /dev/sdb mdadm —zero-superblock /dev/sdc mdadm —zero-superblock /dev/sdd 👉@linuxchmod

Linux
2 346
Как пробросить порт в Linux на другой сервер Необходимо пробросить с 8821 порта сервера 10.10.10.10 на 21 порт сервера 12.12.12.12: iptables -A FORWARD --dst 10.10.10.10 -p tcp --dport 8821 -j ACCEPT iptables -A FORWARD --src 10.10.10.10 -p tcp --sport 8821 -j ACCEPT iptables -t nat -A PREROUTING -d 10.10.10.10 -p tcp --dport 8821 -j DNAT --to-destination 12.12.12.12:21 iptables -t nat -A POSTROUTING -d 12.12.12.12 -p tcp --dport 21 -j SNAT --to-source 10.10.10.10:8821 👉@linuxchmod

Linux
2 346
Удаленный запуск скрипта на сервере Linux Удаленный запуск скрипта повторяющихся задач повышают эффективность системного адми
Удаленный запуск скрипта на сервере Linux Удаленный запуск скрипта повторяющихся задач повышают эффективность системного администрирования. Это отлично подходит для локальных машин, но что если вы контролируете удаленные серверы? Можете ли вы запустить локальный скрипт на удаленном компьютере? Да! https://bookflow.ru/udalennyj-zapusk-skripta-na-servere-linux/ 👉@linuxchmod

Linux
2 346
Как отлаживать bash-script-ы по шагам Мне всегда хотелось иметь возможность отлаживать bash-scripts так же, как и любой друго
Как отлаживать bash-script-ы по шагам Мне всегда хотелось иметь возможность отлаживать bash-scripts так же, как и любой другой код, т.е. по шагам, и bash такую возможность предусмотрел, но о ней не все знают. Несмотря на довольно большой опыт использования Linux, я дошёл до неё только недавно. Волшебная строчка, которую нужно добавить после #!/bin/bash, чтоб скрипт можно было отлаживать по шагам #!/bin/bash trap 'echo "# $BASH_COMMAND";read' DEBUG echo line1 echo line2 echo line3 Процесс отладки Запускаем скрипт, перед выполнением каждой команды выводится то, что будет исполняться, затем интерпретатор начинает ожидать нажатия клавиши <ENTER>. Если понимаем, что что-то пошло не так, нажимаем Ctrl+C и выходим из отладки. Ингредиенты команда trap, которая умеет перехватывать разные сигналы и в нашем случае она перехватывает сигнал DEBUG, посылаемый перед выполнением команды команда read, которая умеет ожидать ввода чего-нибудь с клавиатуры (в данном случае нам нужно только либо ENTER либо Ctrl+C переменная окружения $BASH_COMMAND, валидная внутри обработчика команды trap. # Online Bash Shell. # Code, Compile, Run and Debug Bash script online. # Write your code in this editor and press "Run" button to execute it. trap 'echo "# $BASH_COMMAND";read' DEBUG echo line1 echo line2 echo line3 echo "Hello World"; 👉@linuxchmod