У цьому посібнику ми наведемо основні концепції та команди, які мають значення для адміністрування сервера Linux.
1. Розуміння файлової системи Linux
Файлова система Linux є ієрархічною і починається з кореневого каталогу /. Нижче наведено деякі важливі каталоги та їх призначення:
- /bin – містить основні файли команд. (наприклад: ls, cp).
- /etc - конфігураційні файли для системи.
- /home - домашні каталоги користувачів.
- /var - різні файли даних, такі як журнали.
- /usr - програми користувача та бібліотеки.
Корисні команди:
pwd: Відображає поточний робочий каталог.
pwd
ls: Список файлів та каталогів.
ls
cd: Змінює каталог.
cd /etc
2. Основні команди Linux
Ось кілька основних команд, які повинен знати кожен адміністратор Linux:
cat: Показати вміст файлу.
cat /etc/passwd
cp: Копіювати файли.
cp file1.txt /home/user/file2.txt
mv: Переміщувати або перейменовувати файли.
mv file1.txt /home/user/file1-renamed.txt
rm: Видалити файли або каталоги.
rm file1.txt
mkdir: Створити новий каталог.
mkdir /home/user/newdir
3. Керування користувачами та групами
Керування користувачами та групами — ключова частина адміністрування сервера для забезпечення контролю доступу.
Створити нового користувача:
sudo adduser username
Видалити користувача:
sudo deluser username
Створити нову групу:
sudo groupadd newgroup
Додати користувача до групи:
sudo usermod -aG groupname username
Перевірити поточних користувачів:
who
4. Права доступу та власники файлів
Файли та каталоги Linux мають певні дозволи для власників, груп та інших осіб.
Format:
- r = читання
- w = запис
- x = виконання (для файлів)/пошук (для каталогів)
Переглянути права доступу до файлів та каталогів:
ls -l
Змінити права доступу до файлу:
chmod 755 filename
Змінити власника файлу:
sudo chown newowner:newgroup filename
5. Управління процесами
Розуміння процесів та їх контроль мають вирішальне значення для продуктивності та усунення неполадок.
Перегляд запущених процесів:
ps aux
Моніторинг процесів у реальному часі:
top
Завершити процес:
kill <PID>
Фоновий процес:
<command> &
6. Моніторинг системи
Моніторинг продуктивності системи необхідний для адміністрування сервера.
Перевірка використання диска:
df -h
Перевірка використання пам'яті:
free -m
Перегляд системних журналів:
tail -f /var/log/syslog
7. Мережеві команди
Сервери Linux потребують ефективного налаштування мережі та усунення несправностей. Ось деякі основі мережеві команди:
Перевірити налаштування мережного інтерфейсу:
ip a
Пінг віддаленого сервера:
ping google.com
Display network routing table:
route -n
Перевірка відкритих портів:
netstat -tuln
Завантажити файл за допомогою wget:
wget http://example.com/file.tar.gz
8. Керування пакетами
У дистрибутивах Linux використовуються різні менеджери пакетів для встановлення, оновлення та видалення програмного забезпечення.
Для систем на базі Debian (наприклад, Ubuntu):
Оновити списки пакетів:
sudo apt update
Встановити пакет:
sudo apt install package_name
Видалити пакет:
sudo apt remove package_name
Для систем на базі Red Hat (наприклад, CentOS, AlmaLinux):
Оновити списки пакетів:
sudo yum update
або
sudo dnf upgrade
Встановити пакет:
sudo yum install <package_name>
або
sudo dnf install <package_name>
Видалити пакет:
sudo yum remove <package_name>
або
sudo dnf remove <package_name>
9. Автоматизація завдань за допомогою cron
Завдання сron — це заплановані завдання, що автоматизують виконання скриптів та команд.
Змінити таблицю завдань cron:
crontab -e
Формат завдання cron:
* * * * * /path/to/command
(П'ять зірок представляють хвилину, годину, день, місяць та день тижня)
Приклад: запускати резервне копіювання щодня о 2 годині ночі:
0 2 * * * /home/user/backup.sh
Вивести список запланованих завдань cron:
crontab -l
10. Брандмауер та основи безпеки
Основні заходи безпеки при адмініструванні серверів Linux включають налаштування брандмауерів, відключення невикористовуваних служб та підтримання актуальності системи.
Перегляд статусу брандмауера:
sudo ufw status
Дозволити порт (наприклад, SSH):
sudo ufw allow 22
Увімкнути брандмауер:
sudo ufw enable
Щоб забезпечити безпеку вашого сервера, регулярно оновлюйте пакети:
sudo apt upgrade # Debian/Ubuntu-based
sudo yum update # Red Hat/CentOS-based
sudo dnf update # Red Hat/CentOS-based
11. Пошук у файлах
Команда grep шукає файли або виведення на основі шаблону. Це має неоціненне значення при пошуку конкретної інформації в журналах або конфігураційних файлах.
Пошук певного рядка у файлі:
grep "error" /var/log/syslog
Рекурсивний пошук у каталогах:
grep -r "keyword" /etc/
Пошук без урахування регістру:
grep -i "ERROR" /var/log/syslog
Корисні опції:
- -v (інвертувати збіг), щоб знайти рядки, які не відповідають шаблону.
- -A or -B для відображення рядків до або після збігу.
12. Пошук файлів за критеріями
find — універсальний інструмент для пошуку файлів і каталогів на ім'я, тип, розмір, дату зміни та інші параметри.
Find files by name:
find/-name "file.txt"
Знайти файли, змінені за останні 7 днів:
find /var/log -mtime -7
Знайти та видалити файли розміром понад 100 МБ:
find /home -size +100M -exec rm {} \;
13. Синхронізація файлів та каталогів
rsync — швидкий та універсальний інструмент для копіювання та синхронізації файлів між каталогами чи серверами. Широко використовується для резервного копіювання та передачі даних.
Синхронізувати локальні каталоги:
rsync -avh /source/dir/ /destination/dir/
Синхронізація файлів з віддаленим сервером:
rsync -avz /local/dir/ user@remote:/remote/dir/
Прапори:
- -a для архівного режиму,
- -v для детального режиму,
- -h for human-readable output,
- -z для стиснення.
Копіювати лише оновлені файли:
rsync -av --update /source/ /destination/
14. Редактор потоку для роботи з текстом
sed використовується для пошуку та заміни тексту у файлах, що робить пакетне редагування надзвичайно ефективним.
Замінити текст у файлі:
sed -i's/oldtext/newtext/g' <filename>
замінить усі входження "oldtext" на "newtext" у файлі.
Видалити рядки, які містять рядок:
sed '/pattern/d' <filename>
Замінити лише перше входження в кожному рядку:
sed's/old/new/' <filename>
15. Обробка тексту
awk — це потужна мова програмування та команда для обробки та аналізу текстових даних.
Виведення певного стовпця з файлу:
awk '{print $2}' file.txt
виводить другий стовпець з кожного рядка file.txt.
Думуйте значення в стовпці:
awk '{s+=$2} END {print s}' file.txt
Фільтрація та виведення певних рядків:
awk '$3 > 100' file.txt
16. Термінальний мультиплексор
tmux дозволяє запускати кілька термінальних сеансів в одному вікні та перемикатися між ними. Це дуже корисно для віддаленого адміністрування сервера.
Почати новий сеанс:
tmux new -s mysession
Від'єднатися від сеансу (не перериваючи його): Ctrl + b, потім d
Список усіх сеансів:
tmux ls
Повторно підключитися до сеансу:
tmux attach -t mysession
17. Аналізатор мережних пакетів
tcpdump — потужний аналізатор пакетів командного рядка. Дозволяє захоплювати та аналізувати мережевий трафік.
Захоплення всього мережевого трафіку:
sudo tcpdump
Захоплення трафіку на певному інтерфейсі:
sudo tcpdump -i eth0
Захоплення трафіку на порту 80 (HTTP):
sudo tcpdump 'port 80'
Збереження виведення файлу:
sudo tcpdump -w capture.pcap
18. Список відкритих файлів
lsof використовується для виведення списку відкритих файлів та процесів, що їх відкрили. Це корисно для діагностики проблем із використанням файлів, мережевими підключеннями тощо. д.
Список усіх відкритих файлів:
lsof
Знайти файли, відкриті певним процесом:
lsof -p <PID>
Дізнатися, який процес використовує порт (наприклад, порт 80):
sudo lsof -i :80
19. Інтерактивний переглядач процесів
htop — зручніша версія top з графічним відображенням системних ресурсів та процесів.
Встановіть htop (якщо не встановлено):
sudo apt install htop # Debian/Ubuntu
sudo yum install htop # CentOS/Red Hat
sudo dnf install htop # CentOS/Red Hat
Запустіть htop:
htop
Використовуйте сполучення клавіш для керування процесами, сортування за ЦП або пам'яті та безпосереднього завершення процесів.
20. Керування правилами брандмауера
iptables — потужний інструмент для налаштування брандмауера Linux.
Список поточних правил:
sudo iptables -L
Блокування IP-адреси:
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
Дозволити трафік на певному порту (наприклад, порт 22 для SSH):
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
21. Виконання команд із стандартного введення
xargs використовується для створення та виконання команд з використанням введення з інших команд.
Видалення всіх файлів з певним розширенням:
find/path-name "*.log" | xargs rm
Передача аргументів із стандартного введення:
echo "file1 file2 file3" | xargs touch
22. Архівування файлів
tar — найпоширеніша утиліта, яка використовується для створення та вилучення архівних файлів (зазвичай .tar або .tar.gz).
Створення архіву .tar.gz:
tar -czvf archive.tar.gz /path/to/files
Вилучення архіву:
tar -xzvf archive.tar.gz
Параметри:
- -c створити архів
- -x витягти файли
- -v докладний висновок
- -f файл для обробки
- -z стиснути за допомогою gzip
23. Змінити кореневий каталог
chroot використовується для зміни кореневого каталогу поточного процесу, що є корисним для сценаріїв тестування або відновлення.
Вказати інший кореневий каталог:
sudo chroot /path/to/new/root
це обмежить користувача в межах нового кореневого каталогу системи.
24. Управління системними службами
systemctl використовується для керування системними службами (запуск, зупинка, увімкнення або вимкнення служб).
Запуск служби:
sudo systemctl start nginx
Зупинення служби:
sudo systemctl stop nginx
Увімкнення служби під час завантаження:
sudo systemctl enable nginx
Перевірка стану служби:
sudo systemctl status nginx
25. Перегляд системних журналів
journalctl допомагає переглядати та керувати журналами systemd.
Перегляд усіх журналів:
sudo journalctl
Перегляд журналів для певної служби:
sudo journalctl -u nginx.service
Перегляд журналів після завантаження:
sudo journalctl -b