Linux для чайника
19.6K subscribers
86 photos
4 files
79 links
Linux
- Разбор утилит / инструментов
- Новости / факты
- Опросы для проверки знаний, навыков
и многое другое.

Только по вопросам сотрудничества: @altmainf

Регистрация в перечне РКН https://clck.ru/3EpL9L
Download Telegram
Работаем с сетью в терминале Linux

1. Проверка сетевого интерфейса
ifconfig: Показывает информацию о сетевых интерфейсах (в некоторых дистрибутивах может быть заменен на ip a).
ip a: Современная команда для отображения информации о сетевых интерфейсах.

2. Настройка сетевого интерфейса
ip link set <interface> up: Включить интерфейс.
ip link set <interface> down: Выключить интерфейс.
ip addr add <ip_address>/<subnet_mask> dev <interface>: Добавить IP-адрес к интерфейсу.
ip addr del <ip_address>/<subnet_mask> dev <interface>: Удалить IP-адрес с интерфейса.

3. Проверка соединения
ping <hostname/IP>: Проверка доступности узла.
traceroute <hostname/IP>: Определение маршрута до узла.
mtr <hostname/IP>: Комбинация ping и traceroute для более детального анализа.

4. Проверка маршрутизации
route -n: Показать таблицу маршрутизации.
ip route: Современная команда для отображения таблицы маршрутизации.

5. DNS
nslookup <hostname>: Получение информации о DNS.
dig <hostname>: Более мощный инструмент для работы с DNS.

6. Сетевые соединения

netstat -tuln: Показывает открытые порты и слушающие сервисы.
ss -tuln: Современная альтернатива netstat для отображения сетевых соединений.

7. Сетевые утилиты
curl <url>: Отправка HTTP-запросов и получение данных.
wget <url>: Загрузка файлов из интернета.

8. Мониторинг сети
iftop: Мониторинг трафика в реальном времени.
nload: Отображение входящего и исходящего трафика.

9. Firewall
iptables: Настройка правил брандмауэра (может быть заменен на nftables в новых системах).
ufw: Упрощенный интерфейс для управления брандмауэром.
Работаем с текстом в редакторе nano

Запуск nano
Чтобы открыть файл в редакторе nano, используем команду: nano имя_файла
Если файл не существует, nano создаст новый файл с указанным именем.

Основные команды
В nano большинство команд выполняются с помощью сочетаний клавиш. Клавиши управления обычно находятся внизу экрана.

Основные сочетания клавиш:
Ctrl + O: Сохранить файл (появится запрос на подтверждение имени файла).
Ctrl + X: Выйти из редактора. Если файл был изменен, nano предложит сохранить изменения.
Ctrl + W: Найти текст в файле.
Ctrl + K: Вырезать текущую строку.
Ctrl + U: Вставить вырезанную строку.
Ctrl + J: Выравнивание текста.
Ctrl + T: Проверка орфографии (если поддерживается).

Навигация
Стрелки вверх/вниз/влево/вправо: Перемещение по тексту.
Ctrl + A: Перейти в начало строки.
Ctrl + E: Перейти в конец строки.
Ctrl + : Перейти к определенной строке (появится запрос на ввод номера строки).

Работа с текстом
Ctrl + ^: Начать выделение текста (первое нажатие фиксирует позицию).
Ctrl + K: Вырезать выделенный текст.
Ctrl + U: Вставить текст, вырезанный ранее.

Сохранение и выход
1. После редактирования файла нажмите Ctrl + O для сохранения.
2. Подтвердите имя файла, нажав Enter.
3. Чтобы выйти, нажмите Ctrl + X. Если вы не сохранили изменения, nano предложит сохранить их.
Используем awk для обработки логов

Условие: Нужно извлечь все IP-адреса из лог-файла /var/log/apache2/access.log и подсчитать, сколько раз каждый IP-адрес встречается.

Решение:

awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr

Пояснение:

• awk '{print $1}': выводит первый столбец (IP-адрес) из каждой строки лог-файла.
• sort: сортирует список IP-адресов.
• uniq -c: подсчитывает количество уникальных IP-адресов.
• sort -nr: сортирует по убыванию числа встреч.
Используем rsync для синхронизации директорий

Условие: Синхронизировать локальный каталог /home/user/backup с удалённым сервером по адресу remote.example.com, сохраняя структуру каталогов и файлы.

Решение:

rsync -avz /home/user/backup/ user@remote.example.com:/home/user/backup/


Пояснение:

• rsync: утилита для синхронизации файлов.
• -a: архивный режим, сохраняет права и структуру каталогов.
• -v: подробный вывод о процессе.
• -z: сжатие данных при передаче.
Используем chroot для создания изолированного окружения

Условие: Создать chroot-окружение для пользователя testuser в каталоге /home/testuser/jail.

Решение:

sudo chroot /home/testuser/jail /bin/bash


Пояснение:

• chroot: меняет корневой каталог для текущего процесса.
• /home/testuser/jail: путь к изолированному окружению.
• /bin/bash: запускает bash в новом окружении.
Используем iptables для ограничения доступа

Условие: Ограничить доступ к серверу по порту 22 только для IP-адреса 192.168.1.100.

Решение:

sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT

sudo iptables -A INPUT -p tcp --dport 22 -j REJECT


Пояснение:

• -A INPUT: добавляет правило для входящих соединений.
• -p tcp --dport 22: правило для порта 22 (SSH).
• -s 192.168.1.100: разрешает доступ только с указанного IP.
• -j ACCEPT: разрешить соединение.
• -j REJECT: отклоняет все остальные соединения.
Используем lvm для создания тома

Условие: Создать новый логический том (LV) размером 10ГБ на физическом томе (PV), который находится в группе томов (VG) myvg.

Решение:

sudo lvcreate -L 10G -n mylv myvg


Пояснение:

• lvcreate: утилита для создания логического тома.
• -L 10G: указывает размер нового тома.
• -n mylv: имя нового логического тома.
• myvg: имя группы томов.
Устанавливаем и настраиваем RAID-массив

Задача: Создать RAID-массив из трех дисков и настроить его для повышения производительности и надежности.

Решение:

• Установите пакет mdadm и создайте RAID-массив:
sudo apt-get install mdadm
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1


• Настройте RAID-массив:
sudo mdadm --detail /dev/md0
sudo mdadm --examine /dev/sda1


• Добавьте RAID-массив в /etc/fstab для автоматического монтирования:
sudo echo "/dev/md0 /mnt/raid ext4 defaults 0 0" >> /etc/fstab

• Перезагрузите систему и проверьте RAID-массив:
sudo reboot
sudo mdadm --detail /dev/md0
Настраиввем сети и DNS

Задача: Настроить сеть и DNS для доступа к интернету и внутренним ресурсам.

Решение:

• Установите пакет network-manager и настройте сеть:
sudo apt-get install network-manager
sudo nmcli con add type ethernet con-name "Сеть" ifname eth0


• Настройте DNS:
sudo echo "nameserver 8.8.8.8" >> /etc/resolv.conf
sudo echo "nameserver 8.8.4.4" >> /etc/resolv.conf


• Проверьте доступ к интернету и внутренним ресурсам:
ping google.com
ping внутренний сервер
Настраиваем файрвол

Задача: Настроить файрвол для защиты системы от несанкционированного доступа.

Решение:

• Установите пакет ufw и настройте файрвол:
sudo apt-get install ufw
sudo ufw enable


• Добавьте правила файрвола:
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https


• Проверьте статус файрвола:
sudo ufw status
Настраиваем систему мониторинга

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

Решение:

• Установите пакет nagios и настройте систему мониторинга:
sudo apt-get install nagios
sudo nano /etc/nagios/nagios.cfg


• Добавьте конфигурацию системы мониторинга:
# Define the Nagios server
define host{
host_name nagios
alias Nagios Server
address 127.0.0.1
}


• Перезагрузите систему мониторинга и проверьте доступ к ресурсам:
sudo service nagios restart
curl http://example.com/nagios
Команды обновления

apt:
apt update: обновляет список пакетов ПО.
apt upgrade: обновляет пакеты ПО до последней версии.
apt dist-upgrade: обновляет пакеты ПО до последней версии и удаляет устаревшие пакеты.

yum:
yum update: обновляет пакеты ПО до последней версии.
yum upgrade: обновляет пакеты ПО до последней версии и удаляет устаревшие пакеты.

dnf:
dnf update: обновляет пакеты ПО до последней версии.
dnf upgrade: обновляет пакеты ПО до последней версии и удаляет устаревшие пакеты.

zypper:
zypper update: обновляет пакеты программного обеспечения до последней версии.
zypper upgrade: обновляет пакеты программного обеспечения до последней версии и удаляет устаревшие пакеты.

Решение проблем

• Если получаете ошибку при обновлении пакетов ПО, попробуйте использовать команду apt --fix-broken install или yum --fix-broken.
• Если получаете ошибку при установке пакета ПО, попробуйте использовать команду apt --fix-missing install или yum --fix-missing.
• Если получаете ошибку при удалении пакета ПО, попробуйте использовать команду apt --purge remove или yum --purge.
Используем systemd для создания пользовательской службы

Условие: Создать пользовательскую службу, которая будет запускать скрипт /home/user/myscript.sh при старте системы.

Решение:

Создайте файл службы:
sudo nano /etc/systemd/system/myscript.service

Запишите в файл:
[Unit]
Description=My custom script

[Service]
ExecStart=/bin/bash /home/user/myscript.sh
Restart=always

[Install]
WantedBy=multi-user.target


Активируйте службу:
sudo systemctl enable myscript.service
sudo systemctl start myscript.service


Пояснение:

• [Unit]: раздел для описания службы.
• [Service]: определяет команды для запуска службы.
• ExecStart: путь к исполняемому файлу или скрипту.
• Restart=always: служба будет перезапущена в случае сбоя.
• [Install]: указывает, при каких условиях служба должна быть активирована.
Автоматизация обновлений

Задача: Напишите Bash-скрипт, который будет автоматически обновлять систему и очищать ненужные пакеты.

Решение:

#!/bin/bash
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y


Пояснение: Этот скрипт обновляет список пакетов, устанавливает обновления и удаляет ненужные пакеты с подтверждением (-y).
Парсинг логов с использованием awk

Задача: Из файла /var/log/auth.log выведите все IP-адреса, которые пытались подключиться к SSH, и подсчитайте, сколько раз каждый IP встречается.

Решение:

awk '/Failed password/ {print $(NF-3)}' /var/log/auth.log | sort | uniq -c | sort -nr


Пояснение:
awk ищет строки с "Failed password" и выводит поле с IP (обычно предпоследнее поле). Затем сортируем, считаем уникальные вхождения и сортируем по убыванию.
Отслеживание изменений в каталоге

Задача: Используйте inotifywait для мониторинга каталога /tmp/watchdir и выводите сообщение при любом изменении.

Решение:

inotifywait -m /tmp/watchdir -e create -e modify -e delete |
while read path action file; do
echo "Файл $file в $path был $action"
done


Пояснение:
inotifywait с опцией -m следит за событиями создания, изменения и удаления файлов в каталоге. Цикл выводит подробности о событии.
Рекурсивное переименование файлов

Задача: Переименуйте все .txt файлы в каталоге /docs и подкаталогах, добавив префикс old_.

Решение:

find /docs -type f -name "*.txt" -exec bash -c 'mv "\$0" "$(dirname "\$0")/old_$(basename "\$0")"' {} \;


Пояснение:
find ищет файлы и запускает команду mv для переименования с добавлением префикса.
Работа с сокетами в Bash

Задача: Создайте TCP-сервер на порту 12345, который отвечает "Hello" каждому подключению.

Решение:

while true; do
echo -e "HTTP/1.1 200 OK\r\n\r\nHello" | nc -l -p 12345
done


Пояснение:
nc (netcat) слушает порт и отправляет ответ при подключении.
Сравнение двух директорий

Задача: Найдите файлы, которые есть в /dir1, но отсутствуют в /dir2.

Решение:

comm -23 <(ls /dir1 | sort) <(ls /dir2 | sort)


Пояснение:
comm сравнивает отсортированные списки, выводит уникальные для первого каталога.
Сортировка и удаление повторяющихся строк

Использование команд sort и uniq вместе помогут отсортировать и удалить повторяющиеся строки в файле и вывести результат в терминал.

Для этого можно воспользоваться командой:
sort file.txt | uniq

Чтобы сохранить результат в отдельный файл:
sort file.txt | uniq > output.txt