Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| itechnology:linux [2019/11/07 13:32] – [Уменьшение размера Raid-1] jurik_phys | itechnology:linux [2025/01/11 23:34] (текущий) – jurik_phys | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== Linux ====== | ====== Linux ====== | ||
| + | |||
| + | ===== Создание нового пользователя | ||
| + | * Новый unix-пользователь< | ||
| + | * Домашний каталог для нового пользователя < | ||
| + | * Установка владельца для домашнего каталога< | ||
| + | * Задание пароля пользователя< | ||
| + | * Логин под новым пользователем< | ||
| ===== Переименование пользователя ===== | ===== Переименование пользователя ===== | ||
| Строка 13: | Строка 20: | ||
| mv / | mv / | ||
| * При необходимости заменить имя пользователя в конфигурационнфх файлах программ пользователя, | * При необходимости заменить имя пользователя в конфигурационнфх файлах программ пользователя, | ||
| + | |||
| + | ===== Общее локальное хранилище ===== | ||
| + | - Группа (data) пользователей общего локального ресурса< | ||
| + | - Каталог локального ресурса< | ||
| + | - Подключение каталога /mnt/data/ | ||
| + | - Установка gid и группы data на каталог< | ||
| + | chown root:data / | ||
| + | - Добавление пользователей в группу " | ||
| + | - Настройка прав доступа для вновь создаваемых каталогов< | ||
| + | # show result | ||
| + | getfacl / | ||
| ===== SSL-сертификат для сайта ===== | ===== SSL-сертификат для сайта ===== | ||
| Строка 23: | Строка 41: | ||
| - Другой вариант - получить (за соответствующую плату) сертификат от центра сертификации, | - Другой вариант - получить (за соответствующую плату) сертификат от центра сертификации, | ||
| - Необходимо скопировать сертификаты в каталог, | - Необходимо скопировать сертификаты в каталог, | ||
| + | |||
| + | Также инструкция от DigitalOcean [[ https:// | ||
| ===== VNC ===== | ===== VNC ===== | ||
| ==== Запуск при старте ситемы ==== | ==== Запуск при старте ситемы ==== | ||
| Строка 91: | Строка 111: | ||
| </ | </ | ||
| * Отправка скрытой копии на адрес отправителя позволяет сохранять отправленные сообщения на удалённом почтовом сервере. | * Отправка скрытой копии на адрес отправителя позволяет сохранять отправленные сообщения на удалённом почтовом сервере. | ||
| + | |||
| + | ===== Отправка online сообщения через Телеграм ===== | ||
| + | - Создание собственного бота: | ||
| + | * добавить в список пользователей @BotFather' | ||
| + | * начать с ним разговор и выполнить команду /newbot; | ||
| + | * установить человеко читаемое имя бота (name); | ||
| + | * установить уникальное имя бота (username) вида @super_messages_bot; | ||
| + | * сохранить в надёжном месте полученный TokenID созданного бота. | ||
| + | - Создание группы и добавление в неё бота | ||
| + | * Рекомендация. В диалоге с @BotFather' | ||
| + | - Активирование | ||
| + | - Определение ID группы или "chat id"; | ||
| + | * В браузере необходимо перейти по ссылке вида https:// | ||
| + | * В полученном сообщении находим раздел " | ||
| + | - Отправка сообщения с помощью curl:< | ||
| + | |||
| + | Сообщение с компьютера пришло на телефон в " | ||
| ===== SSH ===== | ===== SSH ===== | ||
| ==== Запрет логина от root' | ==== Запрет логина от root' | ||
| - | В файле / | + | В файле / |
| ==== Копирование файлов ==== | ==== Копирование файлов ==== | ||
| На удалённую машину: | На удалённую машину: | ||
| Строка 123: | Строка 160: | ||
| * Запрет логина по паролю:< | * Запрет логина по паролю:< | ||
| - | ==== Эмуляция Socks proxy через SSH ==== | + | ==== Socks5 |
| < | < | ||
| + | === Постоянный туннель через autossh | ||
| + | * Установка autossh: <code bash># apt install autossh</ | ||
| + | |||
| + | * Настройка доступа по ключу к < | ||
| + | |||
| + | * systemd unit< | ||
| + | Description=Auto up socks5 proxy | ||
| + | After=network.target | ||
| + | |||
| + | [Service] | ||
| + | Environment=REMOTE_USER=< | ||
| + | Environment=REMOTE_HOST=< | ||
| + | User=< | ||
| + | Restart=on-failure | ||
| + | RestartSec=15 | ||
| + | ExecStart=/ | ||
| + | -o " | ||
| + | -o " | ||
| + | -D 127.0.0.1: | ||
| + | | ||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | |||
| + | </ | ||
| + | * включение systemd unit' | ||
| ==== Ошибки подключения ==== | ==== Ошибки подключения ==== | ||
| === Connection closed by === | === Connection closed by === | ||
| Строка 140: | Строка 202: | ||
| < | < | ||
| + | ==== Отвал SSH при простое ==== | ||
| + | |||
| + | На некоторых каналах связи при отсутствии активности ssh соединение зависает. [[https:// | ||
| + | |||
| + | * SSH-server: ''/ | ||
| + | ClientAliveInterval 30 | ||
| + | ClientAliveCountMax 99999999</ | ||
| + | * SSH-client: ''/ | ||
| + | | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Shellinabox ===== | ||
| + | Shellinabox - это программа, | ||
| + | ==== Установка ==== | ||
| + | <code bash>apt install shellinabox</ | ||
| + | |||
| + | Проверка <code bash> | ||
| + | |||
| + | ==== Запрет root логина через shellinabox ==== | ||
| + | |||
| + | 1. Использовать ssh для логина **/ | ||
| + | <code bash> SHELLINABOX_ARGS=" | ||
| + | 2. Запрет root логина в ssh **/ | ||
| + | <code bash> | ||
| + | 3. Появившиеся [[ https:// | ||
| + | |||
| + | |||
| + | === WebSSH === | ||
| + | |||
| + | Shellinabox всем хорош, но ломает отображение Midnight Commander' | ||
| + | ==== Применение сертификата Let's Encrypt ==== | ||
| + | Для // | ||
| + | <code bash>cat / | ||
| + | |||
| + | Проверка работоспособности <code bash> | ||
| + | shellinaboxd -v</ | ||
| + | |||
| + | **Особенность.** Для работы shellinabox необходимо существование сертификата с названием файла // | ||
| ===== DNSCrypt ===== | ===== DNSCrypt ===== | ||
| Работу DNSCrypt можно оценить через один из сервисов проверки DNS: | Работу DNSCrypt можно оценить через один из сервисов проверки DNS: | ||
| Строка 154: | Строка 255: | ||
| **Реализация Net.Storage ** [[itechnology: | **Реализация Net.Storage ** [[itechnology: | ||
| + | ===== Nextcloud ===== | ||
| + | |||
| + | Ошибка удаления/ | ||
| + | |||
| + | Решение. | ||
| + | < | ||
| + | Отключить < | ||
| + | |||
| + | |||
| ===== Облако Mail.ru ===== | ===== Облако Mail.ru ===== | ||
| ==== UPDATE: WEBDAV отключён ==== | ==== UPDATE: WEBDAV отключён ==== | ||
| Строка 222: | Строка 332: | ||
| Предлагаемое решение состоит в том, чтобы cделать виртуальные sink' | Предлагаемое решение состоит в том, чтобы cделать виртуальные sink' | ||
| - | Первоначальный вариант при котором монофонические файлы не звучат выглядит так < | + | Первоначальный вариант при котором монофонические файлы не звучат выглядит так < |
| - | load-module module-remap-sink sink_name=headphones | + | load-module module-remap-sink sink_name=headphones_stereo |
| - | Изменённый вариант выглядит так: < | + | Задать человеческие названия каналам можно следующим образом:< |
| - | load-module module-remap-sink sink_name=headphones | + | update-sink-proplist headphones_stereo device.description=" |
| + | </ | ||
| + | |||
| + | Изменённый вариант | ||
| + | 151 load-module module-remap-sink sink_name=headphones_mono | ||
| Замечание первое. sound_card_name для // | Замечание первое. sound_card_name для // | ||
| Строка 304: | Строка 418: | ||
| Минусы. При логине второго пользователя до первого, | Минусы. При логине второго пользователя до первого, | ||
| N: [pulseaudio] main.c: Обнаружен настроенный вручную сервер на %s, отказ от запуска.</ | N: [pulseaudio] main.c: Обнаружен настроенный вручную сервер на %s, отказ от запуска.</ | ||
| + | |||
| + | ==== Pulseaudio не видит USB устройство в списке карт ==== | ||
| + | В файл / | ||
| + | < | ||
| + | < | ||
| + | [[https:// | ||
| + | ==== Остановка pulseaudio ==== | ||
| + | < | ||
| + | |||
| ===== Kernel ===== | ===== Kernel ===== | ||
| ==== Добавить модуль в initrd ==== | ==== Добавить модуль в initrd ==== | ||
| Строка 341: | Строка 464: | ||
| https:// | https:// | ||
| + | |||
| + | ==== Образ диска и сжатие ==== | ||
| + | Пример использования: | ||
| + | < | ||
| + | |||
| ===== Xfce ===== | ===== Xfce ===== | ||
| Строка 435: | Строка 563: | ||
| Предотвращение отключения usb и переход в настоящий suspend. Мануал [[http:// | Предотвращение отключения usb и переход в настоящий suspend. Мануал [[http:// | ||
| - | ===== OpenVPN | + | ===== Частная сеть предприятия |
| ==== Cоздание удостоверяющего центра ==== | ==== Cоздание удостоверяющего центра ==== | ||
| Строка 444: | Строка 572: | ||
| * Корневой закрытый ключ [ca.key] используется для подписи сертификата сервера и всех клиентских сертификатов. | * Корневой закрытый ключ [ca.key] используется для подписи сертификата сервера и всех клиентских сертификатов. | ||
| - | Для создания корневого сертификата и закрытого используется утилита easy-rsa | + | Для создания корневого сертификата и закрытого используется утилита easy-rsa. |
| ./clean-all | ./clean-all | ||
| ./build-ca </ | ./build-ca </ | ||
| Строка 451: | Строка 579: | ||
| Дополнение. Для избежания ошибки вида: //The < | Дополнение. Для избежания ошибки вида: //The < | ||
| - | ==== Генерация сертификата и приватного ключа | + | Из соображений безопасности и работоспособности коннекта сертификаты должны быть на алгоритме sha256. Проверка сертификата удостоверяющего цента< |
| + | ==== Генерация сертификата и приватного ключа сервера ==== | ||
| Аналогично, | Аналогично, | ||
| Большинство параметров могут быть оставлены в значениях по умолчанию, | Большинство параметров могут быть оставлены в значениях по умолчанию, | ||
| + | |||
| + | Исправление ошибки | ||
| + | * '' | ||
| + | Ignoring -days without -x509; not generating a certificate | ||
| + | Error checking x509 extension section server</ | ||
| + | * В раздел '' | ||
| + | * В разделе '' | ||
| ==== Генерация параметров Diffie Hellman' | ==== Генерация параметров Diffie Hellman' | ||
| - | Для | + | На стороне |
| + | ==== Дополнительная проверка пакетов " | ||
| + | < | ||
| + | Файл ta.key должен быть доступен как на сервере, | ||
| + | < | ||
| ==== Создание ключей для клиентов ==== | ==== Создание ключей для клиентов ==== | ||
| Строка 610: | Строка 750: | ||
| fi | fi | ||
| </ | </ | ||
| + | ==== Смена шифра на AES-256-CBC ==== | ||
| + | https:// | ||
| + | ==== Обрыв соединения на VPS ==== | ||
| + | * (Возможно) Снижение MTU на внешнем интерфейсе VPS до 1200 | ||
| + | * (Возможно) Шейпинг трафика< | ||
| + | * Корректировка максимального размера ТСP сегмента ([[https:// | ||
| + | * **-t mangle:** параметр указывает таблицу iptables, с которой мы работаем. В данном случае используется таблица mangle. Таблица mangle используется для изменения пакетов на уровне маршрутизации. | ||
| + | * **-I POSTROUTING: | ||
| + | * **-p tcp:** параметр указывает на протокол, | ||
| + | * **--tcp-flags SYN,RST SYN:** параметр определяет условие, | ||
| + | * **-j TCPMSS --clamp-mss-to-pmtu: | ||
| + | |||
| + | ==== Получение внешнего IP без DNS запроса ==== | ||
| + | <code bash> | ||
| + | |||
| + | ===== Маршрутизация ===== | ||
| + | **Дано.** На роутере работает vpn-клиент с ip-адресом шлюза 10.73.73.1; доступ в интернет получен через usb-модем со шлюзом 192.168.0.1; | ||
| + | |||
| + | **Задача.** Клиенту с ip-адресом 192.168.6.49 предоставлять интернет без использования vpn-соединения. | ||
| + | |||
| + | **Решение.** | ||
| + | <code bash># Добавление правила для обработки трафика от 192.168.6.49 таблицей маршрутизации " | ||
| + | ip rule add from 192.168.6.49 table 100 | ||
| + | |||
| + | # Добавление маршрута по умолчанию через usb-модем (usb0) в таблице 100 | ||
| + | ip route add default via 192.168.0.1 dev usb0 table 100</ | ||
| + | |||
| + | **Полезные команды** | ||
| + | <code bash> | ||
| + | # Просмотр основной таблицы маршрутизации | ||
| + | ip route show</ | ||
| + | |||
| + | <code bash> | ||
| + | # Просмотр таблицы маршрутизации 100 | ||
| + | ip route show table 100</ | ||
| + | |||
| + | <code bash> | ||
| + | # Просмотр активных правил маршрутизации | ||
| + | ip rule show</ | ||
| ===== Steam ===== | ===== Steam ===== | ||
| Строка 626: | Строка 805: | ||
| Руководство администратора по [[https:// | Руководство администратора по [[https:// | ||
| - | Также хороший обзорный материал, | + | Также хороший обзорный материал, |
| ==== OpenVPN and NetworkManager ==== | ==== OpenVPN and NetworkManager ==== | ||
| Строка 643: | Строка 822: | ||
| http:// | http:// | ||
| ==== Монтирование NFS при старте системы ==== | ==== Монтирование NFS при старте системы ==== | ||
| + | === Случай управления сетью через systemd-networkd === | ||
| + | - Проверка статуса сервиса контроля доступности сети:< | ||
| + | - Включение сервиса в случае его неактивности:< | ||
| + | |||
| + | === Случай доступа к файловому серверу через OpenVPN === | ||
| - Создание mount-юнита. Имя юнита соответсвует пути к точке монтирования, | - Создание mount-юнита. Имя юнита соответсвует пути к точке монтирования, | ||
| - Содержание mount-юнита< | - Содержание mount-юнита< | ||
| Строка 695: | Строка 879: | ||
| ===== Основы mdadm ===== | ===== Основы mdadm ===== | ||
| + | |||
| + | ==== Создание RAID-1 + LVM ==== | ||
| + | |||
| + | === Основная терминология LVM === | ||
| + | * **PV** (Physical Volume/ | ||
| + | * **VG** (Volume Group/ | ||
| + | * **LV** (Logical Volume/ | ||
| + | {{ : | ||
| + | * **PE** (Physical extent) - блок данных в пространстве PV фиксированного размера, | ||
| + | * **LE** (Logical extent) - блоки данных, | ||
| + | {{ : | ||
| + | Источники: | ||
| + | |||
| + | === Создание RAID-1 === | ||
| + | |||
| + | Рекомендуется создавать массив на разделах с типом FD (Linux RAID), что позволит ядру автоматически собирать разделы при загрузке системы (см. [[ https:// | ||
| + | |||
| + | Для этого, например, | ||
| + | * **g** | ||
| + | * **n** | ||
| + | * **t** | ||
| + | * **w** | ||
| + | |||
| + | Можно создавать raid-массив: | ||
| + | |||
| + | После создания стартует процесс начальной синхронизации (initial resync), который работает в фоне и не препятствует нормальному использованию raid-массива, | ||
| + | |||
| + | **Сохранение информации о созданном массиве**< | ||
| + | ... | ||
| + | ARRAY / | ||
| + | Отсутствующую строку с / | ||
| + | |||
| + | **Инициализация физических разделов под LVM**. В данном случае - это созданный ранее raid-1. <code bash> | ||
| + | # Просмотреть результат | ||
| + | pvscan</ | ||
| + | |||
| + | **Создание группы разделов (VG) LVM.**< | ||
| + | # Просмотреть результат | ||
| + | vgdisplay</ | ||
| + | Создана группа томов с именем " | ||
| + | |||
| + | **Создание логического тома под файловую систему.** При этом, если планируется использование LVM снапшотов, | ||
| + | # Просмотреть результат | ||
| + | lvdisplay | ||
| + | vgdisplay</ | ||
| + | |||
| + | Источник: | ||
| + | |||
| + | **Создание файловой системы на логическом томе.** Если файловая система не будет использоваться под системные нужды, то резервирование места для файлов пользователя " | ||
| + | |||
| + | **Изменение размера LV**. Ниже производится увеличение (+) размера логического тома на 5ГБ <code bash> | ||
| + | |||
| + | === Создание снимка логического тома (LV) === | ||
| + | |||
| + | Как работают снапшоты LVM и какие данные записываютcя на диск при работе со снапшотами можно прочитать по [[ https:// | ||
| + | |||
| + | Создание снапшота с выделением под него всего свободного места на VG | ||
| + | <code bash> | ||
| + | # Просмотреть результат | ||
| + | lvs | ||
| + | lvdisplay</ | ||
| + | |||
| + | Полученный снимок может быть примонтирован, | ||
| + | |||
| + | **Удаление снимка**. После резервного копирования или иных процедур, | ||
| + | |||
| ==== Установка ОС на LVM поверх Raid-1 | ==== Установка ОС на LVM поверх Raid-1 | ||
| Строка 758: | Строка 1008: | ||
| Подробности в статье по ссылке https:// | Подробности в статье по ссылке https:// | ||
| - | ===== Bash перенаправление потоков | + | ==== /dev/mdX -> / |
| + | |||
| + | Переименовать raid-массив | ||
| + | https:// | ||
| + | |||
| + | ===== Проверка диска | ||
| + | |||
| + | При размере диска более 2ТB можно столкнуться с ошибкой | ||
| + | "Value too large for defined data type invalid end block" | ||
| + | |||
| + | <code bash> | ||
| + | badblocks: Значение слишком | ||
| + | |||
| + | Быстрое решение | ||
| + | <code bash> | ||
| + | |||
| + | |||
| + | ===== Bash ===== | ||
| + | ==== Перенаправление потоков ==== | ||
| 0 - stdin \\ | 0 - stdin \\ | ||
| 1 - stdout \\ | 1 - stdout \\ | ||
| Строка 767: | Строка 1036: | ||
| 2>& | 2>& | ||
| + | ==== Алиасы ==== | ||
| + | |||
| + | С точки зрения администрирования удобно все используемые алиасы располагать в отдельном файле, обычно это файл ~/ | ||
| + | |||
| + | Необходимо помнить, | ||
| + | <code bash>if [ -f ~/ | ||
| + | . ~/ | ||
| + | fi</ | ||
| + | |||
| + | Для ручной загрузки алиасов можно использовать команду source ~/ | ||
| ===== Дисковые квоты ===== | ===== Дисковые квоты ===== | ||
| https:// | https:// | ||
| Строка 803: | Строка 1082: | ||
| </ | </ | ||
| Основой приведённого описания файлов FictionBook является описание zip архива. | Основой приведённого описания файлов FictionBook является описание zip архива. | ||
| + | |||
| + | ==== Benchmark ==== | ||
| + | === Память === | ||
| + | Скорость записи | ||
| + | < | ||
| + | Скорость чтения | ||
| + | < | ||
| + | |||