Linux‑Админ 101: от терминала до мастера

- Опубликовано в Администрирование

Введение

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

В этой статье мы разберём основные шаги, которые помогут вам перейти от простого пользователя терминала к полноценному Linux‑администратору. Мы будем использовать Markdown‑форматирование: заголовки, списки, кодовые блоки и таблицы, чтобы материал был как информативным, так и удобочитаемым.


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

1. Знакомство с терминалом

Терминал – это главный инструмент администрирования Linux. Он позволяет выполнять команды, управлять файлами, просматривать логи и многое другое.

# Проверяем версию ядра
uname -r

# Список файлов в текущей директории
ls -la

Подсказка: Используйте автодополнение (Tab) для ускорения работы с командами.

2. Управление пакетами

В разных дистрибутивах используются разные менеджеры пакетов: apt (Debian/Ubuntu), yum/dnf (CentOS/RHEL/Fedora), pacman (Arch).

Дистрибутив Менеджер пакетов Пример установки
Ubuntu apt sudo apt install nginx
CentOS 7 yum sudo yum install httpd
Fedora dnf sudo dnf install apache
Arch pacman sudo pacman -S nginx
# Обновляем список пакетов и сами пакеты (Ubuntu)
sudo apt update && sudo apt upgrade

# Устанавливаем пакет (CentOS 7)
sudo yum install vim

3. Конфигурирование сетевых интерфейсов

Ниже пример настройки статического IP‑адреса в Ubuntu через файл /etc/netplan/01-netcfg.yaml.

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

После изменения файла применяем:

sudo netplan apply

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

Создание пользователя, добавление в группу и установка прав.

# Добавляем нового пользователя
sudo useradd -m -s /bin/bash alice

# Устанавливаем пароль
sudo passwd alice

# Добавляем пользователя в группу sudo
sudo usermod -aG sudo alice

Права доступа можно управлять через chmod и chown.

# Делаем файл исполняемым для всех
chmod +x script.sh

# Меняем владельца файла
chown root:root /etc/ssh/sshd_config

5. Управление службами с systemd

Система управления сервисами systemd позволяет контролировать запуск, остановку и статус услуг.

# Проверка статуса службы nginx
sudo systemctl status nginx

# Перезапуск службы
sudo systemctl restart nginx

# Включение автозапуска при загрузке
sudo systemctl enable nginx

6. Мониторинг и логирование

Основные инструменты: top, htop, journalctl, syslog.

# Просмотр системного журнала за последние 100 строк
sudo journalctl -n 100

# В реальном времени отслеживаем нагрузку на CPU
top

7. Безопасность и бэкапы

  • SSH: Настройте ключи, отключите логин по паролю.
  • Firewall: ufw (Ubuntu) или firewalld (CentOS).
  • Резервные копии: rsync, tar, облачные решения.
# Открываем порт 22 в UFW
sudo ufw allow 22/tcp

# Создаём резервную копию каталога /var/www
tar -czf www_backup_$(date +%F).tar.gz /var/www

Заключение

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

Помните: чем больше вы экспериментируете в тестовой среде, тем увереннее будете работать на продакшене. Удачи в ваших Linux‑приключениях!

Бэкап без паники: простые правила, которые спасут ваш Linux

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

Введение

В мире Unix‑подобных систем надежность и предсказуемость — это не просто слова. Хакеры, сбои оборудования и человеческие ошибки делают резервное копирование одной из самых важных задач администрирования. Однако многие считают её сложной, дорогой или даже бессмысленной. В этой статье мы разберём простой набор правил, которые позволят вам создавать надёжные бэкапы без лишней паники.

⚠️ Важно: резервное копирование — это не «плюс‑или‑минус» в настройках, а обязательная часть стратегии выживания вашего сервера. Если вы читаете эту статью до того, как потеряете данные, значит, вам всё ещё удаётся держать ситуацию под контролем.


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

1️⃣ Выберите правильный инструмент

Не каждый бэкап‑скрипт одинаково удобен. Рассмотрим три популярных утилиты и когда их использовать.

Утилита Плюсы Минусы Лучшее применение
rsync Быстрый, delta‑копирование Нет встроенного шифрования Локальные резервные копии / синхронизация каталогов
tar Универсальный формат, легко переносить Не поддерживает инкремент в нативном виде Создание архивов для офлайн-репозитория
duplicity Инкремент + шифрование Требует Python, может быть медленным Полноценные резервные копии с удалённым хранением
# Пример простого rsync‑бэкапа
rsync -avz --delete /var/www/ backup@example.com:/mnt/backups/

🔧 Tip: Используйте --backup-dir для создания “снимков” старых файлов, чтобы быстро откатиться в случае ошибки.


2️⃣ Делайте инкрементные бэкапы

Инкрементный режим экономит место и время. Как это работает?

  1. Полный (Full) – резервирует всё.
  2. Дифференциальный – копирует только изменения с последнего полного бэкапа.
  3. Инкрементальный – копирует только изменения с последнего любого бэкапа.

📌 Совет: храните минимум два полных бэкапа и несколько инкрементов между ними.

# Пример команды для duplicity (инкремент)
duplicity /home/user sftp://backup@example.com/home_user_backup/

3️⃣ Автоматизируйте с помощью cron

Планировщик задач – ваш лучший друг. Создаём простую задачу, которая будет запускать скрипт каждый день в 02:00.

# crontab -e
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

backup.sh может содержать несколько команд из предыдущих пунктов, а также проверку завершения работы:

#!/bin/bash
set -e

# Полный бэкап раз в неделю
if [ $(date +%u) -eq 1 ]; then
    rsync -avz --delete /var/www/ backup@example.com:/mnt/backups/
fi

# Инкрементальный каждый день
duplicity /home/user sftp://backup@example.com/home_user_backup/

4️⃣ Храните резервные копии в разных местах

Ни один сервер не может быть полностью защищён, если всё хранится в одном месте. Правило «3-2-1»:

Количество копий Формат хранения Где
≥ 3 Полный/инкремент Локальный диск
≥ 2 Инкремент Сетевой NAS / SAN
1 Крипт. резерв Облачное хранилище (S3, Google Cloud)
# Пример копирования в облако с помощью rclone
rclone copy backup:/mnt/backups/ remote:linux-backup/

🚨 Важно: убедитесь, что ключи шифрования не находятся на том же сервере, где хранятся бэкапы.


5️⃣ Проверяйте целостность резервных копий

Создавайте регулярные тесты восстановления. Это можно автоматизировать с помощью testbackup.sh.

#!/bin/bash
set -e

# Восстановление из последнего инкремента
duplicity --restore /home/user /tmp/test_restore/

# Сравнение контрольных сумм
tar -cf - /var/www | sha256sum > /tmp/sha_original
cat /tmp/test_restore/www.tar.gz | tar -xf - -O | sha256sum > /tmp/sha_restored

diff /tmp/sha_original /tmp/sha_restored && echo "✅ Проверка пройдена" || echo "❌ Не совпадают!"

Запускайте этот скрипт еженедельно в отдельном cron‑задании.


6️⃣ Документируйте и храните план восстановления

Код без документации – это просто код. Создайте README.md рядом с вашими скриптами:

# План восстановления Linux

## Требования
- SSH доступ к серверу: backup@example.com
- rclone настроен для remote:linux-backup

## Полный бэкап
`rsync -avz --delete /var/www/ backup@example.com:/mnt/backups/`

## Инкрементальный
`duplicity /home/user sftp://backup@example.com/home_user_backup/`

## Восстановление
1. Подключитесь к серверу.
2. Выполните `./restore.sh`.
3. Проверьте логи в `/var/log/backup.log`.


Заключение

Резервное копирование — это не просто копирование файлов, а системный подход к защите данных. Если вы:

  • выберете надёжный инструмент,
  • будете делать инкрементные бэкапы,
  • автоматизируете процессы с cron,
  • храните данные в разных местах и
  • регулярно проверяете их целостность,

то паника при потере данных останется только в теории.

💡 Последний совет: держите ваш резервный скрипт в системе контроля версий (Git) и периодически обновляйте его, чтобы он оставался актуальным даже после обновлений ОС.

Соблюдая простые правила, вы превратите бэкап‑процесс из источника стресса в надёжный «защитник» вашего Linux‑серверов. 🚀

Fail2Ban-мания: как превратить плохие IP‑и в несуществующие

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

Введение

В мире кибербезопасности каждый сервер – это целая арена битвы с ботами, скриптами‑сканерами и взломщиками. Самый простой способ дать им «сделать вид, что они не существуют» — это настроить Fail2Ban. Это инструмент, который автоматически блокирует IP‑адреса после серии неудачных попыток входа в систему. В этой статье мы разберём, как превратить «плохие» IP‑и в простые «неexistent» с помощью Fail2Ban: от базовой установки до продвинутой конфигурации и мониторинга.


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

1️⃣ Установка и первичная настройка

Fail2Ban поставляется в большинстве репозиториев Linux. На Debian/Ubuntu:

sudo apt update
sudo apt install fail2ban

На CentOS/RHEL:

sudo yum install epel-release
sudo yum install fail2ban

После установки проверьте статус сервиса:

sudo systemctl status fail2ban

Если всё в порядке, включите автозапуск:

sudo systemctl enable fail2ban

2️⃣ Понимание «Jail» и «Filter»

Fail2Ban состоит из двух ключевых компонентов: - Filter – регулярные выражения, которые ищут подозрительные строки в логах. - Jail – правила, связывающие фильтры с сервисами и определяющие пороги блокировки.

Файлы находятся в /etc/fail2ban/. Основной конфиг fail2ban.conf, но большинство настроек меняется в файле jail.local.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Пример простого фильтра (ssh)

Файл /etc/fail2ban/filter.d/sshd.conf уже существует, но вы можете добавить собственные правила. Например:

[Definition]
failregex = ^%(__prefix_line)sFailed password for .* from <HOST> port \d+ ssh2$
ignoreregex =

3️⃣ Настройка стандартного «ssh» jail

В jail.local добавьте или отредактируйте раздел:

[sshd]
enabled = true
port    = ssh
filter  = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600      # 1 час
findtime = 600     # 10 минут

Что означает каждый параметр?

Параметр Значение Описание
maxretry 5 Количество неудачных попыток, после которых IP блокируется.
bantime 3600 Время блокировки в секундах.
findtime 600 Период времени, в течение которого учитываются попытки.

4️⃣ Добавление кастомных Jail для Nginx

Если вы хотите защитить веб‑сервер, создайте новый файл /etc/fail2ban/jail.d/nginx.local:

[nginx-http-auth]
enabled  = true
port     = http,https
filter   = nginx-http-auth
logpath  = /var/log/nginx/access.log
maxretry = 3
bantime  = 7200      # 2 часа

Файл фильтра /etc/fail2ban/filter.d/nginx-http-auth.conf:

[Definition]
failregex = ^<HOST> -.*"(GET|POST).*HTTP/1.[01]" (401|403)
ignoreregex =

5️⃣ Тестирование и мониторинг

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

sudo systemctl restart fail2ban

Проверка статуса конкретного jail:

sudo fail2ban-client status sshd

Вывод покажет количество заблокированных IP‑ов и их список.

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

Для непрерывного наблюдения можно использовать fail2ban-client с опцией log:

sudo fail2ban-client log

6️⃣ Расширенные возможности: интеграция с iptables / nftables

Fail2Ban автоматически добавляет правила в iptables. Если вы используете nftables, включите поддержку:

[DEFAULT]
banaction = nftables-multiport

Создайте файл nftables-multiport в /etc/fail2ban/action.d/, если его нет.

7️⃣ Удаление IP‑ов вручную

Если вы случайно заблокировали доверенный IP, разблокируйте его:

sudo fail2ban-client set sshd unbanip <IP-адрес>

Заключение

Fail2Ban — это простое и мощное решение для защиты серверов от массовых атак. Правильно настроенные «jail» и фильтры позволяют автоматически превращать агрессивные IP‑адреса в несуществующие: они просто остаются заблокированными, пока злоумышленник не сдастся.

С учётом гибкости конфигурации, интеграции с различными системами фильтрации (iptables, nftables) и возможности расширения через собственные правила, Fail2Ban становится незаменимым инструментом в арсенале любого администратора.

Готовы к защите? Настройте Fail2Ban сегодня, а завтра будете благодарны за спокойный сон!

Основы безопасности 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, где пользовательский выбор и кастомизация являются ключевыми принципами. Не ограничивайтесь стандартными решениями — экспериментируйте и находите те инструменты, которые делают вашу работу с файлами максимально эффективной и удобной.

10 команд терминала, которые сделают вас чуть менее "noob"

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

Введение

Вы только что открыли терминал и видите перед собой чёрное окно с мигающим курсором? Не паникуйте! Терминал — это не страшно, а даже удобно. Вот 10 базовых команд, с которых стоит начать, чтобы не тыкать в GUI как потерянный пингвин.

(P.S. Все команды проверены — ваш компьютер не взорвётся. Но sudo всё равно используйте осторожно.)


1. pwd — «Где я?»

Что делает: Показывает текущую директорию (Print Working Directory).
Зачем: Чтобы не заблудиться в своих же файлах.

pwd 
Вывод: /home/ваш_пользователь

2. ls — «Что тут лежит?»

Что делает: Выводит список файлов и папок в текущей директории.
Лайфхак:
- ls -l — подробный список (права, владелец, размер).
- ls -a — показать скрытые файлы (те, что начинаются с точки).

ls
Вывод: Документы Загрузки Картинки  

3. cd — «Перейди туда»

Что делает: Меняет текущую директорию (Change Directory).
Примеры:

cd ~/Загрузки  Перейти в папку "Загрузки"  
cd ..          На уровень выше  
cd /           В корень системы (осторожно!)  

4. mkdir — «Создай папку»

Что делает: Создаёт новую директорию.
Фишка: Можно создать несколько вложенных папок сразу:

mkdir -p проект/{документы,скрипты,бэкапы}  

5. touch — «Создай файл»

Что делает: Создаёт пустой файл (или обновляет дату изменения существующего).

touch readme.txt  

6. cp — «Скопируй это»

Что делает: Копирует файлы и папки.
Важно: Для папок нужен флаг -r (рекурсивно).

cp файл.txt копия_файла.txt  
cp -r папка/ новая_папка/  

7. mv — «Перемести или переименуй»

Что делает: Перемещает файлы/папки или переименовывает их.

mv старый.txt новый.txt      Переименование  
mv файл.txt ~/Документы/    Перемещение  

8. rm — «Удали это (навсегда!)»

Что делает: Удаляет файлы и папки. Без корзины!
Осторожно:
- rm -r папка — удалить папку и всё внутри.
- rm -f — принудительно (без подтверждения).

(Запомните: sudo rm -rf / — это смерть. Не делайте так!)

9. cat — «Покажи содержимое»

Что делает: Выводит содержимое файла в терминал.

cat файл.txt  

Альтернативы:
- less файл.txt — для больших файлов (листать клавишами ↑↓).
- head -n 5 файл.txt — показать первые 5 строк.

10. man — «Справка»

Что делает: Показывает официальную документацию по команде.

man ls  Справка по команде ls  

Если man пугает:
- команда --help — краткая справка.


Бонус для смелых
Попробуйте ввести это:

neofetch  

…и ваш терминал покажет красивую информацию о системе. Если команды нет — установите её например на debian схожие дистрибутивы (sudo apt install neofetch).