В этом руководстве мы приведем основные концепции и команды, имеющие значение для администрирования сервера 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