Debian и Ubuntu

Команды Linux в Debian и Ubuntu: полное руководство от новичка до системного и сетевого администратора

Большой практический учебник по терминалу Debian и Ubuntu. Команды объясняются по задачам: от навигации и установки программ до systemd, дисков, SSH, Netplan, firewall, сетевой диагностики и автоматизации.

Актуализировано: 15 июля 2026 годаDebian 13.6 и Ubuntu 26.04 LTSУровень: от первой команды до администратораФормат: HTML для Elementor и отдельный CSS

Перед началом. Невозможно перечислить буквально все команды Linux: каждая установленная программа добавляет собственные утилиты. Руководство охватывает основной набор для Debian, Ubuntu, серверов, рабочих станций и сетей. Перед командами с sudo, удалением, форматированием дисков, изменением SSH, маршрутизации или firewall сначала создайте резервную копию и подготовьте откат.

Debian и Ubuntu: что общего, чем отличаются и какую систему выбрать

Debian и Ubuntu относятся к одному семейству дистрибутивов. Ubuntu основана на Debian и использует тот же формат пакетов DEB, APT, dpkg, systemd, ядро Linux, GNU Coreutils и стандартную структуру каталогов. Поэтому большая часть команд в этой статье работает в обеих системах одинаково.

Debian Stable Debian 13.6 Trixie

Текущая стабильная ветка на дату обновления статьи. Debian Stable выбирают для серверов, рабочих станций, виртуальных машин и систем, где особенно важны предсказуемость и длительный жизненный цикл.

Ubuntu LTS Ubuntu 26.04 LTS

Актуальный выпуск с длительной поддержкой. Ubuntu LTS удобна для серверов, облачных систем, рабочих станций и инфраструктуры, где нужны Netplan, cloud-init, Snap и готовые интеграции.

Поддерживаемая LTS Ubuntu 24.04.4 LTS

Продолжает получать поддержку. Переход с одной LTS на следующую обычно предлагают после выхода первого point release новой LTS.

Что одинаково

  • Команды ls, cp, mv, rm, find, grep, sed, awk.
  • Пользователи, группы, права, ACL, sudo и su.
  • APT, dpkg и пакеты DEB.
  • systemd, systemctl и journalctl.
  • SSH, OpenSSH, rsync, tar и стандартные средства резервного копирования.
  • iproute2, ip, ss, ping, dig, tcpdump и nftables.

Главные различия

Debian

  • Стабильная ветка обновляется консервативно.
  • На минимальной установке sudo может отсутствовать, если при установке задан пароль root.
  • Сеть может управляться NetworkManager, ifupdown, systemd-networkd или Netplan в облачной конфигурации.
  • Репозитории Debian и backports подключаются отдельно и не смешиваются с Ubuntu.

Ubuntu

  • Для производственных систем обычно выбирают LTS.
  • Первый созданный пользователь обычно получает право выполнять команды через sudo.
  • Ubuntu Server обычно использует Netplan с backend systemd-networkd, Ubuntu Desktop часто использует Netplan с NetworkManager.
  • Дополнительно применяются Snap, UFW, do-release-upgrade, ubuntu-drivers и cloud-init.

Не смешивайте репозитории. Пакеты Debian и Ubuntu имеют общую основу, но собираются для разных выпусков, зависимостей и политик. Подключение репозиториев Ubuntu в Debian или Debian в Ubuntu может привести к конфликту библиотек и неработоспособной системе.

Что означает приглашение командной строки

ivan@server:~$ command
root@server:/etc# command
  • ivan или root - текущий пользователь.
  • server - имя компьютера.
  • ~ - домашний каталог текущего пользователя.
  • $ - оболочка обычного пользователя.
  • # - оболочка root. Этот символ не вводят вручную.

Как устроен терминал и синтаксис команд

Терминал показывает текстовый интерфейс, а командная оболочка shell разбирает введенную строку и запускает программы. В Debian и Ubuntu обычно используется Bash. Пользователь может установить Zsh, Fish или другую оболочку, но базовые команды Linux от этого не меняются.

Общая форма:

команда [параметры] [аргументы]
Элемент Для чего нужен Пример
command Имя программы или встроенной команды оболочки ls
-h, --help Короткий или длинный параметр ls -lah
аргумент Файл, каталог, адрес или имя пользователя ls /var/log
sudo Запуск одной команды с повышенными полномочиями sudo systemctl restart ssh

Регистр имеет значение

File.txt, file.txt и FILE.TXT являются разными именами.

Абсолютные и относительные пути

cd /var/log
cd ../log
cd ~/Downloads
  • /var/log - абсолютный путь от корня /.
  • ../log - относительный путь от текущего каталога.
  • ~/Downloads - путь от домашнего каталога.

Специальные обозначения

Обозначение Значение Пример
. Текущий каталог ./script.sh
.. Родительский каталог cd ..
~ Домашний каталог cd ~
/ Корень файловой системы ls /
- Предыдущий каталог для cd cd -
* Любая последовательность символов ls *.log
? Один любой символ ls file?.txt
[123] Один символ из набора ls file[123].txt

Кавычки

echo "Домашний каталог: $HOME"
echo 'Домашний каталог: $HOME'
touch "Новый файл.txt"

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

Полезные сочетания клавиш

Клавиши Действие
Tab Автодополнение команды, пути или имени
Ctrl+C Прервать текущую команду
Ctrl+D Конец ввода или выход из оболочки
Ctrl+L Очистить экран
Ctrl+R Поиск по истории
Ctrl+A, Ctrl+E Начало или конец строки
Ctrl+U, Ctrl+K Удалить текст до курсора или после него

История, переменные и псевдонимы

Команда Назначение Пример
history Показать историю history \| tail -20
!! Повторить предыдущую команду sudo !!
!123 Повторить команду с номером 123 !123
env Показать переменные окружения env
printenv Показать одну или все переменные printenv PATH
export Создать переменную окружения export EDITOR=nano
alias Создать короткое имя alias ll='ls -lah'
unalias Удалить alias unalias ll
source Перечитать файл в текущей оболочке source ~/.bashrc
echo Вывести текст или переменную echo "$HOME"
printf Форматированный вывод printf '%s\n' "$USER"

Как получать справку и находить команды

Администратор не обязан помнить все параметры. Важно быстро открыть правильную документацию.

Команда Для чего нужна Пример
man Полная локальная документация man systemctl
--help Краткая справка ip --help
help Справка по встроенным командам Bash help cd
apropos Поиск по описаниям man-страниц apropos "copy files"
whatis Краткое описание whatis rsync
type Показать alias, builtin или внешний файл type cd
command -v Путь к фактически запускаемой команде command -v python3
whereis Бинарный файл и man-страницы whereis ssh
which Поиск в PATH which curl
info Документация GNU Info info coreutils

В man поиск выполняется клавишей /, следующий результат - n, предыдущий - N, выход - q.

Одинаковое имя может встречаться в разных разделах. Например, passwd(1) - команда смены пароля, а passwd(5) - формат файла /etc/passwd.

man 1 passwd
man 5 passwd

Файловая система Linux и основные каталоги

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

Каталог Назначение
/ Корень всей файловой системы
/home Домашние каталоги обычных пользователей
/root Домашний каталог root
/etc Системные конфигурационные файлы
/var Изменяемые данные, журналы, очереди и кэши
/var/log Текстовые журналы программ
/usr Основная часть программ, библиотек и общих данных
/bin, /sbin Ключевые команды, часто ссылки внутрь /usr
/tmp Временные файлы
/run Runtime-данные после загрузки
/dev Файлы устройств
/proc Виртуальная информация о ядре и процессах
/sys Устройства и параметры ядра
/boot Ядра, initramfs и загрузчик
/mnt Временное ручное монтирование
/media Съемные носители
/opt Сторонние приложения
/srv Данные серверных служб

Перед изменением системной конфигурации создавайте копию, проверяйте синтаксис штатной командой сервиса и держите открытой вторую SSH-сессию. Особенно это важно для сети, SSH и firewall.

Навигация, файлы и каталоги

Команда Для чего нужна Пример
pwd Показать текущий путь pwd
ls Показать содержимое ls
ls -lah Подробно, включая скрытые файлы ls -lah /var/log
cd Перейти в каталог cd /etc
cd ~ Домашний каталог cd ~
cd - Предыдущий каталог cd -
tree Дерево каталогов tree -L 2 /etc
mkdir Создать каталог mkdir project
mkdir -p Создать цепочку каталогов mkdir -p project/logs/archive
touch Создать пустой файл touch notes.txt
cp Копировать файл cp config.conf config.conf.bak
cp -a Копировать с атрибутами cp -a /etc/ssh /root/ssh-backup
cp -i Спросить перед перезаписью cp -i file /tmp/
mv Переместить или переименовать mv old.txt new.txt
rm Удалить файл rm file.txt
rm -r Рекурсивно удалить каталог rm -r old-directory
rm -i Удалять с подтверждением rm -i important.txt
rmdir Удалить пустой каталог rmdir empty-dir
ln Создать жесткую ссылку ln file hardlink
ln -s Создать символическую ссылку ln -s /var/log/app app-logs
stat Размер, права, inode и время stat file.txt
file Определить тип содержимого file download.bin
realpath Получить абсолютный путь realpath ../config
basename Последняя часть пути basename /etc/ssh/sshd_config
dirname Каталог из пути dirname /etc/ssh/sshd_config

Безопасное удаление:

rm -- file-with-strange-name
rm -i important-file
find /tmp/cache -type f -mtime +30 -print
# После проверки списка:
find /tmp/cache -type f -mtime +30 -delete

Двойной дефис -- завершает список параметров и защищает от имени файла, начинающегося с дефиса.

Просмотр и редактирование файлов

Команда Для чего нужна Пример
cat Вывести небольшой файл cat /etc/os-release
tac Вывести строки в обратном порядке tac events.log
less Читать длинный файл постранично less /var/log/syslog
head Начало файла head -n 20 file.txt
tail Конец файла tail -n 50 app.log
tail -f Следить за дописыванием tail -f app.log
nl Строки с номерами nl -ba config.conf
wc Строки, слова и байты wc -l access.log
nano Простой редактор sudo nano /etc/hosts
vim Мощный модальный редактор vim script.sh
editor Системный редактор sudo editor /etc/fstab
hexdump Шестнадцатеричный вид hexdump -C file.bin \| head
strings Печатные строки из бинарного файла strings program \| less

Минимум для Nano:

  • Ctrl+O - сохранить.
  • Ctrl+X - выйти.
  • Ctrl+W - поиск.
  • Alt+U - отменить.

Минимум для Vim:

  • i - режим ввода.
  • Esc - командный режим.
  • :w - сохранить.
  • :q - выйти.
  • :wq - сохранить и выйти.
  • :q! - выйти без сохранения.

Потоки, перенаправления и конвейеры

У команды обычно есть стандартный ввод stdin, обычный вывод stdout и поток ошибок stderr.

| Оператор | Действие | Пример | |---|---|---| | > | Записать stdout с перезаписью | ip route > routes.txt | | >> | Добавить stdout в конец | date >> events.log | | < | Передать файл во вход | sort < names.txt | | 2> | Записать stderr | find / -name test 2> errors.log | | 2>&1 | stderr туда же, куда stdout | command > all.log 2>&1 | | | | Передать вывод следующей программе | ps aux \| grep nginx | | tee | Показать и записать | ip -br a \| tee network.txt | | && | Следующая команда только при успехе | apt update && apt upgrade | | || | Следующая команда только при ошибке | ping -c 1 host || echo fail | | ; | Последовательное выполнение | date; uptime | | $() | Подставить вывод команды | echo "$(uname -r)" | | () | Группа в подоболочке | (cd /tmp && ls) | | {} | Группа в текущей оболочке | { date; uptime; } > report.txt |

Почему это не работает:

sudo echo "value" > /etc/example.conf

Перенаправление выполняет оболочка обычного пользователя. Правильный вариант:

echo "value" | sudo tee /etc/example.conf
echo "next line" | sudo tee -a /etc/example.conf

Поиск и обработка текста

| Команда | Назначение | Пример | |---|---|---| | find | Поиск по имени, типу, размеру и времени | find /var/log -type f -name '*.log' | | locate | Быстрый поиск по базе | locate sshd_config | | updatedb | Обновить базу locate | sudo updatedb | | grep | Поиск строк | grep 'error' app.log | | grep -R | Рекурсивный поиск | grep -Rni 'ListenAddress' /etc/ssh | | grep -E | Расширенные регулярные выражения | grep -E 'error|warning' app.log | | cut | Выбрать поля | cut -d: -f1 /etc/passwd | | sort | Сортировать строки | sort names.txt | | sort -n | Числовая сортировка | sort -n values.txt | | uniq | Убрать или посчитать соседние повторы | sort names \| uniq -c | | tr | Заменить или удалить символы | tr '[:lower:]' '[:upper:]' | | paste | Объединить файлы по столбцам | paste users.txt shells.txt | | sed | Потоковая замена и выбор строк | sed 's/old/new/g' file.txt | | awk | Обработка строк и столбцов | awk -F: '{print $1,$7}' /etc/passwd | | xargs | Превратить ввод в аргументы | find . -print0 \| xargs -0 command | | diff | Различия файлов | diff -u old.conf new.conf | | comm | Сравнить два отсортированных файла | comm -3 a b | | jq | Обработка JSON | curl -s URL \| jq '.' |

Практические примеры find:

find /etc -type f -name '*.conf'
find /var/log -type f -size +100M -print
find ~/Downloads -type f -mtime +30 -print
find . -type f -perm /o+w -print
find . -type f -name '*.tmp' -print0 | xargs -0 rm -f

Перед автоматическим удалением замените действие на -print и проверьте список. Только после этого используйте -delete или xargs rm.

Примеры grep, sed, awk:

grep -Rni --exclude-dir=.git 'password' .
journalctl -u ssh | grep -i 'failed'
sed -n '10,30p' file.txt
sed 's/[[:space:]]\+$//' file.txt
awk '{sum += $1} END {print sum}' numbers.txt
ss -lntp | awk 'NR==1 || /:22|:80|:443/'

Права, владельцы, пользователи и sudo

Каждый файл имеет владельца, группу и права для владельца, группы и остальных.

-rwxr-x--- 1 ivan admins 2048 Jul 15 12:00 script.sh
  • r - чтение.
  • w - запись.
  • x - выполнение для файла или вход в каталог.
Команда Для чего нужна Пример
whoami Эффективное имя пользователя whoami
id UID, GID и группы id ivan
groups Группы пользователя groups ivan
who Вошедшие пользователи who
w Пользователи и процессы w
last История входов last -a \| head
sudo Одна команда с повышенными правами sudo systemctl status ssh
sudo -i Login-shell root sudo -i
su - Переключиться на пользователя su - admin
adduser Создать пользователя в Debian sudo adduser operator
deluser Удалить пользователя sudo deluser operator
usermod Изменить группы или учетную запись sudo usermod -aG sudo operator
passwd Сменить пароль sudo passwd operator
chage Срок действия пароля sudo chage -l operator
groupadd Создать группу sudo groupadd support
groupdel Удалить группу sudo groupdel support
chown Изменить владельца и группу chown user:group file
chgrp Изменить группу chgrp admins file
chmod Изменить права chmod 640 config.conf
umask Маска прав новых файлов umask 027
getfacl Показать ACL getfacl shared
setfacl Назначить ACL setfacl -m u:operator:rw file
visudo Безопасно изменить sudoers sudo visudo

Числовая запись chmod

  • 4 - чтение.
  • 2 - запись.
  • 1 - выполнение.
chmod 600 private.key
chmod 640 config.conf
chmod 644 public.txt
chmod 750 script.sh
chmod 755 directory

Символьная запись:

chmod u+x script.sh
chmod g-w file.txt
chmod o-rwx private-directory
chmod u=rw,g=r,o= config.conf

Не используйте chmod 777 как универсальное решение. Права 777 разрешают всем читать, изменять и выполнять объект. Обычно это скрывает неправильного владельца или группу и создает риск подмены данных.

Права на каталог:

  • r позволяет увидеть список имен.
  • w позволяет создавать и удалять записи при наличии x.
  • x позволяет проходить через каталог и обращаться к известным именам.

Для поиска проблемы Permission denied:

id
ls -ld /path /path/to /path/to/file
namei -l /path/to/file
getfacl /path/to/file
findmnt -T /path/to/file

APT, dpkg и управление пакетами в Debian и Ubuntu

APT работает с репозиториями, версиями и зависимостями. dpkg является низкоуровневым инструментом для локальной базы пакетов и файлов DEB. Для обычной работы удобнее apt, для автоматизации чаще используют стабильные интерфейсы apt-get и apt-cache.

КомандаДля чего нужнаПример
apt updateОбновить локальный индекс доступных пакетов. Установленные программы не обновляются.sudo apt update
apt upgradeУстановить доступные обновления без удаления установленных пакетов.sudo apt upgrade
apt full-upgradeПолностью согласовать зависимости. При необходимости может удалить пакеты.sudo apt full-upgrade
apt installУстановить один или несколько пакетов.sudo apt install curl rsync
apt reinstallПереустановить пакет и восстановить его файлы.sudo apt reinstall openssh-client
apt removeУдалить пакет, обычно сохранив системные конфигурационные файлы.sudo apt remove package
apt purgeУдалить пакет вместе с системными конфигурационными файлами.sudo apt purge package
apt autoremoveУдалить больше не нужные автоматически установленные зависимости.sudo apt autoremove
apt searchНайти пакет по имени и описанию.apt search tcpdump
apt showПоказать описание, размер, зависимости и раздел репозитория.apt show nftables
apt list --installedПоказать установленные пакеты.apt list --installed
apt list --upgradableПоказать пакеты, для которых доступны обновления.apt list --upgradable
apt policyПоказать установленную и доступные версии, источник и приоритет.apt policy openssh-server
apt-cache dependsПоказать зависимости пакета.apt-cache depends nginx
apt-cache rdependsПоказать обратные зависимости.apt-cache rdepends libssl3
apt-mark holdЗапретить автоматическое обновление конкретного пакета.sudo apt-mark hold package
apt-mark unholdСнять блокировку версии.sudo apt-mark unhold package
dpkg -lПоказать состояние пакетов из базы dpkg.dpkg -l | grep openssh
dpkg -LПоказать файлы установленного пакета.dpkg -L openssh-client
dpkg -SОпределить, какому пакету принадлежит файл.dpkg -S /usr/bin/ssh
dpkg -VПроверить установленные файлы пакета по метаданным dpkg.sudo dpkg -V openssh-client
dpkg --auditНайти пакеты с незавершенной установкой или настройкой.sudo dpkg --audit
dpkg -iУстановить локальный DEB без полноценного разрешения зависимостей.sudo dpkg -i package.deb
apt install ./file.debУстановить локальный DEB с разрешением зависимостей.sudo apt install ./package.deb
apt-file searchНайти пакет, содержащий файл, даже если пакет не установлен.apt-file search bin/example

Безопасное ежедневное обновление

sudo apt update
apt list --upgradable
sudo apt upgrade
sudo apt autoremove

Команда apt autoremove сначала показывает список. Не подтверждайте удаление автоматически, пока не убедитесь, что среди пакетов нет нужного ядра, драйвера, metapackage или библиотеки, на которую опирается вручную установленное приложение.

Когда применять full-upgrade

apt full-upgrade разрешает APT удалить установленный пакет, если это необходимо для обновления системы в целом. Такой режим полезен при крупных изменениях зависимостей, переходах ядра и обновлении выпуска, но список удаления нужно проверить особенно внимательно.

sudo apt update
sudo apt -s full-upgrade
sudo apt full-upgrade

Параметр -s запускает симуляцию без изменения системы.

Если установка пакетов была прервана

sudo dpkg --audit
sudo dpkg --configure -a
sudo apt --fix-broken install
sudo apt update

Очистка кэша APT

КомандаДля чего нужнаПример
apt cleanУдалить весь локальный кэш скачанных DEB.sudo apt clean
apt autocleanУдалить только устаревшие DEB, которые больше нельзя скачать.sudo apt autoclean
du -sh /var/cache/aptПроверить размер кэша перед очисткой.du -sh /var/cache/apt

Проверка репозиториев и происхождения пакета

grep -RhsE '^(deb|Types:|URIs:|Suites:|Components:|Signed-By:)'   /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null

apt-cache policy
apt policy package-name

apt для человека, apt-get для скрипта. Вывод apt рассчитан на интерактивный терминал. В автоматизированных сценариях используйте apt-get, проверяйте коды возврата и не добавляйте -y ко всем операциям без контроля списка изменений.

Репозитории Debian, DEB822, firmware и backports

Современный APT понимает традиционный формат sources.list и формат DEB822 с расширением .sources. На новой системе сначала посмотрите, какой формат уже используется, и продолжайте работать в нем.

Проверка версии и кодового имени Debian

cat /etc/os-release
cat /etc/debian_version
lsb_release -a 2>/dev/null || true

Пример Debian Stable в формате DEB822

Types: deb deb-src
URIs: https://deb.debian.org/debian
Suites: trixie trixie-updates
Components: main contrib non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb deb-src
URIs: https://security.debian.org/debian-security
Suites: trixie-security
Components: main contrib non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Компоненты подключайте только при необходимости. main содержит свободные пакеты Debian, contrib зависит от компонентов вне main, non-free-firmware нужен для части прошивок оборудования.

Debian Backports

Backports предоставляет более новые версии отдельных пакетов, перенесенные из следующей ветки и пересобранные для Stable. Не нужно обновлять всю систему из backports.

Types: deb
URIs: https://deb.debian.org/debian
Suites: trixie-backports
Components: main contrib non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
sudo apt update
apt policy package-name
sudo apt install -t trixie-backports package-name

Проверка pinning и приоритетов

apt-cache policy
grep -Rhs . /etc/apt/preferences /etc/apt/preferences.d/ 2>/dev/null

Не заменяйте trixie на testing или unstable ради одного пакета. Такой переход меняет модель всей системы. Для единичного нового пакета сначала рассмотрите backports, контейнер, Flatpak, Snap, официальный vendor-репозиторий или сборку в изолированной среде.

Ubuntu: APT, PPA, Snap и источники программ

Ubuntu использует APT и dpkg так же, как Debian, но имеет собственные репозитории, компоненты, PPA и систему пакетов Snap. Необходимо понимать, из какого источника установлена программа и кто отвечает за ее обновления.

Проверка выпуска Ubuntu

cat /etc/os-release
lsb_release -a
uname -r

Компоненты репозитория Ubuntu

  • main - основной набор пакетов с поддержкой Canonical.
  • restricted - важное программное обеспечение с ограничениями лицензии, включая часть драйверов.
  • universe - большой набор пакетов, поддерживаемый сообществом.
  • multiverse - пакеты с юридическими или лицензионными ограничениями.

PPA и сторонние репозитории

КомандаДля чего нужнаПример
add-apt-repositoryДобавить поддерживаемый источник, включая PPA.sudo add-apt-repository ppa:owner/name
add-apt-repository --removeУдалить запись PPA.sudo add-apt-repository --remove ppa:owner/name
apt policyПроверить, какая версия и из какого источника будет установлена.apt policy package-name
grep -RНайти подключенные сторонние источники.grep -RhsE '^(deb|URIs:)' /etc/apt/sources.list.d/

PPA не является частью официального архива Ubuntu. Перед подключением проверьте владельца, поддерживаемые выпуски, подпись, частоту обновлений и последствия удаления. Старый PPA часто мешает обновлению Ubuntu на следующий выпуск.

Основные команды Snap

КомандаДля чего нужнаПример
snap listПоказать установленные snap-пакеты и отслеживаемые каналы.snap list
snap findНайти пакет в Snap Store.snap find code
snap infoПоказать издателя, каналы и доступные версии.snap info package
snap installУстановить snap из выбранного канала.sudo snap install package
snap refreshОбновить все snap-пакеты.sudo snap refresh
snap refresh nameОбновить один пакет.sudo snap refresh package
snap removeУдалить пакет.sudo snap remove package
snap revertВернуться к предыдущей локально сохраненной ревизии.sudo snap revert package
snap changesПоказать операции snapd.snap changes
snap tasksПоказать этапы конкретной операции.snap tasks CHANGE_ID
snap connectionsПоказать интерфейсы и разрешения snap.snap connections package
snap servicesПоказать сервисы snap-пакетов.snap services

Каналы Snap

snap info package
sudo snap refresh package --channel=latest/stable
sudo snap refresh package --channel=latest/candidate

Для рабочей системы обычно выбирают канал stable. Каналы candidate, beta и edge предназначены для тестирования.

Временная приостановка обновления Snap

sudo snap refresh --hold=24h package
sudo snap refresh --unhold package
snap refresh --time

APT и Snap обновляются независимо. Команда apt upgrade не обновляет snap-пакеты. Snapd выполняет refresh по собственному расписанию. При диагностике версии программы сначала определите способ установки через command -v, snap list и dpkg -S.

Обновление Debian и Ubuntu на новый выпуск

Обновление пакетов внутри текущего выпуска и переход на новый выпуск являются разными операциями. Перед major upgrade требуется актуальная резервная копия, проверка свободного места, сторонних репозиториев, дисков, SSH-доступа и release notes.

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

Для Debian нельзя ограничиваться заменой кодового имени в источниках и запуском одной команды. Порядок и известные проблемы меняются от выпуска к выпуску, поэтому основным документом являются Release Notes конкретной версии.

cat /etc/debian_version
cat /etc/os-release
sudo apt update
sudo apt full-upgrade
sudo dpkg --audit
systemctl --failed
df -hT

Ubuntu: do-release-upgrade

КомандаДля чего нужнаПример
do-release-upgrade -cПроверить наличие доступного следующего выпуска.sudo do-release-upgrade -c
do-release-upgradeЗапустить штатное обновление Ubuntu.sudo do-release-upgrade
update-manager-coreПакет с инструментами release upgrade на сервере.sudo apt install update-manager-core
Prompt=ltsРазрешать только переходы между LTS.grep '^Prompt=' /etc/update-manager/release-upgrades

Подготовка Ubuntu к обновлению выпуска

sudo apt update
sudo apt full-upgrade
sudo apt autoremove
sudo dpkg --audit
systemctl --failed
df -hT
sudo do-release-upgrade -c
  • Проверьте восстановление из резервной копии, а не только наличие backup.
  • Отключите или документируйте сторонние PPA и vendor-репозитории.
  • Проверьте свободное место в /, /boot и /var.
  • На удаленном сервере выполняйте работу в tmux и держите консоль провайдера.
  • Проверьте, не используется ли неподдерживаемый interim release.

LTS-to-LTS открывается не сразу. Ubuntu обычно предлагает обновление с одной LTS на следующую после выхода первого point release новой LTS. Параметр -d может обойти часть ограничений, но не рекомендуется для производственной системы.

Архивы, копирование и резервные копии

Команда Назначение Пример
tar -cf Создать tar без сжатия tar -cf backup.tar directory/
tar -czf Создать tar.gz tar -czf backup.tar.gz directory/
tar -cJf Создать tar.xz tar -cJf backup.tar.xz directory/
tar -tf Показать содержимое tar -tf backup.tar.gz
tar -xf Распаковать tar -xf backup.tar.gz
gzip, gunzip Сжатие gzip gzip access.log
xz, unxz Сжатие xz xz disk.img
zstd, unzstd Быстрое сжатие zstd zstd large.log
zip, unzip Работа с ZIP zip -r archive.zip directory
rsync Инкрементальная синхронизация rsync -aHAX src/ dst/
scp Копирование через SSH scp file user@server:/tmp/
sftp Интерактивная передача через SSH sftp user@server
dd Поблочное копирование dd if=image of=/dev/sdX
sha256sum Контрольная сумма sha256sum image.iso
sync Сбросить буфер записи sync

Правило слеша в rsync:

rsync -a source/ destination/   # содержимое source
rsync -a source destination/    # каталог destination/source

Резервная копия через SSH:

rsync -aHAX --numeric-ids --delete \
  -e ssh /srv/data/ backup@backup-server:/backups/data/

Сначала выполнить проверку:

rsync -aHAX --numeric-ids --delete --dry-run \
  -e ssh /srv/data/ backup@backup-server:/backups/data/

--delete удаляет на приемнике файлы, которых больше нет в источнике. Всегда начинайте с --dry-run.

Запись ISO на флешку:

lsblk -o NAME,SIZE,MODEL,TRAN,MOUNTPOINTS
sudo umount /dev/sdX1
sudo dd if=debian.iso of=/dev/sdX bs=4M status=progress conv=fsync
sync

dd не спрашивает подтверждения. Ошибка в имени устройства может перезаписать системный диск.

Процессы, задания и завершение программ

Команда Назначение Пример
ps aux Снимок всех процессов ps aux
ps -ef Полный POSIX-подобный формат ps -ef
ps -eo Свои столбцы и сортировка ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu
pgrep Найти PID по имени pgrep -a sshd
pidof PID программы pidof nginx
pstree Дерево процессов pstree -ap
top Интерактивный монитор top
htop Более удобный монитор htop
jobs Задания текущей оболочки jobs -l
bg Продолжить в фоне bg %1
fg Вернуть на передний план fg %1
& Запустить в фоне long-command &
nohup Продолжить после закрытия терминала nohup command > app.log 2>&1 &
disown Убрать задание из оболочки disown %1
kill Отправить сигнал по PID kill 1234
pkill Сигнал по имени или условию pkill -TERM -x program
killall Процессы с точным именем killall program
nice Запустить с другим приоритетом nice -n 10 command
renice Изменить приоритет процесса sudo renice 5 -p 1234
timeout Ограничить время timeout 30s command
watch Периодически повторять watch -n 2 'ss -s'
lsof Открытые файлы и сокеты sudo lsof -p 1234
fuser Кто использует файл или mount sudo fuser -vm /mnt/data

Сигналы:

Сигнал Значение
SIGHUP (1) Перечитать конфигурацию или закрытие терминала
SIGINT (2) Интерактивное прерывание, обычно Ctrl+C
SIGTERM (15) Корректное завершение, kill по умолчанию
SIGKILL (9) Немедленное завершение ядром
SIGSTOP (19) Безусловная остановка
SIGCONT (18) Продолжить остановленный процесс

Сначала:

kill -TERM 1234

Только если процесс не реагирует:

kill -KILL 1234

SIGKILL не дает процессу сохранить состояние и закрыть файлы.

Информация о системе и оборудовании

Команда Назначение Пример
uname -a Ядро и архитектура uname -a
cat /etc/os-release Дистрибутив и версия cat /etc/os-release
hostnamectl Хост, ОС, ядро hostnamectl
uptime Время работы и load average uptime
date Дата и время date --iso-8601=seconds
timedatectl Часовой пояс и синхронизация timedatectl
free -h RAM и swap free -h
vmstat Память, CPU и ввод-вывод vmstat 1
lscpu Процессор lscpu
nproc Логические CPU nproc
lsmem Блоки памяти lsmem
lspci PCI-устройства lspci -nnk
lsusb USB-устройства lsusb -t
dmidecode DMI/SMBIOS sudo dmidecode -t system
dmesg Сообщения ядра sudo dmesg -T \| less
sensors Температуры sensors
systemd-analyze Время загрузки systemd-analyze
systemd-analyze blame Медленные units systemd-analyze blame

Три числа load average отражают среднюю нагрузку примерно за 1, 5 и 15 минут. Их сравнивают с количеством логических CPU, но высокая нагрузка может быть вызвана не только вычислениями, а также ожиданием непрерываемого ввода-вывода.

Диски, разделы, файловые системы и место

Команда Назначение Пример
lsblk Диски, разделы, точки монтирования lsblk -f
blkid UUID и тип файловой системы sudo blkid
findmnt Смонтированные файловые системы findmnt
mount Подключить файловую систему sudo mount /dev/sdb1 /mnt/data
umount Отключить файловую систему sudo umount /mnt/data
df -h Свободное место df -hT
df -i Свободные inode df -i
du Размер каталогов и файлов du -xhd1 /var
ncdu Интерактивный анализ места sudo ncdu -x /
fdisk Таблицы разделов sudo fdisk -l
parted Разделы, включая GPT sudo parted -l
mkfs.ext4 Создать ext4 sudo mkfs.ext4 /dev/sdX1
fsck Проверить файловую систему sudo fsck -f /dev/sdX1
e2fsck Проверить ext2/3/4 sudo e2fsck -f /dev/sdX1
resize2fs Изменить размер ext sudo resize2fs DEVICE
swapon Показать или включить swap swapon --show
swapoff Отключить swap sudo swapoff /swapfile
smartctl SMART накопителя sudo smartctl -a /dev/sda

Поиск крупных данных:

df -hT
df -i
sudo du -xhd1 / | sort -h
sudo du -xhd1 /var | sort -h
sudo find /var -xdev -type f -size +500M -printf '%s %p\n' | sort -n
sudo lsof +L1

lsof +L1 показывает удаленные файлы, которые продолжают занимать место, пока процесс держит их открытыми.

Монтирование по UUID:

sudo blkid /dev/sdb1
sudo mkdir -p /mnt/data
sudo mount UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/data
findmnt /mnt/data

Пример /etc/fstab:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /srv/data ext4 defaults,nofail 0 2

Проверка до перезагрузки:

sudo findmnt --verify
sudo mount -a

Ошибка в /etc/fstab может задержать загрузку или перевести систему в аварийный режим.

Службы systemd и автозагрузка

systemd управляет загрузкой, службами, сокетами, таймерами, mount-объектами и другими unit-файлами.

Команда Назначение Пример
systemctl status Состояние службы systemctl status ssh
systemctl start Запустить сейчас sudo systemctl start ssh
systemctl stop Остановить сейчас sudo systemctl stop ssh
systemctl restart Полностью перезапустить sudo systemctl restart nginx
systemctl reload Перечитать конфигурацию sudo systemctl reload nginx
reload-or-restart Reload или restart sudo systemctl reload-or-restart nginx
systemctl enable Включить автозапуск sudo systemctl enable ssh
systemctl disable Отключить автозапуск sudo systemctl disable service
enable --now Автозапуск и запуск сейчас sudo systemctl enable --now nftables
is-active Проверить запуск systemctl is-active ssh
is-enabled Проверить автозапуск systemctl is-enabled ssh
list-units Загруженные units systemctl list-units --type=service
list-unit-files Доступные unit-файлы systemctl list-unit-files --type=service
--failed Units с ошибкой systemctl --failed
systemctl cat Итоговый unit и drop-ins systemctl cat ssh
systemctl edit Создать drop-in sudo systemctl edit service
daemon-reload Перечитать unit-файлы sudo systemctl daemon-reload
systemctl show Свойства unit systemctl show ssh -p ActiveState
systemctl mask Полностью запретить запуск sudo systemctl mask service
systemctl unmask Снять запрет sudo systemctl unmask service
systemctl reboot Перезагрузить sudo systemctl reboot
systemctl poweroff Выключить sudo systemctl poweroff

Правильное изменение готовой службы:

sudo systemctl edit myservice.service
[Service]
Environment="APP_MODE=production"
Restart=on-failure
RestartSec=5s
sudo systemctl daemon-reload
sudo systemctl restart myservice
systemctl status myservice

Пример собственной службы:

[Unit]
Description=Example application
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=appuser
Group=appuser
WorkingDirectory=/srv/example
ExecStart=/usr/bin/python3 /srv/example/app.py
Restart=on-failure
RestartSec=5
NoNewPrivileges=yes
PrivateTmp=yes

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now example.service
systemctl status example.service
journalctl -u example.service -f

Не запускайте сервис от root без причины. Создайте отдельного пользователя и выдайте только нужные права.

Журналы и диагностика через journalctl

Команда Назначение Пример
journalctl Весь доступный journal sudo journalctl
journalctl -b Текущая загрузка sudo journalctl -b
journalctl -b -1 Предыдущая загрузка sudo journalctl -b -1
journalctl -u Журнал службы sudo journalctl -u ssh
journalctl -f Следить за новыми сообщениями sudo journalctl -f
journalctl -p Фильтр по приоритету journalctl -p warning..alert -b
--since Нижняя граница времени journalctl --since '-30 min'
--until Верхняя граница времени journalctl --until '12:00'
journalctl -k Сообщения ядра journalctl -k -b
_PID= Сообщения PID journalctl _PID=1234
-o json-pretty Структурированный JSON journalctl -n 1 -o json-pretty
--disk-usage Размер journal journalctl --disk-usage
--vacuum-time Удалить старые архивы journalctl --vacuum-time=30d
--vacuum-size Ограничить размер journalctl --vacuum-size=1G
logger Записать свое сообщение logger -t myscript 'Backup completed'

Диагностика службы:

systemctl status service-name --no-pager -l
sudo journalctl -u service-name -b --no-pager
sudo journalctl -u service-name --since '-30 min'
systemctl cat service-name
sudo ss -lntup

Не очищайте активные журналы командой rm. Удаленный открытый файл может продолжать занимать место. Используйте logrotate, настройки приложения или journalctl --vacuum-*.

cron и systemd timers

cron

Команда Назначение Пример
crontab -e Редактировать задания пользователя crontab -e
sudo crontab -e Редактировать задания root sudo crontab -e
crontab -l Показать задания crontab -l
crontab -r Удалить весь crontab crontab -r

Формат:

# минута час день_месяца месяц день_недели команда
15 3 * * * /usr/local/sbin/backup.sh >> /var/log/backup.log 2>&1
@reboot /usr/local/bin/start-task.sh

В cron окружение минимальное. Используйте абсолютные пути, явно задавайте PATH и записывайте вывод в журнал.

systemd timer

/etc/systemd/system/backup.service:

[Unit]
Description=Daily backup

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/backup.sh

/etc/systemd/system/backup.timer:

[Unit]
Description=Run daily backup

[Timer]
OnCalendar=*-*-* 03:15:00
Persistent=true
RandomizedDelaySec=10m

[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
systemctl list-timers --all
systemctl status backup.timer
journalctl -u backup.service

Persistent=true позволяет выполнить пропущенный запуск после включения. Таймеры systemd удобны, когда нужны зависимости, журналирование и ограничения ресурсов.

Базовые сетевые команды

Команда Назначение Пример
ip -br address Кратко интерфейсы и IP ip -br a
ip link Состояние интерфейсов ip link show
ip address Адреса интерфейса ip addr show dev eth0
ip route Маршруты IPv4 ip route
ip -6 route Маршруты IPv6 ip -6 route
ip neigh Соседи ARP/NDP ip neigh
ip monitor Следить за изменениями ip monitor all
hostname -I IP-адреса хоста hostname -I
ping Достижимость и задержка ping -c 4 192.168.1.1
ping -6 Проверка IPv6 ping -6 -c 4 HOST
tracepath Маршрут и возможный MTU tracepath example.com
traceroute Трассировка маршрута traceroute example.com
ss Сокеты и порты sudo ss -lntup
ss -s Сводка по сокетам ss -s
lsof -i Процессы с сетевыми сокетами lsof -nP -iTCP:443
ethtool Скорость, duplex и драйвер sudo ethtool eth0
iw Wi-Fi интерфейсы iw dev
rfkill Блокировки радио rfkill list
curl HTTP, API и TLS curl -I https://example.com
wget Скачивание файлов wget -O file.iso URL
nc Проверка TCP/UDP nc -vz server.example 443
mtr Потери и задержка по маршруту mtr -rwzc 20 example.com

Четыре ключевые проверки:

ip -br a
ip route
ping -c 4 192.168.1.1
sudo ss -lntup

Временная настройка:

sudo ip link set dev eth0 up
sudo ip addr add 192.168.10.20/24 dev eth0
sudo ip route add default via 192.168.10.1

Команды ip обычно не сохраняются после перезагрузки. Для постоянной конфигурации используйте менеджер сети конкретной системы.

Проверка локальных портов:

sudo ss -lntup
sudo ss -lntp '( sport = :22 or sport = :80 or sport = :443 )'
sudo lsof -nP -iTCP -sTCP:LISTEN

NetworkManager, Wi-Fi и статический IP в Debian и Ubuntu Desktop

На настольных установках Debian и Ubuntu сеть часто управляется NetworkManager. Ubuntu Desktop при этом обычно получает декларативную конфигурацию через Netplan с renderer NetworkManager.

systemctl is-active NetworkManager
nmcli general status
nmcli device status
Команда Назначение
nmcli general status Общее состояние
nmcli device status Интерфейсы
nmcli connection show Профили
nmcli connection show --active Активные профили
nmcli device wifi list Wi-Fi сети
nmcli radio wifi Состояние Wi-Fi
nmcli networking Сетевое управление
nmtui Текстовое меню

Подключение к Wi-Fi:

nmcli device wifi list
nmcli --ask device wifi connect "SSID"
nmcli connection show --active

Параметр --ask не оставляет пароль прямо в истории команд.

Ethernet с DHCP:

sudo nmcli connection add type ethernet ifname eth0 con-name lan-dhcp \
  ipv4.method auto ipv6.method auto
sudo nmcli connection up lan-dhcp

Статический IPv4:

sudo nmcli connection add type ethernet ifname eth0 con-name lan-static \
  ipv4.method manual \
  ipv4.addresses 192.168.10.20/24 \
  ipv4.gateway 192.168.10.1 \
  ipv4.dns "192.168.10.1 1.1.1.1" \
  ipv6.method disabled

sudo nmcli connection up lan-static
nmcli -p connection show lan-static
ip -br a
ip route

Изменение профиля:

sudo nmcli connection modify "Wired connection 1" \
  ipv4.method manual \
  ipv4.addresses 192.168.10.20/24 \
  ipv4.gateway 192.168.10.1 \
  ipv4.dns "192.168.10.1 1.1.1.1"

sudo nmcli connection down "Wired connection 1"
sudo nmcli connection up "Wired connection 1"

Изменение адреса, шлюза или профиля через SSH может немедленно оборвать соединение. Подготовьте консольный доступ или автоматический откат.

VLAN через NetworkManager:

sudo nmcli connection add type vlan con-name vlan100 \
  ifname eth0.100 dev eth0 id 100 \
  ipv4.method manual ipv4.addresses 192.168.100.2/24 \
  ipv6.method disabled
sudo nmcli connection up vlan100

Не настраивайте один интерфейс двумя системами. Если интерфейс одновременно описан в /etc/network/interfaces, Netplan, NetworkManager и systemd-networkd, возможны гонки, пропадание адреса и неожиданные маршруты. Сначала определите реального владельца интерфейса через systemctl, nmcli и networkctl.

Netplan, systemd-networkd и ifupdown: постоянная настройка сети

Низкоуровневые команды ip меняют состояние ядра временно. Постоянная конфигурация зависит от сетевого менеджера. В Ubuntu основным декларативным слоем является Netplan. В Debian могут применяться NetworkManager, ifupdown, systemd-networkd или Netplan в облачной среде.

Как определить, кто управляет сетью

systemctl is-active NetworkManager
systemctl is-active systemd-networkd
systemctl is-active networking
networkctl status 2>/dev/null
nmcli device status 2>/dev/null
ls -la /etc/netplan /etc/systemd/network /etc/network/interfaces 2>/dev/null

Ubuntu Netplan: основные команды

КомандаДля чего нужнаПример
netplan getПоказать объединенную конфигурацию Netplan.sudo netplan get
netplan generateПроверить YAML и сгенерировать backend-конфигурацию.sudo netplan generate
netplan tryВременно применить конфигурацию с автоматическим откатом.sudo netplan try
netplan applyПрименить конфигурацию.sudo netplan apply
netplan statusПоказать состояние интерфейсов и backend.netplan status --all
netplan status --diffСравнить желаемое и фактическое состояние.netplan status --diff

DHCP в Ubuntu Server

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

Статический IPv4, DNS и маршрут по умолчанию

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: false
      addresses:
        - 192.168.10.20/24
      nameservers:
        addresses:
          - 192.168.10.1
          - 1.1.1.1
        search:
          - home.lan
      routes:
        - to: default
          via: 192.168.10.1
sudo cp -a /etc/netplan /root/netplan-backup
sudo netplan generate
sudo netplan try
sudo netplan apply
ip -br address
ip route
resolvectl status

VLAN через Netplan

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0: {}
  vlans:
    vlan100:
      id: 100
      link: enp1s0
      addresses:
        - 192.168.100.2/24

Bridge через Netplan

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0: {}
  bridges:
    br0:
      interfaces:
        - enp1s0
      dhcp4: true
      parameters:
        stp: true
        forward-delay: 4

Debian с systemd-networkd

# /etc/systemd/network/20-wired.network
[Match]
Name=enp1s0

[Network]
Address=192.168.10.30/24
Gateway=192.168.10.1
DNS=192.168.10.1
DNS=1.1.1.1
sudo systemctl enable --now systemd-networkd
networkctl status enp1s0
ip -br a
ip route

Debian с ifupdown

# /etc/network/interfaces
auto lo
iface lo inet loopback

auto enp1s0
iface enp1s0 inet static
    address 192.168.10.30/24
    gateway 192.168.10.1
    dns-nameservers 192.168.10.1 1.1.1.1

Удаленная смена IP. Netplan try снижает риск, но не заменяет консольный доступ. Ошибка в имени интерфейса, VLAN, gateway или firewall может немедленно оборвать SSH.

DNS и поиск проблем с именами

Команда Назначение Пример
resolvectl status DNS по интерфейсам resolvectl status
resolvectl query Разрешить имя или адрес resolvectl query example.com
resolvectl flush-caches Очистить кэш sudo resolvectl flush-caches
dig Подробный DNS-запрос dig example.com A
dig @server Запрос к конкретному DNS dig @1.1.1.1 example.com A
dig +trace Пройти делегирование от корня dig +trace example.com
host Краткий запрос host example.com
nslookup Старый DNS-клиент nslookup example.com
getent hosts Разрешение через системный NSS getent hosts example.com

Как отличить DNS от маршрута:

ping -c 3 1.1.1.1
getent hosts example.com
resolvectl status
dig example.com
curl -I https://example.com
  • IP доступен, имя нет - вероятна проблема DNS.
  • Не доступен шлюз - интерфейс, VLAN, кабель, Wi-Fi или локальный маршрут.
  • Шлюз доступен, внешний IP нет - маршрут, NAT, провайдер или firewall.
  • DNS работает, HTTPS нет - время, TLS, proxy, MTU, firewall или сервис.

/etc/hosts:

127.0.0.1 localhost
192.168.10.10 nas.home.lan nas

Не делайте /etc/resolv.conf неизменяемым без понимания схемы. Сначала:

readlink -f /etc/resolv.conf
resolvectl status
nmcli connection show --active

Проверка, кто управляет /etc/resolv.conf

readlink -f /etc/resolv.conf
ls -l /etc/resolv.conf
systemctl is-active systemd-resolved
resolvectl status
nmcli dev show | grep -i dns

В Ubuntu systemd-resolved обычно является частью стандартной схемы. В Debian он может быть установлен и включен, но это зависит от выбранной конфигурации. Не заменяйте символическую ссылку /etc/resolv.conf обычным файлом, пока не понимаете, кто должен обновлять DNS.

SSH, ключи и безопасное удаленное управление

SSH обеспечивает зашифрованный вход, выполнение команд, передачу файлов и туннелирование.

Команда Назначение Пример
ssh Подключиться к серверу ssh user@server
ssh -p Нестандартный порт ssh -p 2222 user@server
ssh -i Конкретный ключ ssh -i ~/.ssh/id_ed25519 user@server
ssh-keygen Создать ключ ssh-keygen -t ed25519 -a 100
ssh-copy-id Установить открытый ключ ssh-copy-id user@server
ssh-agent Агент ключей eval "$(ssh-agent -s)"
ssh-add Добавить ключ в агент ssh-add ~/.ssh/id_ed25519
scp Копирование через SSH scp file user@server:/tmp/
sftp Передача файлов sftp user@server
ssh -L Локальный туннель ssh -L 8080:127.0.0.1:80 user@server
ssh -R Удаленный туннель ssh -R 9000:127.0.0.1:9000 user@server
ssh -D SOCKS-прокси ssh -D 1080 user@server

Создание Ed25519:

ssh-keygen -t ed25519 -a 100 -C "admin@workstation"
ssh-copy-id user@server
ssh user@server

Закрытый ключ остается на клиенте. Файл .pub можно копировать на сервер. Закрытый ключ защищайте passphrase.

~/.ssh/config:

Host web-prod
    HostName 203.0.113.10
    User admin
    Port 22
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes
    ServerAliveInterval 30
    ServerAliveCountMax 3
ssh web-prod
scp backup.tar.gz web-prod:/tmp/

Установка сервера:

sudo apt update
sudo apt install openssh-server
sudo systemctl enable --now ssh
systemctl status ssh
sudo ss -lntp | grep ':22'

Безопасное изменение:

sudo cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo editor /etc/ssh/sshd_config
sudo sshd -t
sudo systemctl reload ssh

Базовые параметры усиления:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 4
X11Forwarding no

Сначала проверьте вход по ключу во второй независимой сессии. Только затем отключайте пароль. На удаленном сервере нужен резервный способ доступа.

При первом входе сверяйте отпечаток host key через доверенный канал. Не удаляйте запись known_hosts только ради исчезновения предупреждения.

Firewall: nftables в Debian и UFW в Ubuntu

nft управляет правилами Netfilter для фильтрации, NAT и классификации пакетов.

Команда Назначение Пример
nft list ruleset Полный набор правил sudo nft list ruleset
nft list tables Список таблиц sudo nft list tables
nft -a list ruleset Правила с handle sudo nft -a list ruleset
nft -c -f Проверить файл без применения sudo nft -c -f /etc/nftables.conf
nft -f Загрузить файл sudo nft -f /etc/nftables.conf
nft monitor Наблюдать изменения sudo nft monitor

Минимальный firewall для одиночного сервера:

#!/usr/sbin/nft -f

flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0;
        policy drop;

        iifname "lo" accept
        ct state established,related accept
        ct state invalid drop

        ip protocol icmp accept
        ip6 nexthdr icmpv6 accept

        tcp dport 22 accept
    }

    chain forward {
        type filter hook forward priority 0;
        policy drop;
    }

    chain output {
        type filter hook output priority 0;
        policy accept;
    }
}
sudo cp -a /etc/nftables.conf /etc/nftables.conf.bak
sudo editor /etc/nftables.conf
sudo nft -c -f /etc/nftables.conf
sudo nft -f /etc/nftables.conf
sudo nft list ruleset
sudo systemctl enable --now nftables

До применения разрешите фактический SSH-порт и management-сеть. Firewall способен немедленно отрезать удаленный доступ.

Ограничение SSH подсетью:

ip saddr 192.168.10.0/24 tcp dport 22 accept

Пример NAT:

table ip nat {
    chain postrouting {
        type nat hook postrouting priority srcnat;
        oifname "wan0" ip saddr 192.168.50.0/24 masquerade
    }
}

Включение маршрутизации:

sudo sysctl -w net.ipv4.ip_forward=1
printf '%s\n' 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-router.conf
sudo sysctl --system

Для полноценного маршрутизатора также нужны корректные правила forward.

UFW в Ubuntu

UFW является удобным frontend для host-based firewall. Он упрощает типовые правила, но администратор все равно должен понимать входящий, исходящий и транзитный трафик.

КомандаДля чего нужнаПример
ufw status verboseПоказать состояние, политики и активные правила.sudo ufw status verbose
ufw status numberedПоказать правила с номерами.sudo ufw status numbered
ufw default deny incomingЗапретить новые входящие соединения по умолчанию.sudo ufw default deny incoming
ufw default allow outgoingРазрешить исходящий трафик по умолчанию.sudo ufw default allow outgoing
ufw allow OpenSSHРазрешить профиль OpenSSH.sudo ufw allow OpenSSH
ufw allow fromРазрешить подсети доступ к порту.sudo ufw allow from 192.168.10.0/24 to any port 22 proto tcp
ufw limitОграничить частоту новых подключений.sudo ufw limit 22/tcp
ufw deleteУдалить правило по номеру.sudo ufw delete 3
ufw enableВключить firewall.sudo ufw enable
ufw disableОтключить UFW.sudo ufw disable
ufw resetУдалить пользовательские правила.sudo ufw reset

Безопасное включение UFW на удаленном сервере

sudo ufw status verbose
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status numbered

Сначала разрешите реальный SSH-порт. Профиль OpenSSH обычно разрешает порт 22. Если sshd слушает другой порт, создайте правило для него до ufw enable. Держите вторую SSH-сессию и консоль провайдера.

Можно ли одновременно редактировать UFW и nftables вручную

Технически правила могут сосуществовать, но ручные изменения способны конфликтовать с тем, что генерирует UFW. Выберите один основной способ управления firewall, документируйте исключения и после каждого изменения проверяйте итоговый ruleset.

sudo ufw status verbose
sudo nft list ruleset
sudo ss -lntup

Команды сетевого администратора

tcpdump

Команда Назначение Пример
tcpdump -D Интерфейсы захвата sudo tcpdump -D
tcpdump -i Конкретный интерфейс sudo tcpdump -i eth0
tcpdump -nn Без DNS и имен портов sudo tcpdump -i any -nn
host Фильтр по узлу tcpdump host 192.168.1.10
port Фильтр по порту tcpdump port 53
-w Записать PCAP tcpdump -w capture.pcap
-r Прочитать PCAP tcpdump -r capture.pcap
sudo tcpdump -i any -nn 'tcp port 443'
sudo tcpdump -i eth0 -nn 'udp port 53'
sudo tcpdump -i eth0 -nn 'host 192.168.10.25 and not port 22'
sudo tcpdump -i eth0 -nn -s 0 -c 500 -w problem.pcap

Nmap для инвентаризации своей сети

nmap -sn 192.168.10.0/24
nmap -sT -p 22,80,443 192.168.10.20
sudo nmap -sS -sV -p 1-1000 192.168.10.20
nmap --reason 192.168.10.20

Используйте Nmap, tcpdump и сетевые и диагностические инструменты только в собственной инфраструктуре или по явно оформленному разрешению.

netcat

nc -vz 192.168.10.20 22
nc -vz example.com 443
printf 'GET / HTTP/1.0\r\nHost: example.com\r\n\r\n' | nc example.com 80

Маршрутизация и policy routing

ip route get 8.8.8.8
ip rule show
ip route show table all
ip -s link show dev eth0
ip -s neigh show

VLAN и bridge через ip

sudo ip link add link eth0 name eth0.100 type vlan id 100
sudo ip link set eth0.100 up
sudo ip addr add 192.168.100.2/24 dev eth0.100

sudo ip link add br0 type bridge
sudo ip link set eth1 master br0
sudo ip link set br0 up
sudo bridge link

Эти изменения временные и обычно исчезают после перезагрузки.

Полезные счетчики:

ip -s link
ss -s
nstat
ethtool -S eth0
cat /proc/net/dev

Основы Bash-скриптов

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

#!/usr/bin/env bash
set -Eeuo pipefail

readonly BACKUP_DIR="/srv/backups"
readonly SOURCE_DIR="/srv/data"

log() {
    printf '%s %s\n' "$(date --iso-8601=seconds)" "$*"
}

cleanup() {
    log "Завершение скрипта"
}
trap cleanup EXIT

mkdir -p "$BACKUP_DIR"

archive="$BACKUP_DIR/data-$(date +%F-%H%M%S).tar.gz"
tar -czf "$archive" -C "$SOURCE_DIR" .

log "Создан архив: $archive"
  • -e - завершиться при необработанной ошибке.
  • -u - неизвестная переменная является ошибкой.
  • pipefail - ошибка любой команды в конвейере важна.
  • trap - обработчик выхода или сигнала.

Аргументы:

#!/usr/bin/env bash

if [[ $# -ne 1 ]]; then
    echo "Использование: $0 <имя-службы>" >&2
    exit 2
fi

service_name="$1"

if systemctl is-active --quiet "$service_name"; then
    echo "$service_name работает"
    exit 0
else
    echo "$service_name не работает" >&2
    exit 1
fi

Условия и циклы:

if [[ -f /etc/os-release ]]; then
    source /etc/os-release
    echo "$PRETTY_NAME"
fi

for file in /var/log/*.log; do
    [[ -e "$file" ]] || continue
    echo "$file"
done

while read -r user shell; do
    printf '%-20s %s\n' "$user" "$shell"
done < <(awk -F: '{print $1, $7}' /etc/passwd)

Проверка:

bash -n script.sh
shellcheck script.sh
chmod +x script.sh
./script.sh

Почти всегда пишите "$variable". Без кавычек пробелы, * и пустые значения способны изменить аргументы.

Особенности Ubuntu: драйверы, cloud-init, Pro, Desktop и Server

Ubuntu добавляет к общей базе Debian несколько собственных административных инструментов. Они особенно заметны на серверах, облачных образах и рабочих станциях с проприетарными драйверами.

ubuntu-drivers и драйверы оборудования

КомандаДля чего нужнаПример
ubuntu-drivers devicesПоказать обнаруженное оборудование и рекомендованные драйверы.ubuntu-drivers devices
ubuntu-drivers listПоказать доступные пакеты драйверов.ubuntu-drivers list
ubuntu-drivers installУстановить рекомендованные драйверы.sudo ubuntu-drivers install
lspci -nnkПоказать устройство, используемый драйвер и доступные модули.lspci -nnk
modinfoПоказать информацию о модуле ядра.modinfo nvidia
mokutil --sb-stateПроверить состояние Secure Boot.mokutil --sb-state

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

sudo ubuntu-drivers devices
sudo ubuntu-drivers install
sudo reboot
lspci -nnk
sudo journalctl -k -b | grep -iE 'nvidia|amdgpu|firmware|error'

Не устанавливайте драйвер с сайта производителя поверх пакетов Ubuntu без причины. Ручной installer может конфликтовать с DKMS, Secure Boot, обновлениями ядра и пакетным менеджером. Для большинства систем сначала используйте ubuntu-drivers и официальные пакеты репозитория.

Cloud-init

Облачные образы Ubuntu часто получают пользователей, SSH-ключи, hostname, сеть и пакеты через cloud-init. Ручная правка файла может быть перезаписана источником данных при следующей загрузке.

КомандаДля чего нужнаПример
cloud-init statusПоказать состояние и завершение этапов.cloud-init status --long
cloud-init queryПрочитать данные instance metadata.cloud-init query --all
cloud-init analyze blameПоказать, какие этапы задержали загрузку.cloud-init analyze blame
cloud-init cleanОчистить состояние для повторной инициализации. Опасно на рабочей VM.sudo cloud-init clean
cloud-init status --long
sudo journalctl -u cloud-init -u cloud-config -u cloud-final -b
sudo cat /var/log/cloud-init.log
sudo cat /var/log/cloud-init-output.log

Ubuntu Pro и состояние поддержки

pro status
pro security-status
apt list --upgradable

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

Ubuntu Desktop и Ubuntu Server

Ubuntu Desktop

  • Обычно присутствуют GNOME, NetworkManager и графические настройки.
  • Может использовать Snap для части настольных приложений.
  • Драйверы удобно проверять через ubuntu-drivers.

Ubuntu Server

  • Обычно отсутствует графическая среда.
  • Сеть чаще описана в Netplan с renderer networkd.
  • Большинство задач выполняется через SSH, systemd и конфигурационные файлы.

Команды, которые особенно часто встречаются в Ubuntu

КомандаДля чего нужнаПример
do-release-upgradeПереход на следующий поддерживаемый выпуск Ubuntu.sudo do-release-upgrade
netplan tryПроверить новую сеть с таймером отката.sudo netplan try
ufwУправлять host-based firewall.sudo ufw status verbose
snapУправлять snap-пакетами.snap list
ubuntu-driversПодобрать и установить драйверы.sudo ubuntu-drivers install
proПроверить сервисы Ubuntu Pro.pro status
cloud-initПроверить первичную настройку облачного образа.cloud-init status --long

AppArmor в Debian и Ubuntu

AppArmor дополняет обычные права Unix обязательным контролем доступа по профилям приложений. В Ubuntu AppArmor обычно установлен и загружен по умолчанию. В Debian его также можно применять, но фактический набор включенных профилей зависит от установки.

КомандаДля чего нужнаПример
aa-statusПоказать загруженные профили и их режимы.sudo aa-status
apparmor_statusАльтернативная команда состояния.sudo apparmor_status
aa-complainПеревести профиль в режим регистрации без блокировки.sudo aa-complain /path/to/program
aa-enforceПеревести профиль в принудительный режим.sudo aa-enforce /path/to/program
apparmor_parser -rПерезагрузить измененный профиль.sudo apparmor_parser -r /etc/apparmor.d/profile
aa-logprofПроанализировать отказы и предложить изменения профиля.sudo aa-logprof
aa-genprofИнтерактивно создать новый профиль.sudo aa-genprof /path/to/program

Диагностика отказа AppArmor

sudo aa-status
sudo journalctl -k -g apparmor --since '-30 min'
sudo journalctl | grep -i 'apparmor="DENIED"'
sudo aa-logprof

Права файла и AppArmor проверяются отдельно

Даже если chmod и chown разрешают доступ, AppArmor может его заблокировать. И наоборот, разрешение в профиле AppArmor не отменяет обычные права пользователя, ACL и read-only mount.

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

Готовые алгоритмы диагностики

Нет доступа в интернет

ip -br a
ip link
ip route
ip route get 1.1.1.1
ping -c 3 <адрес_шлюза>
ping -c 3 1.1.1.1
getent hosts example.com
resolvectl status
curl -I --connect-timeout 10 https://example.com
sudo nft list ruleset

Порядок рассуждения:

  1. Нет link или интерфейс DOWN - кабель, Wi-Fi, драйвер, rfkill, порт коммутатора.
  2. Нет адреса - DHCP или профиль NetworkManager.
  3. Нет default route - шлюз или policy routing.
  4. Шлюз не отвечает - локальная сеть, VLAN, маска, ARP/NDP.
  5. Внешний IP работает, имя нет - DNS.
  6. DNS работает, TCP 443 нет - firewall, proxy, MTU, провайдер или сервис.

Служба не запускается

systemctl status service --no-pager -l
sudo journalctl -u service -b --no-pager
systemctl cat service
systemctl show service -p User -p Group -p ExecStart -p Environment
sudo ss -lntup
sudo name-of-daemon --test-config
sudo systemctl restart service

Команда проверки зависит от программы:

sudo sshd -t
sudo nginx -t
sudo apache2ctl configtest
sudo nft -c -f /etc/nftables.conf

Закончилось место

df -hT
df -i
sudo du -xhd1 / | sort -h
sudo du -xhd1 /var | sort -h
sudo journalctl --disk-usage
sudo lsof +L1
sudo find /var -xdev -type f -size +1G -printf '%s %p\n' | sort -n

Не удаляйте незнакомые файлы. Сначала определите владельца пакета через dpkg -S, процесс через lsof и штатный способ очистки.

Высокая нагрузка

uptime
top
ps -eo pid,ppid,user,stat,%cpu,%mem,etimes,cmd --sort=-%cpu | head -20
ps -eo pid,ppid,user,stat,%cpu,%mem,etimes,cmd --sort=-%mem | head -20
vmstat 1
free -h
sudo pidstat 1
sudo iostat -xz 1

pidstat и iostat входят в пакет sysstat. Отделяйте CPU, память, swap, дисковый ввод-вывод и сетевое ожидание.

Порт должен слушать, но подключения нет

systemctl status service
sudo ss -lntup
sudo ss -lntp 'sport = :443'
curl -vk https://127.0.0.1/
ip -br a
sudo nft list ruleset
nc -vz server-ip 443
sudo tcpdump -i any -nn 'tcp port 443'
  • Порт не слушает - приложение не запущено или ошиблась конфигурация.
  • Слушает только 127.0.0.1 - удаленные клиенты не подключатся.
  • SYN приходит, ответа нет - локальный firewall или приложение.
  • SYN не приходит - маршрут, внешний firewall, NAT, ACL или неверный адрес.

После изменения конфигурации пропал SSH

  1. Использовать консоль провайдера, KVM, IPMI или локальный доступ.
  2. Проверить ip -br a, ip route и ss -lntp.
  3. Выполнить sshd -t.
  4. Проверить journalctl -u ssh -b.
  5. Проверить nftables и фактический порт.
  6. Вернуть резервную копию и выполнить systemctl reload ssh.

Система долго загружается

systemd-analyze
systemd-analyze critical-chain
systemd-analyze blame
systemctl --failed
sudo journalctl -b -p warning..alert
sudo dmesg -T | grep -iE 'error|fail|timeout'

Не создаются файлы, хотя df показывает свободное место

df -hT
df -i
findmnt -T /path
mount | grep ' /path '
dmesg -T | tail -100

Возможные причины: закончились inode, файловая система стала read-only, исчерпана quota, нет прав или повреждена файловая система.

Не монтируется диск

lsblk -f
sudo blkid
sudo dmesg -T | tail -100
sudo fsck -N /dev/sdX1
sudo mount -v /dev/sdX1 /mnt/test

fsck -N показывает, что было бы запущено, но не выполняет проверку. Настоящий fsck обычно запускают на размонтированном разделе.

Опасные команды и типовые ошибки

rm -rf и широкие шаблоны

Рекурсивное удаление не имеет корзины. Опасны пустые переменные, неправильный текущий каталог и пробел в пути.

Плохо:

rm -rf "$DIR"/*

Если DIR неожиданно пуст, последствия могут быть критичными. До удаления проверяйте значение:

: "${DIR:?DIR is not set}"
realpath "$DIR"
find "$DIR" -mindepth 1 -maxdepth 1 -print

dd of=/dev/...

Перезаписывает блочное устройство без диалога. Всегда сверяйте lsblk, модель, размер и транспорт.

mkfs, fdisk, parted

Могут уничтожить структуру раздела. Перед изменением сохраните схему:

sudo sfdisk --dump /dev/sda > sda-partitions.txt
lsblk -f > lsblk-before.txt
sudo blkid > blkid-before.txt

chmod -R 777

Не исправляет архитектуру прав, а открывает запись всем пользователям.

chown -R не на тот каталог

Перед рекурсивным изменением:

pwd
realpath /target
find /target -maxdepth 2 -printf '%u:%g %m %p\n' | head -100

Правка SSH или firewall в единственной сессии

Нужны вторая сессия, проверка синтаксиса и резервный доступ.

curl URL | sh

Запускает удаленный код без предварительной проверки. Безопаснее:

curl -fL URL -o installer.sh
less installer.sh
sha256sum installer.sh
bash installer.sh

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

Безусловный apt autoremove -y

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

sudo apt-mark manual package-name

Постоянная работа в root

Одна ошибка в пути или переменной затронет всю систему. Используйте обычную учетную запись и sudo для конкретных действий.

Копирование команд без понимания

Проверяйте:

type command
command -v command
man command
command --help

Краткая шпаргалка

Команда Для чего
pwd Текущий каталог
ls -lah Все файлы подробно
cd /path Перейти в каталог
cp -a src dst Копировать с атрибутами
mv old new Переместить или переименовать
rm -i file Удалить с подтверждением
find /path ... Найти файлы
grep -Rni text /path Найти текст
less file Прочитать длинный файл
tail -f log Следить за журналом
chmod 640 file Изменить права
chown user:group file Изменить владельца
sudo command Повысить права одной команды
sudo apt update Обновить индекс пакетов
sudo apt install package Установить пакет
sudo apt full-upgrade Полное обновление
ps aux Процессы
top Монитор процессов
kill PID Корректно завершить процесс
systemctl status service Состояние службы
journalctl -u service Журнал службы
lsblk -f Диски и файловые системы
df -hT Свободное место
du -xhd1 /var Размер каталогов
ip -br a Интерфейсы и адреса
ip route Маршруты
sudo ss -lntup Слушающие порты
resolvectl status DNS
dig example.com DNS-запрос
curl -I URL Проверить HTTP
ssh user@server Удаленный вход
rsync -a src/ dst/ Синхронизация
sudo nft list ruleset Правила firewall
sudo tcpdump -i any -nn Захват трафика
nmap -sn NETWORK Инвентаризация разрешенной сети

Частые вопросы о Debian, Ubuntu и командах Linux

Команды Debian и Ubuntu сильно отличаются?

Нет. Большинство базовых команд, systemd, APT, SSH, права и сетевые утилиты совпадают. Отличия чаще находятся в репозиториях, сетевой конфигурации, release upgrade и дополнительных инструментах Ubuntu.

Что лучше для сервера: Debian или Ubuntu Server?

Debian выбирают за консервативную стабильную базу и минимализм. Ubuntu Server удобна в облаках, имеет LTS, Netplan, cloud-init и большую экосистему Canonical. Правильный выбор зависит от требований приложения, поддержки и компетенций администратора.

Чем apt update отличается от apt upgrade?

apt update обновляет локальные сведения о пакетах. apt upgrade устанавливает доступные обновления. Выполнение только apt update не обновляет установленные программы.

Когда использовать apt full-upgrade?

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

Можно ли подключить PPA Ubuntu в Debian?

Нет. PPA собирается для конкретных выпусков Ubuntu. Подключение его в Debian может привести к конфликту зависимостей и частичному смешиванию дистрибутивов.

Чем Netplan отличается от NetworkManager?

Netplan хранит декларативную конфигурацию YAML и генерирует настройки для backend. Backend может быть NetworkManager или systemd-networkd. NetworkManager непосредственно управляет интерфейсами и профилями подключения.

Как безопасно применить статический IP в Ubuntu Server?

Создайте резервную копию /etc/netplan, выполните netplan generate, затем netplan try. На удаленном сервере держите консольный доступ, потому что ошибка адреса, маршрута или VLAN может оборвать SSH.

Что использовать в Ubuntu: UFW или nftables?

Для простого host-based firewall удобен UFW. Для сложной маршрутизации, NAT и детального контроля применяют nftables. Не следует одновременно менять один ruleset несколькими несогласованными инструментами.

Как безопасно обновить Ubuntu на следующую LTS?

Обновите текущий выпуск, проверьте backup, свободное место, сторонние репозитории и release notes. Используйте do-release-upgrade. Переход LTS-to-LTS обычно открывается после первого point release новой LTS.

Почему появляется Permission denied, хотя права chmod выглядят правильно?

Проверьте права всех каталогов пути, владельца, ACL, read-only mount, AppArmor, capabilities и пользователя службы. Полезны id, namei -l, getfacl, findmnt и журнал AppArmor.

Как увидеть открытые порты и процесс?

Используйте sudo ss -lntup. Дополнительно подходят sudo lsof -nP -i и systemctl status нужной службы.

Какие команды особенно опасны?

rm -rf, dd, mkfs, fdisk, parted, lvreduce, рекурсивные chmod и chown, изменение fstab, Netplan, SSH, UFW и nftables. Перед выполнением нужен backup, dry-run или проверка синтаксиса и путь отката.

Как изучать Debian и Ubuntu на практике

Не пытайтесь запомнить все команды сразу. Создайте две тестовые виртуальные машины: минимальную Debian и Ubuntu Server LTS. Сделайте snapshots и повторяйте одни и те же задачи в обеих системах. Так различия станут понятны без риска для рабочего компьютера или сервера.

1Файлы и терминал

pwd, ls, cd, cp, mv, rm, less, nano, man.

2Права и пакеты

id, chmod, chown, sudo, apt, dpkg.

3Службы и журналы

systemctl, journalctl, процессы и загрузка.

4Диски и backup

lsblk, findmnt, df, du, rsync, tar.

5Сеть и SSH

ip, ss, DNS, NetworkManager, Netplan, SSH.

6Администрирование

firewall, мониторинг, AppArmor и Bash.

Проверочный алгоритм перед любой системной правкой

  1. Определить текущую версию, службу, интерфейс или устройство.
  2. Прочитать man, --help и комментарии конфигурации.
  3. Создать резервную копию с сохранением владельца и прав.
  4. Проверить синтаксис штатной командой.
  5. Применить минимальное изменение.
  6. Проверить статус, журнал, порт, маршрут или фактический результат.
  7. Зафиксировать изменение и способ отката.

Настройка Linux, сети, VPN, NAS и удаленного доступа

Компьютерная помощь в Петровском и Туле

Диагностика Debian и Ubuntu, настройка локальной сети, Wi-Fi, VPN, NAS, домашнего сервера, видеонаблюдения и безопасного удаленного доступа.

Перейти в раздел компьютерной помощи