diff --git a/docs/assets/favicon.ico b/docs/assets/favicon.ico deleted file mode 100644 index 7e0fab6..0000000 Binary files a/docs/assets/favicon.ico and /dev/null differ diff --git a/docs/linux/Команды.md b/docs/linux/Команды.md index 20cbee5..3210d37 100644 --- a/docs/linux/Команды.md +++ b/docs/linux/Команды.md @@ -3,35 +3,44 @@ ### Настройка сервера - `groups username` - группы пользователя -- `sudo addgroup groupname` - добавить группу +- `addgroup ` - добавить группу -- `sudo adduser username` - добавить пользователя +- `adduser `- добавить пользователя -- `sudo usermod -aG groupname username` - для добавления пользователя в группу без удаления его из других групп +- `usermod -aG ` - добавить пользователя в группу без удаления его из других групп + +- `su -`: если добавить - (или --login), это переключит вас на пользователя root и загрузит окружение (все переменные окружения будут инициализированы для пользователя root), как если бы вы вошли в систему как root + +- `lsb_release -a` или `hostnamectl` - версия ОС (и не только) -- `su -`: если добавить - (или --login), это переключит вас на пользователя root и загрузит окружение, как если бы вы вошли в систему как root. Это означает, что все переменные окружения будут инициализированы для пользователя root, и вы будете находиться в домашнем каталоге root. -- `lsb_release -a` или `hostnamectl` - версия ОС ### Пакетный менеджер (apt) -- `apt remove --purge` или `sudo apt purge` - удаляет как сам пакет, так и все связанные с ним конфигурационные файлы -- `sudo apt autoremove` - используется для удаления пакетов, которые были автоматически установлены в качестве зависимостей для других пакетов, но больше не нужны -- `sudo apt update` - система скачивает список пакетов и их версий с серверов репозиториев, но **не устанавливает и не обновляет пакеты**. -- `sudo apt upgrade` - обновляет все установленные пакеты до последних доступных версий, основываясь на информации, полученной с помощью `apt update`, однако эта команда не устанавливает новые пакеты или не удаляет старые. Если для обновления пакета требуются новые зависимости, они не будут установлены. -- `sudo apt full-upgrade` - не только обновляет пакеты, но и может устанавливать новые зависимости и удалять старые пакеты, если это необходимо для завершения обновления -- `sudp apt install` - устанавливает пакет -- `supo apt search ` - поиск пакета по имени -- `sudo apt show` - инфо о пакете -- `sudo apt autoclean` - для удаления старых неиспользуемых файлов -- `sudo apt clean` - APT хранит загруженные .deb файлы в кэше на диске, чтобы очистить этот кэш. Эта команда удаляет все файлы в dir `/var/cache/apt/archives/` +- `apt remove --purge ` или `apt purge ` - удаляет сам пакет и все связанные с ним конфиги +- `apr remove ` - удаляет пакет +- `apt autoremove` - используется для удаления пакетов, которые были автоматически установлены в качестве зависимостей для других пакетов, но больше не нужны +- `apt update` - скачивает список пакетов и их версий с серверов репозиториев, но **не устанавливает и не обновляет пакеты**. +- `apt upgrade` - обновляет все установленные пакеты до последних доступных версий, основываясь на информации, полученной с помощью `apt update`, однако эта команда не устанавливает новые пакеты или не удаляет старые. Если для обновления пакета требуются новые зависимости, они не будут установлены. +- `apt full-upgrade` - не только обновляет пакеты, но и может устанавливать новые зависимости и удалять старые пакеты, если это необходимо для завершения обновления +- `sudp apt install ` - устанавливает пакет +- `supo apt search ` - поиск пакета по имени +- `apt show ` - инфо о пакете +- `apt autoclean` - для удаления старых неиспользуемых файлов +- `apt clean` - APT хранит загруженные .deb файлы в кэше на диске, чтобы очистить этот кэш. Эта команда удаляет все файлы в dir `/var/cache/apt/archives/` - `/etc/apt/sources.list` - основной файл, где перечислены все репозитории. Этот файл указывает, откуда APT будет загружать пакеты. - `/etc/apt/sources.list.d/` - в этот каталог можно добавлять дополнительные файлы для подключения новых репозиториев. > Есть ещё `apt-get`, но это более старая команда, которая в основном используется для скриптов, потому что не предусматривает интерактивную работу с системой APT работает поверх более низкоуровневого инструмента `dpkg`, который непосредственно устанавливает .deb пакеты. -- `sudo dpkg -i package_name.deb` - для установки `.deb` пакета -- `sudo apt --fix-broken install` - если возникли проблемы с зависимостями +- `dpkg -i package_name.deb` - для установки `.deb` пакета +- `apt --fix-broken install` - если возникли проблемы с зависимостями ---- + +### Пакетный менеджер (dnf, rpm) +- `dnf install https://example.com/package-file.rpm` - установка rpm пакета напрямую из ссылки +- `dnf install ` - устанавливает пакет из репозитория +- `dnf remove ` - удаляет пакет +- `dnf upgrade` - обновляет систему +- `dnf search ` - поиск пакета - `rpm -ivh .rpm` - установка rpm пакета - `rpm -e .rpm` - удаления пакета @@ -41,27 +50,95 @@ APT работает поверх более низкоуровневого ин - `rpm -ql ` - список файлов в пакете - `dnf install .rpm` - установка rpm пакета через dnf, dnf будет управлять зависимостями -- `dnf install https://example.com/package-file.rpm` - установка rpm пакета напрямую из ссылки +!!! tip "Лучше использовать высокоуровневый пакетный менеджер (apt, dnf)" + Высокоуровневые пакетные менеджеры (например, dnf, apt) удобнее и безопаснее, поскольку автоматически управляют зависимостями, работают с репозиториями, проверяют конфликты и целостность пакетов, одним словом, упрощают обновление ПО. При работе с rpm, dpkg требуется самостоятельная работа с зависимостями и есть вероятность накосячить с установкой, а если ПО требует дополнительные библиотеки, их придётся ставить отдельно. + ### Сеть +- `ifconfig` - сетевые интерфейсы + статистика +- `ping` - проверка доступности хоста +- `traceroute` - путь пакетов от сервера к серверу (промежуточные маршрутизаторы) (`mtr` покажет путь в лайве) +- `nslookup`, `dig @ ` - инфа о DNS сервере - `cat /etc/ssh/sshd_config | grep Port` - показывает на каком порту открыт ssh - `ss -tulpn` - информация о текущих сетевых соединениях и портах - `curl ifconfig.me` - узнать публичный ip машины -- `iptables -L` - правила файрвола +- `curl -Lv domain.ru` - получить html страницу (`v` - подробный вывод, `L` - разрешает редиректы) +- `curl -v telnet://127.0.0.1:22` - доступность порта +- `tcpdump -i any port 9100 -nn` - пакеты через порт +- `iptables -L` - правила файрвола (показывает все цепочки (chains) и правила для них) - `iptables -L -v` - подробный вывод - `iptables -L --line-numbers` - `iptables -L -t nat` - позволяет указать конкретную таблицу для просмотра. Например, для просмотра правил NAT -- `iperf3` - для измерения скорости передачи данных между серверами +??? tip **ufw** - удобная надстройка над iptables + Чаще используют в Ubuntu и Debian + ```bash + # Включаем фаерволл + sudo ufw enable + # Отключить фаерволл + sudo ufw disable + # Перезагрузить + ufw reload + + # Не пускать входящий трафик + ufw default deny incoming + # Пускать исходящий + ufw default allow outgoing + + # Разрешить доступ ко всем портам с определённого IP-адреса + ufw allow from + # Разрешить доступ к порту + ufw allow + # Разрешить доступ к порту с определённого IP-адреса + sudo ufw allow from to any port + # Чтобы запретить - deny вместо allow + + # Показать состояние ufw и активные правила + ufw status verbose + # Показать правила с нумерацией + ufw status numbered + # Удалить правило по номеру + ufw delete + + # Интерфейсы + sudo ufw allow in on eth0 + sudo ufw allow out on eth0 + + # Удалить правило (будут применены настройки по умолчанию) + ufw delete allow / # удалить разрешение + ufw delete deny / # удалить запрет + + # Сброс всех правил + sudo ufw reset + + # Логи ufw + sudo tail -f -n 100 /var/log/ufw.log + # Изменить уровень логирования + sudo ufw logging + + # Разрешить доступ к порту с определённого ip + sudo ufw allow from to any port + + # Пресеты + # Вывести список пресетов + sudo ufw app list + + # Открыть все соединения, которые нужны Nginx + sudo ufw allow "Nginx Full" + # Удалить правило для пресета + sudo ufw delete allow "Nginx Full" + ``` + +- `iperf3` - для измерения скорости передачи данных - `speedtest-cli` - спидтест - `speedtest-cli --list` - список серверов - `speedtest-cli --server SERVER_ID` - `fuser 9095/tcp` - проверить доступность порта - `ethtool enp0s3` - диагностика сетевого интерфейса на физическом уровне (`ethtool enp0s3` - статистика) - `arp -a` - arp таблица (ip -> mac) -- `ip route` - таблица маршрутизации (можно проверить есть ли шлюз) +- `ip route` - таблица маршрутизации - `resolvectl status` - инфо о днс - `cat /etc/resolv.conf` - инфо о днс -- `ip -4 route get 8.8.8.8` +- `ip -4 route get 8.8.8.8` - используется для отображения маршрута, который система выберет для достижения указанного ip (какой интерфейс будет использован, через какой шлюз пойдёт трафик и с какого ip) ### База @@ -88,10 +165,10 @@ APT работает поверх более низкоуровневого ин - `traceroute` - через какие маршрутизаторы проходит пакет до хоста - `nslookup` - информация о DNS-сервере -- `sudo useradd -m username` - добавление нового пользователя (`-m` - создание домашнего каталога) -- `sudo passwd username` - установка или изменение пароля пользователя -- `sudo usermod -aG sudo username` - добавить пользователя в группу `sudo` -- `sudo groupadd developers` - создание новой группы +- `useradd -m username` - добавление нового пользователя (`-m` - создание домашнего каталога) +- `passwd username` - установка или изменение пароля пользователя +- `usermod -aG username` - добавить пользователя в группу `sudo` +- `groupadd developers` - создание новой группы - `tail -f /var/log/*` - логи (`-f` - обновление в реальном времени) - `journalctl` - утилита для просмотра логов служб, управляемых `systemd` - `-u ` - просмотр логов конкретной службы @@ -120,7 +197,6 @@ APT работает поверх более низкоуровневого ин - `cat /proc/cpuinfo` - подробно про проц - `traceroute` - путь пакетов от сервера к серверу (промежуточные маршрутизаторы) (`mtr` покажет путь в лайве) - `nslookup`, `dig @ ` - инфа о DNS сервере - - `curl -Lv domain.ru` - получить html страницу - `curl -v telnet://127.0.0.1:22` - доступность порта - `tcpdump -i any port 9100 -nn` - пакеты через этот порт @@ -131,8 +207,8 @@ APT работает поверх более низкоуровневого ин ```bash tar -xvfz backup.tar.gz /var/www ``` -- `sudo tar -zxvf apache-activemq-6.1.3-bin.tar.gz -C /opt` - распаковать в каталог -- `tar xvf apache-tomcat-9.0*tar.gz -C /opt/_Tomcat/application1-8080 --strip-components=1` - каталог apache-tomcat-9.0* не будет создан +- `tar -zxvf apache-activemq-6.1.3-bin.tar.gz -C /opt` - распаковать в каталог +- `tar -zxvf apache-tomcat-9.0*tar.gz -C /opt/_Tomcat/application1-8080 --strip-components=1` - каталог apache-tomcat-9.0* не будет создан - `dmesg -T` - логи ядра системы ### Система @@ -154,8 +230,8 @@ APT работает поверх более низкоуровневого ин - `-p` - время работы системы - `less -S` - не переносит на новую строку -- `sudo reboot now` - перезагрузка системы -- `sudo shutdown now` - выключить компьютер +- `reboot now` - перезагрузка системы +- `shutdown now` - выключить компьютер - `watch "some command"` - переодически запускает команду - `lscpu` - информация о процессоре @@ -205,20 +281,19 @@ APT работает поверх более низкоуровневого ин - `cp -a source_file destination_directory/` - Опция `-a` эквивалентна комбинации нескольких опций: `-d` (сохраняет символические ссылки), `-p` (сохраняет права доступа, владельца и временные метки), и `-r` (рекурсивно копирует каталоги). - `cp -vu` - пропустить совпадающие файлы, а скопировать только файлы новее или отсутствующие ---- -`/etc/passwd` - инфо о пользователях в системе +- `/etc/passwd` - инфо о пользователях в системе ### Диски -- `sudo fdisk -l` +- `fdisk -l` - Показывает список всех подключенных устройств (жестких дисков, SSD и т.д.). - Отображает размер дисков, типы разделов, точки монтирования. - Полезно для диагностики, перед созданием или изменением разделов. - `lsblk` - показывает дерево всех подключенных устройств, их разделы, точки монтирования. (`-f` - для более детальной информации о файловых системах, `-p` - полные пути к устройствам, `-d` - показывает только диски, без разделов, `-J` - результат в виде json) -- `sudo cfdisk <устройство>` - команда для работы с разделами диска +- `cfdisk <устройство>` - команда для работы с разделами диска -- `sudo mkfs.<тип файловой системы> <устройство>` - команда в Linux для создания файловой системы на разделе диска. Она форматирует указанный раздел с выбранной файловой системой. +- `mkfs.<тип файловой системы> <устройство>` - команда в Linux для создания файловой системы на разделе диска. Она форматирует указанный раздел с выбранной файловой системой. - `/etc/fstab` - это файл конфигурации в Linux, который содержит информацию о том, какие файловые системы должны автоматически монтироваться при загрузке системы. @@ -235,14 +310,14 @@ APT работает поверх более низкоуровневого ин ``` UUID=3b14dabe-6a1a-4a1b-9e41-3d9b26b6ef1f / ext4 defaults 0 1 ``` -- `sudo blkid` - выводит информацию о всех блочных устройствах, включая UUID +- `blkid` - выводит информацию о всех блочных устройствах, включая UUID - `mount` - используется для подключения файловых систем (например, жестких дисков, флешек) к определенным точкам монтирования в файловой системе ``` mount [OPTIONS] ``` -- `sudo mount /dev/sda1 /mnt` - это монтирует раздел /dev/sda1 в директорию /mnt -- `sudo mount -t ext4 /dev/sda1 /mnt` - подключить с указанием типа файловой системы +- `mount /dev/sda1 /mnt` - это монтирует раздел /dev/sda1 в директорию /mnt +- `mount -t ext4 /dev/sda1 /mnt` - подключить с указанием типа файловой системы --- - `df -Th` - информация о файловых системах и их типах @@ -259,5 +334,4 @@ mount [OPTIONS] - `grep -A 10 <файл>` - вывести 10 строк после найденного файла - `htop -p ` - процесс на таком-то порту - `truncate -s 0 /var/log/messages` - -- `sudo find / -name pg_config 2>/dev/null` +- `find / -name pg_config 2>/dev/null`