## Оглавление 1. [Настройка сервера](#настройка-сервера) 2. [Пакетный менеджер](#пакетный-менеджер) 3. [Сеть](#сеть) 4. [База](#база) 5. [Система](#система) ### Настройка сервера - `groups username` - группы пользователя - `sudo addgroup groupname` - добавить группу - `sudo adduser username` - добавить пользователя - `sudo usermod -aG groupname username` - для добавления пользователя в группу без удаления его из других групп - `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/` - `/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` - если возникли проблемы с зависимостями ### Сеть - `cat /etc/ssh/sshd_config | grep Port` - показывает на каком порту открыт ssh - `ss -tulpn` - информация о текущих сетевых соединениях и портах - `curl ifconfig.me` - узнать публичный ip машины - `iptables -L` - правила файрвола - `iptables -L -v` - подробный вывод - `iptables -L --line-numbers` - `iptables -L -t nat` - позволяет указать конкретную таблицу для просмотра. Например, для просмотра правил NAT - `iperf3` - для измерения скорости передачи данных между серверами - `speedtest-cli` - спидтест - `speedtest-cli --list` - список серверов - `speedtest-cli --server SERVER_ID` ### База - `cp -p` - сохранить атрибуты файлов (время создания, права, владельца) - `cp -v` - выводить информацию о каждом копируемом файле - `mv -v` - подробный вывод при перемещении. - `chmod 644 /etc/passwd` - изменение прав доступа к файлам и директориям - `chown root:root /etc/hosts` - изменение владельца и группы - `ps -aux` - выводит список всех процессов с информацией о пользователях, загрузке, времени и командах - `ps -ef` - полная информация о процессах с идентификаторами владельцев - `top -o %CPU` - сортировка процессов по указанному полю (например, по CPU) - `kill -9 1234` - принудительное завершене процесса (1234 — PID процесса) - `df -h` - информация о файловых системах - `df -i` - иноды - `du` - отображение размера файлов и каталогов - `s` - отображает только итоговый размер - `--max-depth=1` - выводит размер каталога и его подкаталогов - `ifconfig` - информация о сетевых интерфейсах - `ss -tulpn` - информация о сетевых соединениях - `ping` - проверка доступности хоста - `traceroute` - через какие маршрутизаторы проходит пакет до хоста - `nslookup` - информация о DNS-сервере - `sudo useradd -m username` - добавление нового пользователя (`-m` - создание домашнего каталога) - `sudo passwd username` - установка или изменение пароля пользователя - `sudo usermod -aG sudo username` - добавить пользователя в группу `sudo` - `sudo groupadd developers` - создание новой группы - `tail -f /var/log/*` - логи (`-f` - обновление в реальном времени) - `journalctl` - утилита для просмотра логов служб, управляемых `systemd` - `-u ` - просмотр логов конкретной службы ```bash journalctl -u nginx ``` - `journalctl -u nginx -f` - просмотр логов в реальном времени - `journalctl -n 100` - последние 100 строк - `journalctl --since "2024-10-03 12:00:00" --until "2024-10-03 14:00:00"` - логи за конкретный период - `journalctl -p err` - можно показывать только ошибки - emerg (0): Аварийные сообщения. - alert (1): Требуют немедленных действий. - crit (2): Критические ошибки. - err (3): Ошибки. - warning (4): Предупреждения. - notice (5): Важные события. - info (6): Информационные сообщения. - debug (7): Отладочные сообщения. - `df -sh /tml` - развер директории - `smartctl -a /dev/sda` - смарт отчет диска, генерит сам диск - `free -m` - оперативная память - `cat /proc/meminfo` - подробно про память - `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` - пакеты через этот порт ъ - `tar` - работа с архивами - `-cvf` - создать архив - `-xvf` - извлечь архив - `-z` - использовать сжатие `gzip` ```bash tar -xvfz backup.tar.gz /var/www ``` `dmesg -T` - логи ядра системы ### Система - `lsof` - Команда lsof (List Open Files) в Linux используется для отображения списка открытых файлов в системе. В Linux (и Unix-подобных системах) практически все является файлом, включая сетевые соединения и устройства. - `lsof` - просмотр всех открытых файлов - `lsof -u username` - файлы открытые конкретным пользователем - `lsof -p 1234` - поиска файлов открытых определённым процессом - `lsof -i :80` - соединения по конкретному порту - `lsof /dev/sda1` - файлы использующие определённое устройство или файловую систему - `lsof | grep filename` - Если файл заблокирован и его нельзя удалить или переместить, `lsof` покажет, какой процесс его использует `strace` - системные вызовы ### Разное