Создание, изменение и удаление LVM

- Опубликовано в Гайды и мануалы

Введение

Logical Volume Manager (LVM) — это гибкая система управления логическими томами в Linux. Она позволяет динамически изменять размер разделов, объединять несколько физических устройств в один пул, а также быстро создавать резервные копии и мигрировать данные без простоя. Эта статья охватывает основные операции с LVM: создание группы физического хранения (Physical Volume → PV), логической группы (Volume Group → VG) и логических томов (Logical Volume → LV); изменение размеров томов; удаление компонентов. Мы будем использовать команды из пакета lvm2 (pvcreate, vgcreate, lvcreate, lvextend, lvreduce, lvremove, vgreduce, vgremove и т.д.) и покажем примеры в виде скриптов.

⚠️ Внимание!
Любые операции с LVM влияют на данные. Перед началом убедитесь, что у вас есть актуальные резервные копии и вы работаете над тестовой системой или виртуальной машиной.

Основная часть

1️⃣ Создание физических томов (Physical Volumes)

Физический том — это обертка над реальным диском или разделом. Для создания PV используем pvcreate.

# Создадим PV на /dev/sdb
sudo pvcreate /dev/sdb

Проверяем статус:

sudo pvs
PV VG Fmt Attr LSize PSize PFree
sdb1 lvm2 a--o- 100.00g 100.00g 100.00g

2️⃣ Создание группы томов (Volume Group)

Группа томов объединяет один или несколько PV в единый пул ресурсов.

# Создадим VG под названием vg_data, используя ранее созданный PV
sudo vgcreate vg_data /dev/sdb1

Проверяем:

sudo vgs
VG #PV #LV Attr VSize VFree
vg_data 1 0 -wi-ao---- 100.00g 100.00g

3️⃣ Создание логического тома (Logical Volume)

Логический том — это виртуальный раздел, который можно монтировать как обычный файловый систем.

# Создадим LV размером 20G и назовем его lv_home
sudo lvcreate -L 20G -n lv_home vg_data

# Форматируем в ext4
sudo mkfs.ext4 /dev/vg_data/lv_home

# Монтируем
sudo mkdir /mnt/home
sudo mount /dev/vg_data/lv_home /mnt/home

Проверяем:

sudo lvs
LV VG Attr LSize Origin Data% Meta%
lv_home vg_data -wi-ao--- 20.00g

4️⃣ Расширение логического тома (lvextend)

Если нужно увеличить размер LV, используем lvextend. Важно не превышать свободное пространство в VG.

# Увеличим lv_home до 30G
sudo lvextend -L +10G /dev/vg_data/lv_home

# После расширения необходимо растянуть файловую систему
sudo resize2fs /dev/vg_data/lv_home

Проверяем:

df -h | grep lv_home

5️⃣ Уменьшение логического тома (lvreduce)

Уменьшить LV можно только если в нем нет данных, иначе потребуется удалить или переместить файлы.

# Сначала смонтируем точку монтирования в read-only режим и уберём все данные
sudo umount /mnt/home
sudo e2fsck -f /dev/vg_data/lv_home   # Проверка файловой системы

# Уменьшаем до 15G (не более чем на 5G меньше текущего)
sudo lvreduce -L 15G /dev/vg_data/lv_home

# После уменьшения снова растягиваем файловую систему
sudo resize2fs /dev/vg_data/lv_home

6️⃣ Удаление логического тома (lvremove)

sudo lvremove /dev/vg_data/lv_home

7️⃣ Удаление группы томов (vgremove) и физического тома (pvremove)

Перед удалением убедитесь, что в VG нет активных LV.

# Удаляем группу vg_data
sudo vgremove vg_data

# Теперь удаляем PV
sudo pvremove /dev/sdb1

Заключение

LVM — мощный инструмент для динамического управления хранилищем. Создание, изменение и удаление томов можно выполнять без перезагрузки системы, что делает LVM идеальным решением для серверных сред и облачных инфраструктур. Главное — всегда держать актуальные резервные копии и внимательно следить за свободным пространством в Volume Group. С практикой вы быстро освоите все нюансы работы с LVM и сможете гибко масштабировать свои дисковые ресурсы.

Hyperland: Текстовый Wayland-композитор для продвинутых пользователей

- Опубликовано в Гайды и мануалы

Введение

Вы устали от традиционных графических сред Linux? Хотите максимального контроля над своей системой и невероятной скорости работы? Тогда вам стоит обратить внимание на Hyperland – уникальный композитор, основанный на Wayland и управляемый исключительно с помощью клавиатуры. Это не просто операционная система, это философия! Hyperland требует от вас понимания принципов работы оконных менеджеров и готовности к настройке, но взамен предлагает потрясающую гибкость и производительность.

В этой статье мы погрузимся в мир Hyperland, рассмотрим его основные особенности, процесс установки и базовые концепции конфигурации. Предупреждаем: это не для новичков! Но если вы готовы к приключениям – добро пожаловать!

Основная часть

Что такое Wayland и почему он важен?

Прежде чем говорить о Hyperland, важно понять, что такое Wayland. Это протокол отображения, который является современной альтернативой X11 (традиционной системы для Linux). Wayland предлагает улучшенную безопасность, производительность и поддержку современных технологий.

Hyperland использует Wayland в качестве основы, что позволяет ему быть быстрым, плавным и отзывчивым. В отличие от многих других графических сред, Hyperland не имеет GUI – все управление осуществляется через текстовые файлы конфигурации и клавиатурные сочетания.

Основные концепции Hyperland: config, rules и scripts

Hyperland управляется тремя основными типами файлов:

  • config: Основной файл конфигурации, где вы определяете раскладку окон, сочетания клавиш, темы и другие глобальные настройки.
  • rules: Файлы правил, которые определяют поведение определенных приложений – например, как они должны отображаться на экране или какие параметры им присваивать.
  • scripts: Скрипты (обычно написанные на Bash или Python), которые позволяют автоматизировать различные задачи и расширять функциональность Hyperland.

Все эти файлы хранятся в директории ~/.config/hyperland.

Установка Hyperland

Процесс установки может немного отличаться в зависимости от вашего дистрибутива Linux, но общая схема выглядит следующим образом:

  1. Установите необходимые пакеты: Wayland-композитор (например, wlroots), шрифты и другие зависимости.
  2. Клонируйте репозиторий Hyperland с GitHub: git clone https://github.com/hyperland/hyperland
  3. Скопируйте пример конфигурации в вашу домашнюю директорию: cp hyperland/config ~/.config/hyperland/config
  4. Перезагрузите систему или запустите Hyperland вручную.

Пример запуска (после установки зависимостей):

exec hyprctl dispatch workspace 1,monitor:DP-1 # Запуск на первом мониторе

Настройка Hyperland: Первый взгляд на config

Файл config – это сердце Hyperland. В нем вы определяете все аспекты поведения вашей системы. Вот пример небольшого фрагмента конфигурации:

# Раскладка окон по умолчанию
layout = tiled

# Сочетания клавиш для переключения между рабочими пространствами
bind = $mainMod + 1, workspace 1
bind = $mainMod + 2, workspace 2
bind = $mainMod + 3, workspace 3

# Темы
theme = Dracula

В этом примере мы определяем раскладку окон по умолчанию как "tiled" (плиточная), сочетания клавиш для переключения между рабочими пространствами и тему оформления. Вы можете настроить все эти параметры под свои нужды.

Использование rules для управления приложениями

Файлы rules позволяют вам определять поведение определенных приложений. Например, вы можете указать, чтобы Firefox всегда запускался на втором мониторе или чтобы терминал Emacs был полноэкранным.

Пример файла правила (~/.config/hyperland/rules/firefox.conf):

windowrule = workspace 2, firefox

Этот файл указывает, что все окна Firefox должны отображаться на рабочем пространстве номер 2.

Скрипты для автоматизации задач

Скрипты позволяют вам расширять функциональность Hyperland и автоматизировать различные задачи. Например, вы можете написать скрипт для управления громкостью звука или для переключения между разными раскладками клавиатуры.

Заключение

Hyperland – это мощный и гибкий композитор, который требует от вас определенных знаний и усилий, но взамен предлагает невероятную свободу настройки и производительность. Если вы готовы к приключениям и хотите получить максимальный контроль над своей системой, то Hyperland может быть отличным выбором.

Не бойтесь экспериментировать, читать документацию и задавать вопросы сообществу! Hyperland – это не просто операционная система, это образ жизни 😉. Помните, что путь к идеальной конфигурации может быть долгим, но результат того стоит!

Linux: Обои, менюшки и магия. Гид по графическим средам.

- Опубликовано в Основы Linux

Введение

Вы только что установили Linux? Поздравляем! Но, возможно, вас немного смущает внешний вид системы. Не волнуйтесь, это нормально! В отличие от Windows или macOS, в Linux вы можете выбирать из огромного количества графических сред (Desktop Environments - DE). Это как разные костюмы для вашей операционной системы – каждый со своим стилем, функциональностью и философией.

В этой статье мы погрузимся в мир графических сред Linux, рассмотрим самые популярные варианты и поможем вам выбрать ту, которая идеально подойдет именно вам. Готовы к магии? Поехали!

Основная часть

GNOME: Элегантность и простота

GNOME – одна из самых популярных и современных графических сред. Она известна своим минималистичным дизайном, удобством использования и акцентом на продуктивность. В GNOME все продумано до мелочей, чтобы вы могли сосредоточиться на своей работе.

Ключевые особенности:

  • Простой и интуитивно понятный интерфейс
  • Акцент на использовании клавиатуры
  • Хорошая интеграция с облачными сервисами (например, Google Calendar)
  • Расширяемость через расширения (extensions). Например, для добавления панели задач или изменения поведения окон.

Установка (Debian/Ubuntu):

sudo apt update
sudo apt install gnome-session

KDE Plasma: Настройка под себя и безграничные возможности

KDE Plasma – это настоящий швейцарский нож среди графических сред! Она предлагает невероятную гибкость в настройке, огромное количество опций и виджетов. Если вы любите все настраивать "под себя", то KDE Plasma – ваш выбор.

Ключевые особенности:

  • Огромное количество настроек
  • Виджеты для отображения информации и управления системой
  • Встроенные инструменты для работы с файлами, мультимедиа и интернетом
  • Активное сообщество разработчиков и пользователей

Установка (Debian/Ubuntu):

sudo apt update
sudo apt install kde-plasma-desktop

XFCE: Легкость и скорость

XFCE – это легкая и быстрая графическая среда, идеально подходящая для старых компьютеров или тех, кто ценит производительность. Она не перегружена лишними функциями, но при этом предлагает все необходимое для комфортной работы.

Ключевые особенности:

  • Низкое потребление ресурсов
  • Быстрая работа даже на слабых компьютерах
  • Простой и понятный интерфейс
  • Настраиваемость (хотя и не такая широкая, как в KDE Plasma)

Установка (Debian/Ubuntu):

sudo apt update
sudo apt install xfce4

LXQt: Еще легче и быстрее!

LXQt – это еще более легкая альтернатива XFCE. Она основана на Qt-библиотеках и предлагает отличную производительность даже на самых старых компьютерах. Если у вас очень слабый компьютер, то LXQt может быть лучшим выбором.

Ключевые особенности:

  • Минимальное потребление ресурсов
  • Быстрая работа
  • Простой интерфейс
  • Современный внешний вид (несмотря на легкость)

Установка (Debian/Ubuntu):

sudo apt update
sudo apt install lxqt

Cinnamon: Классика и удобство

Cinnamon – это графическая среда, которая стремится предоставить классический опыт использования рабочего стола. Она похожа на Windows 7 или более ранние версии macOS и предлагает удобный интерфейс с панелью задач, меню "Пуск" и другими привычными элементами.

Ключевые особенности:

  • Классический внешний вид
  • Удобство использования для тех, кто переходит с Windows
  • Настраиваемость
  • Хорошая интеграция с облачными сервисами

Установка (Debian/Ubuntu):

sudo apt update
sudo apt install cinnamon-desktop-environment

Сравнение графических сред

Графическая среда Простота использования Настройка Производительность Ресурсы
GNOME Высокая Средняя Хорошая Умеренные
KDE Plasma Средняя Очень высокая Хорошая Высокие
XFCE Высокая Средняя Отличная Низкие
LXQt Высокая Низкая Превосходная Минимальные
Cinnamon Высокая Средняя Хорошая Умеренные

Заключение

Выбор графической среды – это очень личный процесс. Не бойтесь экспериментировать и пробовать разные варианты, чтобы найти ту, которая идеально подходит именно вам! Помните, что вы всегда можете установить несколько графических сред на один компьютер и переключаться между ними по мере необходимости.

В конечном итоге, Linux предлагает невероятную свободу выбора, и это одна из главных причин, почему так много людей любят эту операционную систему. Удачи в настройке вашей системы! И да, не забудьте про обои – они тоже важны для создания правильного настроения 😉

Linux Юмор: Когда жизнь - это командная строка

- Опубликовано в /dev/null (Юмор и абсурд)

Linux – операционная система для тех, кто любит решать проблемы… и создавать новые. Если вы не знакомы с миром пингвинов, то эта статья может показаться вам немного странной. Но если вы хоть раз пытались установить драйвер или настроить firewall, то вы поймете о чем речь!

Почему Linux-пользователи такие спокойные?

Потому что они знают, как выйти из системы. (Get it? Exit... система?)


Linux – это не просто операционная система, это образ жизни. И этот образ жизни полон специфического юмора, который понимают только посвященные. Вот несколько примеров:

  • Проблема: "У меня что-то сломалось." Решение: "Переустанови Linux." (Это универсальный ответ на любой вопрос.)
  • Linux-пользователь объясняет проблему другу: "Ну, я просто ввел команду sudo rm -rf /..." (И тут друг теряет сознание.)
  • Разговор двух Linux-пользователей:
    • "Как дела?"
    • "Всё стабильно. Только вчера пришлось восстанавливать систему из резервной копии."

Шутки про терминал

Терминал – это сердце и душа Linux. И, конечно же, источник бесконечного юмора:

# Попытка скопировать файл...
cp file1 file2
# Ошибка!
cp: missing destination operand
# А, ну да, я забыл указать куда копировать...

Или вот еще:

  • "Почему Linux-пользователи не боятся темноты?" "Потому что они умеют использовать ls -l." (Команда для просмотра файлов и директорий.)

Шутки про дистрибутивы

Каждый Linux-дистрибутив – это как отдельная личность со своими особенностями:

  • Ubuntu: "Linux для новичков. Идеально подходит, если вы хотите что-то сделать, не понимая, что именно."
  • Arch Linux: "Linux для тех, кто любит страдать и чувствовать себя умным." (Или просто очень терпелив.)
  • Debian: "Linux для тех, кто ценит стабильность... даже если это означает использование устаревшего программного обеспечения."

Заключение

Юмор в Linux – это способ справиться с трудностями и не сойти с ума. Если вы только начинаете свой путь в мире пингвинов, то будьте готовы к тому, что вам придется много гуглить, экспериментировать и смеяться над своими ошибками.

И помните: если что-то пошло не так, всегда можно переустановить Linux! (Шутка.)

Основы безопасности Linux: от простого к сложному

- Опубликовано в Безопасность

Приветствуем, друзья-администраторы и любознательные пользователи! Если вы работаете со средой Linux – будь то сервер, рабочая станция или виртуальная машина – вопрос безопасности становится крайне важным. Хорошая новость: безопасность Linux построена на понятных принципах и может быть эффективно усвоена "от простого к сложному".

Эта статья – ваш путеводитель, как закрепить первый рубеж защиты для ваших систем.

1. Базовый уровень: Фундаментальные правила

Многие проблемы возникают из-за нарушения базовых принципов. Держимся этих пяти пунктов:

  • Слабые пароли – прямой вход врагу: Это самое частое слабое звено! Избегайте простых паролей (петербург, 123456, ваша собака Бобик наоборот). Используйте длинные комбинации из латинских и кириллических букв, цифр и специальных символов. Попробуйте утилиты типа pwgen или соответствующий плагин в менеджере паролей для генерации надежных вариантов.

    • Практика: Команда passwd <имя_пользователя> позволяет сменить пароль. Убедитесь, что все пользователи, особенно обычные и сервисные аккаунты (например, mysql, httpd), имеют прочный пароль.
  • Управление правами доступа: Linux – многопользовательская система. Контролируйте, кто есть кто на вашем компьютере.

    • Практика: Команда sudo -l покажет, какие команды может выполнять пользователь (или группа) с правами root. Используйте usermod для добавления пользователя в группу sudoers и adduser <имя_пользователя> для создания новых аккаунтов.
    • Практика: Всегда используйте команду su - username (или соответствующее GUI) вместо простого sudo, если нужно работать в оболочке другого пользователя. Это уменьшает накопление кеша паролей.
  • Отключение Root-доступа по SSH без sudo: Давайте будем честны – root – это опасный аккаунт. Вместо прямого входа с root'ом, настройте систему так, чтобы можно было подключаться только через обычного пользователя, который имеет право выполнять команды sudo.

    • Практика: Отредактируйте файл /etc/ssh/sshd_config (обязательно сделайте резервную копию!), найдите строку PermitRootLogin yes и измените на PermitRootLogin without-password ИЛИ лучше – PermitRootLogin prohibit-password. Второй вариант предпочтительнее, так как полностью запрещает прямой root-доступ по паролю. Затем убедитесь, что пользователь с правами sudo может выполнять нужные команды через sudo.
  • Обязательное использование ключей (SSH): Ключи SSH – это идеальная замена паролям для безопасного удаленного доступа.

    • Практика: Создайте пару ключей на своей машине (ssh-keygen) и скопируйте публичный ключ (id_rsa.pub, или используйте ssh-copy-id) на целевую Linux-машину в файл /root/.ssh/authorized_keys (для root) или соответствующий каталог пользователя. Или используйте сертификаты (X.509), которые более безопасны для больших систем.
  • Сильные файловые системы: Не ходите по чужим сюжетам!

    • Практика: При монтировании USB-накопителей, сетевых дисков или даже некоторых локальных директорий используйте флаги nofollow, nosuid, nodev, ro.
    # Пример для временного устройства /dev/sdb1
    mount -o ro,nofollow,noexec,nosuid /dev/sdb1 /mnt/readonly
    
    • Пояснение: ro – только для чтения, nofollow запрещает проследование символьных ссылок (защита от ".."), noexec запрещает выполнение файлов на диске, nosuid отключает исполняемые биты в заголовке файла. Эти флаги сильно ограничивают использование "посторонних" файловых систем.

2. Работа с пользователями и группами

Контроль доступа начинается с управления учетными записями:

  • Удаление ненужных пользователей: Не нужны root-доступ, но не выполняют важные задачи? Их лучше удалить.

    • Практика: Команда userdel -r username удаляет пользователя и его домашнюю директорию.
  • Строгий контроль домашних директорий: Обеспечьте, чтобы только владелец мог читать/изменять содержимое своих папок.

    • Практика:
    # Установить права на домашнюю директорию пользователя
    chmod 700 /home/username
    
    Или для безопасности сразу после создания:
    ```
    # Создать пользователя и автоматически убрать права записи для других
    adduser username --disabled-password --gecos "" && \
    echo "username:password" | chpasswd -e && \
    mkdir /home/username && chmod 700 /home/username && chown username:username /home/username
    ```
    
  • Обязательный шифрование домашних директорий (для root и важных пользователей):

    • Практика: Используйте ecryptfs или LUKS для шифрования домашней папки пользователя. Особенно это критично для root.
  • Имена пользователей – скрывайте детали: Избегайте имен вроде "admin", "root" (если прямой доступ отключен), "testuser". Используйте неочевидные или описательные, но не связанные с правами.

    • Практика:
    # Создать пользователя с нелогичным именем для важного сервиса
    useradd -s /bin/false -d /opt/myapp/data -m -N my_weird_service_user
    

3. Входящие соединения и сетевая безопасность

Что заходит на вашу машину – это важно:

  • Не открытые порты: Не оставляйте порты открытыми, если явно не нужно.

    • Практика:
      1. Проверьте, какие сервисы запущены и слушают сетевые соединения с помощью netstat -tulnp или ss -tulnp.
      2. Если сервис по умолчанию прослушивает публичный интерфейс (например, SSH на eth0), то либо измените его конфигурацию, чтобы он слушал только локальный (lo) интерфейс или специально отведенный для этого интерфейс (eth1).
      3. Используйте systemctl stop <service> и systemctl disable <service> для приложений по умолчанию не запускаемых на сервере.
  • Имя хоста: Установите уникальное имя хоста (hostnamectl set-hostname new.name), чтобы системы могли узнавать вас правильно, а вы – себя.

  • Базовая фаерволльская политика (iptables/nftables): Откажитесь от всех подключения и разрешайте строго необходимые.

    • Практика:

      # Блокировать все входящие соединения по умолчанию, разрешить ответы на исходящие
      iptables -P INPUT DROP
      iptables -P OUTPUT ACCEPT
      
      # Разрешить доступ к своим сервисам (SSH на порт 22)
      iptables -A INPUT -p tcp --dport 22 -j ACCEPT
      
      # Разрешить выход в Интернет (если это сервер, возможно потребуется и обратно)
      iptables -A OUTPUT -j ACCEPT
      
      # Сохранить правила
      service iptables save   # или команду для nftables
      
  • Разграничение сети: Если есть возможность (на уровне провайдера VPS/облака), используйте разные интерфейсы. Отдайте для внешних подключений один, а другой – "внутренний" и скрывайте его от широкой общественности.

4. Доверенные пути (PATH):

Злоумник может замаскировать опасный файл в директории, которую вы добавляете в свой $PATH. * Практика: 1. Всегда проверяйте команды с помощью полного пути (/bin/ls вместо ls) – это надежнее. 2. Не добавляйте неизвестные директории в $PATH. Убедитесь, что $PATH содержит только доверенные места, особенно для root и системных администраторов.

5. Отладка ядра (Kdump):

Диагностика проблем – дело важное, но это создает файл сжатого дампа памяти (vmcore) при сбое ядра. Этот файл может содержать очень много информации о системе и безопасности его доступа критически важна. * Практика: Настройте Kdump только для доверенных пользователей или отключите запись дампа в читаемую системой папку по умолчанию. Сместите права на /var/crash. Или используйте crash с правами root, но это уже продвинутый уровень.

6. Продвинутый: SELinux / AppArmor

Теперь самое интересное – трансляционную уровню (или Mandatory Access Control - MAC)!

  • Принцип "меньше привилегий": Представьте, что даже при запуске как root программа может делать только строго определенные действия. Это повышает безопасность.
  • Практика: SELinux (расширенный механизм в Linux) или AppArmor (более простой для начинающих, особенно в Canonical/Ubuntu).

    • Включите и настройте политику минимальных привилегий.

      # Проверить статус SELinux
      sestatus
      
      # Настроить режим enforcing (требовать строгих правил) или permissive (записывать нарушения без блокировки)
      setenforce 0   # Переместить в режим пермиссивного контроля (для тестирования!)
      setenforce 1   # Включить строгий контроль
      
      # Проверить политику для конкретной программы или сервиса
      seinfo permissive -s /path/to/file-or-service-name
      
    • Поиск уязвимостей: если программа не может выполнить свою работу (например, запущенный скрипт), значит, либо настроена неправильно, либо есть недостаток в политике. Это повод для анализа и возможного смягчения политики.

7. Дополнительные меры

  • Шифрование дисков (LUKS): Даже если кто-то получит доступ к физическому носителю, данные будут защищены.
  • Обновления безопасности: Самое важное! Всегда проверяйте наличие обновлений (yum check-update, apt-get update && apt-get upgrade) и ставьте их вовремя.
  • Аудит безопасности (auditd): Используйте утилиту auditd для записи событий, связанных с безопасностью – изменения правил sudoers, доступ к файлам конфигурации и т.д.

Вывод

Безопасность Linux – это путь постоянного обучения и внимательного настройки. Начните с базовых паролей и прав пользователя, затем настройте сети и доверенные пути, включите аудит событий и изучите принцип "меньше привилегий". По мере опыта переходите к использованию ключевых механизмов контроля доступа (SELinux/AppArmor) и тщательному монтированию файловых систем.

Следование этим основам – первый шаг к тому, чтобы ваш Linux-сервер или рабочая станция стали устойчивыми к большинству типичных атак. Начните внедрять эти практики сегодня!


Ваши дальнейшие действия:

  • Установите надежные пароли для всех пользователей.
  • Отключите прямой root-доступ по SSH (если он еще есть).
  • Проверьте порты на сервере и отключите ненужные.
  • Изучите базовую синтаксис iptables или nftables для своих нужд.

Успехов в управлении безопасностью ваших Linux-систем!

Linux через BASH: секреты эффективной автоматизации!

- Опубликовано в BASH и скрипты

Введение

Приветствуем в "Пингвиньи BASHни"! Если вы уже уверенно ориентируетесь в Linux или только начинаете свой путь в этом мире операционных систем с открытым исходным кодом, то обязательно столкнетесь с терминалом. Без терминала и его возможностей работа с Linux часто бывает неэффективной. Однако многие пользователи до сих пор выполняют команды вручную, даже если это однообразные задачи. Сегодня мы поговорим о том, как использовать BASH для автоматизации рутинных операций и повышения вашей производительности в Linux.

Читая эту статью, вы узнаете основные принципы написания скриптов на BASH, познакомитесь с полезными конструкциями и примерами скриптов, которые могут значительно упростить вашу повседневную работу с терминалом. Будем делать акцент на практическом применении знаний, чтобы вы могли сразу использовать полученные навыки в решении своих задач.


Основная часть

Что такое BASH-скрипты и зачем они нужны?

BASH (Bourne Again SHell) — это интерпретируемый язык программирования, используемый в большинстве дистрибутивов Linux. Скрипт на BASH позволяет автоматизировать выполнение последовательности команд в терминале.

Основные преимущества использования скриптов:

  • Экономия времени: Несколько повторяющихся задач можно выполнять одной командой.
  • Меньше ошибок: Ручное выполнение может привести к невнимательным ошибкам, а автоматизация их устраняет.

Пример простого скрипта:

#!/bin/bash

echo "Автоматизируем установку пакетов!"
sudo apt update && sudo apt install nginx -y

Этот скрипт обновляет список пакетов иInstalls Nginx без подтверждения. Не забудьте выполнить команду chmod +x script.sh, чтобы сделать его исполняемым.

Как создать свой первый скрипт

  1. Откройте текстовый редактор, например, nano.
  2. Начните с указания интерпретатора BASH: #!/bin/bash.
  3. Затем добавьте команды, которые вы хотите выполнять.
  4. Сохраните файл и сделайте его исполняемым.

Более подробный пример:

#!/bin/bash

# Проверка наличия необходимого пользователя
if id "username" &>/dev/null; then
    echo "Пользователь username уже существует"
else
    echo "Создаем нового пользователя..."
    sudo useradd -m -s /bin/bash username
fi

Этот скрипт проверяет наличие пользователя и создает его при отсутствии. Не забудьте заменить username на нужное имя.

Встроенные команды BASH

BASH предоставляет множество полезных команд для автоматизации:

  • for: Цикл для работы с набором значений.
  • if: Условные конструкции для проверки выполнения задач.
  • case: Многоуровневые условия выбора.
  • И многое другое!

Пример цикла for для массовой замены файлов:

#!/bin/bash

# Замена .txt на .md в текущей директории и её поддиректориях
find ./ -type f -name "*.txt" | while read file; do
    new_name="${file%*.txt}*.md"
    mv -- "$file" "$new_name"
done

Советы по улучшению продуктивности

  • Использование переменных: Это позволяет избежать дублирования кода.

    # Пример с переменными
    app="nginx"
    echo "Installs $app..."
    sudo apt install "$app" -y
    
  • Труки (tips) и лайфхаки:

    • Ctrl+R для поиска команд в истории терминала.
    • Использование функций BASH для группировки повторяющихся операций.

Заключение

BASH-скрипты — невероятно мощный инструмент, который может значительно улучшить вашу эффективность при работе с Linux. Немного усилий на изучение основных команд и конструкций позволят вам автоматизировать рутинные задачи, обновлять систему или даже создавать сложные манипуляции файлов.

Надеюсь, эта статья была полезной!

Nftables: Фаервол, который не нужно гуглить каждый раз

- Опубликовано в Гайды и мануалы

Введение

Помните тот момент, когда вам нужно было настроить простейшее правило в iptables, и вы снова и снова гуглили один и тот же синтаксис, боясь ошибиться в порядке аргументов? Если да, то встречайте nftables — современный сетевой фильтр для Linux, который призван избавить системных администраторов и энтузиастов от этих мучений.

Nftables заменил собой классическую связку iptables/ip6tables/arptables/ebtables, предложив единый, логичный и запоминающийся синтаксис. В этой статье мы разберемся, почему nftables — это тот самый фаервол, который не придется постоянно искать в поисковиках.

Справка: Nftables был представлен в ядре Linux версии 3.13 и с тех пор активно развивается, предлагая улучшенную производительность и удобство.

Основная часть

Единый синтаксис вместо зоопарка утилит

Главная боль iptables — это необходимость помнить разные утилиты для разных протоколов: iptables для IPv4, ip6tables для IPv6, arptables для ARP, ebtables для Ethernet-фреймов. Nftables объединяет всё это в одной утилите с единым синтаксисом.

Было в iptables:

# Разрешить HTTP для IPv4
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# То же самое для IPv6
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT

Стало в nftables:

# Разрешить HTTP для всех адресов (и IPv4, и IPv6)
nft add rule inet filter input tcp dport 80 accept

Обратите внимание на использование inet вместо ip или ip6 — это семейство адресов, которое работает одновременно с IPv4 и IPv6.

Человекочитаемые и логичные правила

Синтаксис nftables организован более логично и напоминает обычные предложения: "добавить правило в цепочку input семейства inet для протокола tcp с портом назначения 80 с действием accept".

Сравнение сложных правил:

Действие iptables nftables
Блокировка IP iptables -A INPUT -s 192.168.1.100 -j DROP nft add rule ip filter input ip saddr 192.168.1.100 drop
Логирование iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH attempt: " nft add rule ip filter input tcp dport 22 log prefix "SSH attempt: "

Важно: Обратите внимание, как в nftables действия (accept, drop, log) указываются в конце правила, что делает синтаксис более интуитивным.

Управление множествами и динамическими списками

Одна из мощнейших возможностей nftables — работа с множествами (sets), которые позволяют создавать динамические списки IP-адресов, портов или других элементов.

Создание и использование множества:

# Создаем множество для черного списка
nft add set inet filter blacklist { type ipv4_addr; }

# Добавляем адреса в множество
nft add element inet filter blacklist { 192.168.1.5, 192.168.1.23 }

# Используем множество в правиле
nft add rule inet filter input ip saddr @blacklist drop

Это избавляет от необходимости создавать отдельное правило для каждого блокируемого IP-адреса, как это было в iptables.

Простота управления и отладки

Nftables предлагает удобные инструменты для просмотра и управления правилами:

# Просмотреть все правила, политики и счетчики
nft list ruleset

# Просмотреть правила конкретной таблицы
nft list table inet filter

# Мониторинг в реальном времени
nft monitor

Последняя команда особенно полезна для отладки — она показывает в реальном времени все события, связанные с обработкой правил.

Совместимость с iptables

Для тех, кто не готов сразу переходить: Nftables предоставляет совместимость со старыми командами iptables через утилиты iptables-translate и ip6tables-translate, которые конвертируют правила iptables в синтаксис nftables.

Пример перевода правила: ```bash iptables-translate -A INPUT -p tcp --dport 22 -j ACCEPT

Вывод: nft add rule ip filter INPUT tcp dport 22 counter accept

Разнообразие файловых проводников в Linux.

- Опубликовано в OpenSource и софт

Введение

В мире Linux существует огромное разнообразие файловых менеджеров, каждый из которых предлагает уникальный набор функций и подход к работе с файловой системой. В отличие от проприетарных операционных систем, где пользователям обычно предлагается один встроенный файловый проводник, Linux предоставляет свободу выбора среди десятков различных вариантов. Это позволяет каждому пользователю найти инструмент, который идеально соответствует его workflow, предпочтениям и эстетическим вкусам.

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

Основная часть

Классические файловые менеджеры

Nautilus (Files)

Nautilus, также известный как GNOME Files, является файловым менеджером по умолчанию для среды рабочего стола GNOME. Он предлагает чистый и современный интерфейс с поддержкой вкладок, расширенного поиска и интеграции с облачными сервисами.

# Установка Nautilus в Ubuntu/Debian
sudo apt install nautilus

# Установка в Arch Linux
sudo pacman -S nautilus

Dolphin

Dolphin — это файловый менеджер среды KDE Plasma, известный своей высокой настраиваемостью и производительностью. Он поддерживает разделение панелей, встроенный терминал и расширенную систему предпросмотра файлов.

# Установка Dolphin в Ubuntu/Debian
sudo apt install dolphin

# Установка в Fedora
sudo dnf install dolphin

Консольные файловые менеджеры

Midnight Commander (mc)

Midnight Commander — это классический двухпанельный файловый менеджер для терминала, вдохновленный Norton Commander. Он особенно популярен среди системных администраторов и пользователей, предпочитающих работать в командной строке.

# Установка Midnight Commander
sudo apt install mc  # Ubuntu/Debian
sudo pacman -S mc    # Arch Linux
sudo dnf install mc  # Fedora

Ranger

Ranger — это современный консольный файловый менеджер с минималистичным дизайном и мощными возможностями. Он поддерживает предпросмотр файлов, быструю навигацию с помощью клавиатуры и расширяемость через плагины.

# Установка Ranger
sudo apt install ranger  # Ubuntu/Debian
sudo pacman -S ranger    # Arch Linux

Легковесные файловые менеджеры

Thunar

Thunar — это быстрый и легковесный файловый менеджер, разработанный для среды XFCE. Он отличается простотой использования и низким потреблением ресурсов, что делает его идеальным выбором для старых или маломощных компьютеров.

# Установка Thunar
sudo apt install thunar  # Ubuntu/Debian
sudo pacman -S thunar    # Arch Linux

PCManFM

PCManFM — это еще один легковесный файловый менеджер, разработанный для LXDE, но способный работать в любой среде. Он предлагает вкладки, закладки и поддержку удаленных файловых систем.

Двухпанельные файловые менеджеры

Krusader

Krusader — это продвинутый двухпанельный файловый менеджер для KDE, вдохновленный Total Commander и Midnight Commander. Он предлагает мощные функции для управления файлами, включая встроенные инструменты для синхронизации, сравнения и пакетной обработки.

# Установка Krusader
sudo apt install krusader  # Ubuntu/Debian
sudo pacman -S krusader    # Arch Linux

Double Commander

Double Commander — это кроссплатформенный двухпанельный файловый менеджер с открытым исходным кодом, написанный на Lazarus. Он поддерживает плагины, вкладки и различные инструменты для работы с файлами.

Сравнение файловых менеджеров

В таблице ниже представлено сравнение некоторых популярных файловых менеджеров Linux:

Менеджер Тип Среда Особенности
Nautilus Графический GNOME Интеграция с GNOME, облачные сервисы
Dolphin Графический KDE Высокая настраиваемость, встроенный терминал
Midnight Commander Консольный Любая Двухпанельный интерфейс, классический дизайн
Ranger Консольный Любая Минимализм, предпросмотр файлов
Thunar Графический XFCE Легковесный, простой интерфейс
Krusader Графический KDE Двухпанельный, расширенные функции

Совет: Не бойтесь экспериментировать с разными файловыми менеджерами. Многие пользователи Linux в конечном итоге используют несколько файловых менеджеров для разных задач.

Настройка и кастомизация

Большинство файловых менеджеров в Linux предлагают широкие возможности настройки. Вы можете изменять темы, добавлять новые функции через плагины и настраивать сочетания клавиш для ускорения workflow.

# Пример настройки Ranger через конфигурационные файлы
mkdir -p ~/.config/ranger
ranger --copy-config=all

Заключение

Разнообразие файловых проводников в Linux — это одно из главных преимуществ этой операционной системы. От мощных графических менеджеров с современными интерфейсами до легковесных консольных утилит — каждый пользователь может найти инструмент, который идеально соответствует его потребностям и предпочтениям.

Исследование различных файловых менеджеров не только повысит вашу продуктивность, но и поможет лучше понять философию Linux, где пользовательский выбор и кастомизация являются ключевыми принципами. Не ограничивайтесь стандартными решениями — экспериментируйте и находите те инструменты, которые делают вашу работу с файлами максимально эффективной и удобной.

Настройка сети в Netplan: простое руководство

- Опубликовано в Гайды и мануалы

Netplan — это утилита для настройки сети в современных дистрибутивах Linux (Ubuntu 18.04+, Debian и др.), которая использует YAML-конфигурации для управления сетевыми интерфейсами.

Основные понятия

Файлы конфигурации Netplan находятся в /etc/netplan/ и имеют расширение .yaml. После изменения конфигурации нужно применить изменения командой:

sudo netplan apply
Примечание: Для тестирования конфигурации без применения можно использовать команду sudo netplan try, которая откатит изменения через 120 секунд, если соединение не подтверждено.

Примеры конфигураций

1. Динамический IP (DHCP)

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: true
      dhcp6: true

2. Статический IP-адрес

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

3. Настройка Wi-Fi

network:
  version: 2
  renderer: NetworkManager
  wifis:
    wlp2s0:
      access-points:
        "SSID_вашей_сети":
          password: "ваш_пароль"
      dhcp4: true
Важно: Для Wi-Fi нужно указать renderer: NetworkManager, так как networkd не поддерживает беспроводные соединения.

Полезные команды

  • ip a — список сетевых интерфейсов
  • sudo netplan generate — проверить синтаксис конфигурации
  • sudo netplan --debug apply — применить с отладочным выводом

Заключение

Netplan предоставляет простой и понятный способ настройки сети в современных Linux-системах. YAML-синтаксис делает конфигурации читаемыми и легко редактируемыми.

Для более сложных сценариев (VLAN, мосты, bonding) обратитесь к официальной документации Netplan.

NixOS: революционный дистрибутив, который изменит ваше представление о Linux

- Опубликовано в Дистрибутивы

История создания: как функциональное программирование захватило Linux


2003 год: рождение Nix

Голландский учёный Элко Долстра (Eelco Dolstra) начинает разработку Nix — системы управления пакетами, вдохновлённой функциональными языками (Haskell).
Идея: Каждый пакет хранится в изолированном каталоге с хешем всех зависимостей, что исключает конфликты версий.

2004–2010: от пакетного менеджера к ОС

  • Nix эволюционирует в полноценный дистрибутив — NixOS.
  • Первый стабильный релиз выходит в 2015 году.

2020-е: рост популярности

  • NixOS используют в Google, Shopify, NASA для воспроизводимых сборок.
  • Сообщество активно развивает инфраструктуру: 30 000+ пакетов в репозитории.

Философия:

«Конфигурация как код, атомарные обновления и полная воспроизводимость».


Плюсы NixOS: почему это будущее?

1. Декларативная конфигурация

Вся система (от ядра до программ) описывается в одном файле /etc/nixos/configuration.nix:

{ config, pkgs, ... }:  
{
  environment.systemPackages = [ pkgs.firefox pkgs.git ];  
  services.openssh.enable = true;  
}  

Что даёт:
- Версионность конфигов (как Git для системы).
- Возможность отката к любой прошлой версии.

2. Воспроизводимость

  • Одинаковая конфигурация = идентичная система на любом железе.
  • Можно клонировать среду разработки командой:
    nix-shell -p python3.11 git gcc

3. Надёжность

  • Обновления не ломают систему: новые пакеты не перезаписывают старые.
  • Откат одной командой:
    bash sudo nixos-rebuild switch --rollback

4. Изоляция пакетов

  • Каждый пакет живёт в своём /nix/store/xxxx-path, что исключает DLL Hell.
  • Можно одновременно иметь несколько версий одной программы.

5. Поддержка множества платформ

  • x86_64, ARM, Darwin (macOS) — один конфиг для всех.
  • Даже Docker-образы собираются через Nix.

Минусы NixOS: цена уникальности

1. Крутая кривая обучения

  • Синтаксис Nix (функциональный DSL) пугает новичков.
  • Привычные apt/dnf не работают — только nix-env и nix-shell.

2. Несовместимость с традиционными пакетами

  • .deb/.rpm нельзя установить «как есть».
  • Некоторые проприетарные программы требуют костылей (например, Steam).

3. Ограниченная документация

  • Мануалы часто предполагают знание Nix.
  • Сообщество меньше, чем у Ubuntu или Arch.

4. Долгая сборка

  • Первая установка пакетов может занимать часы (если нет бинарных кэшей).

Кому подойдёт NixOS?

DevOps-инженеры (воспроизводимость > скорость).
Разработчики (изолированные среды для каждого проекта).
Параноики безопасности (никаких скрытых зависимостей).
Энтузиасты (если хочется «Linux нового уровня»).

Кому не подойдёт:
✖ Новички (пока не освоили базовый Linux).
✖ Геймеры (проблемы с драйверами и Proton).
✖ Те, кто любит «классические» дистрибутивы.


Интересные факты

  • Nixpkgs — самый большой в мире источник пакетов (больше, чем AUR!).
  • В NixOS нет /usr/bin — все программы лежат в /nix/store.
  • Конфиг можно разместить на GitHub и разворачивать систему в 1 команду.

Что в итоге?

NixOS — это эксперимент, который удался. Он не для всех, но для тех, кто ценит контроль и воспроизводимость, это идеальный выбор.

# Ваша первая команда в NixOS:
nix-shell -p hello --run "hello"
Страница 2 of 3