Мы — долго запрягаем, быстро ездим, и сильно тормозим.



www.lissyara.su —> www.lissyara.su —> Linux - 3

'Разные полезности' или 'Ковыряния в Линуксе - 3'

Автор: Fomalhaut.


ОГЛАВЛЕНИЕ

1. Запись аудио/видео потока
2. WinAMP-подобные музыкальные плееры: Audacious и QMMP
3. Опрос датчиков температур, напряжений, частоты вращения вентиляторов
4. Launchpad
5. Управление SELinux
6. Установка и запуск OpenVPN
7. Обновление предыдущей версии системы до последнего релиза
8. Смена раскладки и её отображение
9. Работа с пакетами
10. Информация об оборудовании
11. Автозапуск сервисов
12. Проверка контрольных сумм
13. Список несистемных пользователей
14. Поиск файла и/или каталога
15. Отключение/включение запоминания истории в консоли
16. Установка и настройка клиента сети I2P
17. Создание собственного LiveCD на основе Fedora 2x/Scientific Linux 7
18. Планировщики ввода/вывода
19. Установка Fedora на SSD: обычного и M.2 формата (NVMe)
20. Подключение репозиториев
21. SSH сервер

  • а) Первичная настройка
  • б) Авторизация по ключу
  • в) SSH туннель (socks-прокси)
  • г) Доступ по протоколу SFTP
  • д) Различные тонкости и удобства
  • е) Дополнительная информация
    22. SSLH сервер: первичная настройка и возможности
    23. FTP: монтирование удалённой директории
    24. Подключение по Cisco AnyConnect через OpenConnect
    25. Архиваторы: упаковка и распаковка
    26. Включение web-камеры в Skype
    27. lshell - "Шелл" с ограничениями (limited shell)

    1. Запись аудио/видео потока

    Для целей перехвата и сохранения аудио или видео потока существует несколько программ, например, rtmpdump (по названию протокола потокового вещания RTMP):
    $ rtmpdump -r "rtmp://94.242.60.26:1935/file/Recorder-1/Recorder-1/sdi/records_151270/dQHFmh3UQH8QDbZ3IerbbKrLoBa0cD.flv" -o test.flv
    

    Дополнительная информация: ссылка 1, ссылка 2.

    2. WinAMP-подобные музыкальные плееры: Audacious и QMMP

    Устанавливается двумя основными пакетами:
    $ dnf install audacious
    $ dnf install audacious-plugins*
    

    Для настройки управления плеером глобальными клавишными комбинациями необходимо включить и настроить модуль "Параметры Ctrl+P / Модули / Общие / Global Hotkey".
    С выходом Fedora 14 появились проблемы с audacious: ставится не требуемая версия и плагины не устанавливаются (что-то с зависимостями: требуется libao.so.2, хотя libad установлен). Поэтому по совету участников fedora@conference.jabber.ru. я перешёл на QMMP:
    $ dnf install qmmp
    $ dnf install qmmp-plugins-freeworld
    

    Для этого плеера можно настроить (в "Настройки QMMP"):

  • подключение к сети Интернет через proxy: "Сеть";
  • "горячие клавиши": "Модули / Общие / Модуль глоб.клавиш - libhotkey.so";
  • отображение в трее: "Модули / Общие / Модуль Status Icon - libstatusicon.so".

    3. Опрос датчиков температур, напряжений, частоты вращения вентиляторов

    Утилита опроса информации с датчиков температур, напряжений, частоты вращения вентиляторов:
    $ dnf install lm_sensors
    

    После этого необходимо обнаружить необходимые датчики:
    $ sensors-detect
    

    Всё: после этого можно настраивать всякие модули (например, Avant Window Navigator) или пользоваться собственной утилитой программы:
    $ sensors
    

    Последнее не очень наглядно, но если обработать скриптами... :)

    4. Launchpad

    Панель MacOS X-подобная: Avant Window Navigator. Так же устанавливается двумя основными пакетами.
    $ dnf install avant-window-navigator
    $ dnf install awn-extras-applets
    

    Личные предпочтительные настройки ("Настройки AWN / Preferences"): "Ориентация - Вправо", "Стиль - 3D", "Поведение - Интеллектуальное", "Autohide mode - Затемнение", "Icon effects - 3D поворот с фонариком". И установить галочку "Запускать AWN при загрузке".

    5. Управление SELinux

    Предположим есть необходимость (как и я захотел) в переводе SELinux в разрешающий режим. Для это есть три способа:
    а) временный перевод в разрешающий режим (с правами root-а):
    $ setenforce 0
    

    8) отключение постоянное (возможно два варинта):
    8.1) запуск управляющей утилиты (из-под тепущего пользователя, т.к. иначе утилиты не будет видна; так же необходимо помнить, что утилита запускается с задержкой, поэтому надо подождать, а не переживать, что что-то не работает):
    $ system-config-selinux
    

    8.2) правка конфигурационного файла (без прав root-а получится вряд ли :) ):
    $ nano /etc/selinux/config
    

    Вообще, надо при возможности побольше про SELinux почитать: система занятная.

    6. Установка и запуск OpenVPN

    Клиент openvpn в Fedora с systemd
    Настройка OpenVPN, VPN через http (https) прокси

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

    Предварительно обязательно обновляем текущую (обновляемую) систему до последних пакетов:
    $ dnf upgrade --refresh
    

    Собственно команды непосредственно обновления:
    $ dnf install dnf-plugin-system-upgrade
    $ dnf system-upgrade download --refresh --releasever=24
    $ dnf system-upgrade reboot
    

    В процессе перезагрузки произойдёт обновление системы.
    При возникновении проблем во время обновления может помочь команда:
    dnf --releasever=24 distro-sync --nogpgcheck
    

    FAQ по обновлению системы через DNF.

    8. Смена раскладки и её отображение

    Привык ещё с OS/2 пользоваться не стандартной расскладкой "Русская" ("Russian"), а "Русская (машинопись)" ("Russian (typewriter)"), а в Fedora 15 столкнулся с проблемой смены раскладки в GUI утилитах. Поэтому пришлось искать, где и как это исправить в конфигурационных файлах.
    За это отвечает файл /etc/sysconfig/keyboard (по умолчанию отсутствует), в который надо добавить строки:
    KEYTABLE="ru"
    MODEL="pc105"
    LAYOUT="us,ru(typewriter)"
    KEYBOARDTYPE="pc"
    OPTIONS="grp:alt_shift_toggle,grp_led:scroll"
    

    Фактически, за раскладку отвечает параметр LAYOUT, который по умолчанию выглядит, как
    LAYOUT="us,ru"
    

    Вот только не знаю, как глянуть список возможных вариантов этой переменной.
    Можно LAYOUT не менять, а дописать ниже отдельно свой вариант раскладки:
    VARIANT=",typewriter"
    

    Запятая оозначает, для какой (по порядку, указанному в LAYOUT) раскладки указан вариант.
    В XFCE для того, чтобы видеть текущую раскладку, необходимо добавить на панель "Keyboard Layouts", который по умолчанию может отсутствовать в системе. Для его появления необходимо установить xfce4-xkb:
    $ dnf install xfce4-xkb-plugin
    

    и затем сразу можно добавить на панель.
    Так не лишним будет добавить это в /etc/X11/xorg.conf в блоке "Identifier "Keyboard0"":
    Option "XkbVariant" ",typewriter"
    

    9. Работа с пакетами

    а) Поиск пакета, содержащего некоторые приложения
    Случилась проблема: я увидел в системе установленный web-обозреватель Konqueror, которого я не ставил специально , т.к. пользуюсь Gnome. Обычный поиск ни в виде "rpm -qa | grep konqueror", ни в виде "dnf list installed | grep konqueror" ничего не выдал. По совету sergem воспользовался командой:
    $ rpm -qf `which konqueror`
    

    и узнал, что konqueror содержится в kdebase, который я спокойно у далил, т.к. никаких зависимостей, кроме kdebase-libs, не было обнаружено.

    б) Поиск и удаление "висящих" пакетов
    Хочется иногда "удалить всё лишнее" в плане неиспользуемых пакетов. Для вывода списка таковых:
    $ package-cleanup --leaves --all
    

    Ещё: удаление ненужных пакетов без зависимостей (перед ненужным пакетом ставим пробел):
    for i in `package-cleanup --leaves --all`; do echo "$i    $(rpm -qi $i | grep Summary)" ; \
    done > leaves.txt; mcedit leaves.txt; dnf erase `egrep "^\ " leaves.txt | awk '{ print $1 }'`; \
    rm -f leaves.txt
    

    Надо ещё разобраться, как указать исключения, чтобы вывести только действительно "висящие" пакеты.

    в) Просмотр зависимостей пакета
    dnf deplist <имя_пакета>
    

    Собственно (как вариант) можно использовать для тех же целей информацию, выводимую перед удалением пакета.

    г) Поиск всех доступных версий пакета
    $ dnf list --showduplicates kernel
    # установка нужной версии
    $ dnf install kernel.x86_64-4.8.13-200.fc24
    

    Иногда бывает необходимо.

    10. Информация об оборудовании

    $ dmidecode
    

    Выводится много чего - надо grep-ить нужное (или выбрав необходимый тип оборудования). Например, информация о системе (важно для серверного оборудования):
    $ dmidecode –t system
    

    11. Автозапуск сервисов

    В зависимости от версии Fedora установка сервисов на автозапуск будет разной, т.к. начиная с 15-й версии в Fedora новая система инициализации - systemd, вместо старой SysVinit:
    для Fedora 14 и предыдущих (на основе sysvinit):
    $ chkconfig --list           # список всех установленных сервисов
    $ chkconfig <имя_сервиса> on # установка автозапуска
    

    для Fedora 15 и более поздних (на основе systemd):
    $ systemctl list-units                   # список всех установленных сервисов
    $ systemctl enable <имя_сервиса>.service # установка автозапуска
    

    Так же некоторые операции с сервисами можно произвести командой service, например:
    $ service --status-all  # список всех установленных сервисов
    

    Из полезного: "Сравнение систем инициализации systemd, upstart и SysVinit".

    12. Проверка контрольных сумм

    Можно просто подсчитать контрольные суммы проверяемых файлов и сравнить с оригиналами:
    $ sha256sum <проверяемый_файл>   # для SHA256
    $ md5sum <проверяемый_файл>      # для MD5
    $ checkisomd5 <проверяемый_файл> # тоже для MD5
    

    Сюда же относится проверка подписи через GPG:
    $ curl https://fedoraproject.org/static/fedora.gpg | gpg --import # импорт сертификатов (для примера -
                                                                      # проекта Fedora)
    $ gpg --verify-files RFRemix-16-x86_64-Live-XFCE-CHECKSUM         # проверка подписи файла *-CHECKSUM
    $ sha256sum -c RFRemix-16-x86_64-Live-XFCE-CHECKSUM               # проверка контрольной суммы
    

    Подробности по GPG-ключам проекта Fedora, здесь.
    Если необходимо сверить записанный диск в исходным образом диска (а некоторые 'писалки', в частности, Basero, да и Xfburn тоже, грешат неправильной записью), то необходимо выполнить:
    - для CD-диска:
    $ dd if=/dev/cdrom | sha256sum # для SHA256
    $ dd if=/dev/cdrom | md5sum    # для MD5
    

    где /dev/cdrom - устройство чтения записаного CD-диска.
    - для DVD-диска несколько сложней:
    сначала выйсним, сколько 2k-блоков занимает записанный образ:
    $ echo $(( $(ls -l my.iso | awk '{ print $5 }') / 2048 ))
    

    где my.iso - проверяемый образ.
    А вот теперь можем подсчитать и контрольную сумму:
    dd if=/dev/cdrom bs=2048 count=169383 | sha256sum # для SHA256
    dd if=/dev/cdrom bs=2048 count=169383 | md5sum    # для MD5
    

    Есть ещё несколько вариантов решения данной задачи.

    13. Список несистемных пользователей

    $ cat /etc/passwd | awk '/bash/{print}'
    

    Т.е. отсортировывает пользователей, у которых прописана командная оболочка (для системных пользователей она не требуется).

    14. Поиск файла и/или каталога

    Можно воспользоваться стандартной командой find:
    # поиск файла
    $ find /* -name teamviewerd
    # сложный поис файлов и удаление их
    $ find / \( -name "*.core" -or -name "dead.*" \) -print -exec rm -rf {} \;
    # поиск каталога
    $ find /* -type d -name teamviewer
    

    Так же есть специальная команда locate:
    $ updatedb          # обновление базы данных
    $ locate teamviewer # поиск файла/каталога teamviewer
    

    Результатом, в обоих случаях, будет список найденых совпадений.

    15. Отключение/включение запоминания истории в консоли

    Для отключения запоминания истории вводимых команд
    $ set +o history
    

    Для включения запоминания истории:
    $ set -o history
    

    Для автоматизма можно прописать в автозапуск.

    16. Установка и настройка клиента сети I2P

    Первоначально скачиваем инсталляционный пакет с соответствующей страницы проекта. Например:
    $ wget http://mirror.i2p2.de/i2pinstall_0.9.3.jar
    

    Он написан на Java, поэтому необходима поддержка. Если ещё не установлена, то ставим:
    $ dnf -y install java
    

    Теперь же можно запустить и инсталляцию:
    # в графическом режиме установки
    $ java -jar i2pinstall_0.9.3.jar
    # в консольном режиме установки
    $ java -jar i2pinstall_0.9.3.jar -console
    

    По умолчанию клиент поставится в каталог ~/i2p/. После этого станет доступен скрипт управления:
    ~/i2p/i2prouter [ console | start | stop | restart | condrestart | status | install | remove | dump ]
    

    Настройка и управления маршрутизатором производится через web-интерфейс, поэтому некоторые нижеприведённые ссылки имеют адрес http://127.0.0.1:7657 (порт в дальнейшем можно поменять). Web-интерфейс становится доступным после запуска клиента/маршрутизатора.
    Перед запуском необходимо открыть порт, используемый системой. Обычно это "в районе" 20000-30000. У меня был 22177 (возможно изменение на странице конфигурации сети после запуска). Открываем этот порт для протоколов UDP и TCP. Например, добавив соответствующие записи в разделе "Другие порты" в утилите "Настройка межсетевого экрана".
    Так же надо настроить используемый браузер на работу с клиентом. Для этого указываем параметры прокси-сервера (192.168.1.2 - адрес компьютера, где установлен клиент I2P):
    ### HTTP =============
    # локально
    127.0.0.1:4444
    # для удалённой машины
    192.168.1.2:4444
    ### HTTPS ============
    # локально
    127.0.0.1:4445
    # для удалённой машины
    192.168.1.2:4445
    

    Теперь всё готово для запуска:
    $ ~/i2p/i2prouter start
    Starting I2P Service...
    Waiting for I2P Service.....
    running: PID:3044
    

    Автоматически должна открыться страница управления маршрутизатором, с которой можно управлять клиентом.
    Если планируется использовать сеть I2P постоянно, то лучше автоматизировать запуск клиента:
    # создаём специально пользователя
    $ adduser i2p
    $ su -c '~/i2p/i2prouter start' i2p
    $ echo "su -c '/home/i2p/bin/i2prouter start' i2p" >> /etc/rc.d/rc.local
    

    Стоит помнить: в I2P нет привычного DNS и нет никаких доменов первого уровня типа .ru, .com, .org и т.д., все сайты имеют домен первого уровня – .i2p. Например, местный гугл имеет адрес – eepsites.i2p, а самый главный форум - forum.i2p.
    По умолчанию адресная книга вашего маршрутизатора: SusiDNS. Если же часто при открытии сайтов отображается ошибка "Предупреждение: I2P-сайт не найден в адресной книге", то можно поискать данные этого сайта (для этого есть специальные jamp-сервисы: i2host.i2p, stats.i2p), либо настроив автоматическую подписку на адреса новых сайтов.
    Настройка автоматической подписки производится на соответствующей странице SusiDNS, куда можно добавлять ссылки на публичные списки сайтов_ Два открытых сервиса со списками:
    http://i2host.i2p/cgi-bin/i2hostetag
    http://stats.i2p/cgi-bin/newhosts.txt
    

    Клиент поддерживает установку плагинов, которые можно найти как на специальном сайте, так и иных страницах сети. Добавить/настроить плагины можно на соответствующей странице управления.
    Дополнительная информация: по используемым портам, о средствах анонимизации, ECDSA Help Page.
    ВАЖНОЕ 1: В дистрибутивах Linux, которые создаются в США, запрещено использовать сильную криптографию. Поэтому некоторые возможности в плане криптографии в них либо занижены, либо вообще отсутствуют. К таким дистрибутивам относится и Fedora. Например, поддержка алгоритмов ECDSA "вырезана", что для I2P сказывается негативно: проект переведён на ECDSA с версии 0.9.12.
    Исправляется это установкой java-библиотеки bcprov от The Bouncy Castle project:
    # скачиваем jar-архив
    wget https://www.bouncycastle.org/download/bcprov-jdk15on-154.jar
    # копируем его в каталог ~/lib
    mv bcprov-jdk15on-154.jar ~/i2p/lib/
    

    И запускаем/перезапускаем сервис I2P.
    ВАЖНОЕ 2: Немного об анонимности: некоторые I2P сайты имеют внешние (т.е. в сети Интернет) элементы, поэтому возможна деанонимизация. Поэтому для обеспечения большей приватности необходимо установить любое из этих расширений:
    1) BlockSite и в белом списке указать http://*.i2p/, http://127.0.0.1:7657/, maggot://*;
    2) Adblock Plus с подпиской EasyPrivacy успешно режет Google Analytics и подобное;
    3) RequestPolicy (и в догонку - RequestPolicy Sync).

    17. Создание собственного LiveCD на основе Fedora 2x/Scientific Linux 7

    Первоначально устанавливаются пакеты поддержки данной возможности:
    ### для Fedora
    $ dnf install livecd-tools fedora-kickstarts l10n-kickstarts
    ### для Scientific Linux 7
    # утилитой livecd-creator
    $ wget http://www.livecd.ethz.ch/download/RPMS/7x/x86_64/livecd-tools-21.4-5.el7.x86_64.rpm
    $ wget http://www.livecd.ethz.ch/download/RPMS/7x/x86_64/python-imgcreate-21.4-5.el7.x86_64.rpm
    $ yum install livecd-tools-21.4-5.el7.x86_64.rpm python-imgcreate-21.4-5.el7.x86_64.rpm
    # утилитой livemedia-creator
    $ yum install lorax
    

    Теперь для Fedora в каталоге /usr/share/spin-kickstarts/l10n/ доступны "кикстарт"-файлы для сборки базовых образов системы.


    В случае с Scientific Linux 7 несколько сложней: готовых ks-файлов для сборки LiveCD в системе нет, как и нет livecd-tools, который мы ставили со стороннего сайта). Но нашлось, что добрые люди сделали такие файлы и опубликовали их в своей системе контроля версий subversion. По умолчанию этот пакет не установлен в системе, поэтому ставим:
    $ yum install subversion
    # теперь скачиваем ks-файлы
    $ mkdir ~/LiveCD
    $ svn co https://svn.iac.ethz.ch/pub/livecd/trunk/SL7/livecd-config ~/LiveCD
    



    Для создания собственной сборки лучше всего взять за основу какой-либо из этих .ks файлов, указав его в своём проекте. Например, создаём текстовый файл MyLiveCD.ks, куда первой строчкой указываем на базовый:
    %include /usr/share/spin-kickstarts/l10n/fedora-livecd-xfce-ru_RU.ks
    

    Следующий шаг: добавление необходимых репозиториев:
    1) для Fedora:
    ###=-- RPMFusion Free
    repo --name=rpmfusion-free --mirrorlist=http://mirrors.rpmfusion.org/mirrorlist?repo=free-fedora-$releasever&arch=$basearch
    repo --name=rpmfusion-free-updates --mirrorlist=http://mirrors.rpmfusion.org/mirrorlist?repo=free-fedora-updates-released-$releasever&arch=$basearch
    ###=-- RPMFusion NonFree
    repo --name=rpmfusion-nonfree --mirrorlist=http://mirrors.rpmfusion.org/mirrorlist?repo=nonfree-fedora-$releasever&arch=$basearch
    repo --name=rpmfusion-nonfree-updates --mirrorlist=http://mirrors.rpmfusion.org/mirrorlist?repo=nonfree-fedora-updates-released-$releasever&arch=$basearch
    ###=-- Russian Fedora Free
    repo --name=russianfedora-free --mirrorlist=http://mirrors.rfremix.ru/mirrorlist?repo=free-fedora-$releasever&arch=$basearch
    repo --name=russianfedora-free-updates --mirrorlist=http://mirrors.rfremix.ru/mirrorlist?repo=free-fedora-updates-released-$releasever&arch=$basearch
    ###=-- Russian Fedora NonFree
    repo --name=russianfedora-nonfree --mirrorlist=http://mirrors.rfremix.ru/mirrorlist?repo=nonfree-fedora-$releasever&arch=$basearch --exclude=java*sun*
    repo --name=russianfedora-nonfree-updates --mirrorlist=http://mirrors.rfremix.ru/mirrorlist?repo=nonfree-fedora-updates-released-$releasever&arch=$basearch --exclude=java*sun*
    ###=-- Russian Fedora Fixes
    repo --name=russianfedora-fixes --mirrorlist=http://mirrors.rfremix.ru/mirrorlist?repo=fixes-fedora-$releasever&arch=$basearch
    repo --name=russianfedora-fixes-updates --mirrorlist=http://mirrors.rfremix.ru/mirrorlist?repo=fixes-fedora-updates-released-$releasever&arch=$basearch
    

    2) для Scientific Linux 7 (мой набор):
    ###=-- ELRepo
    repo --name=community-enterprise-linux-repository --baseurl=http://elrepo.org/linux/elrepo/el7/$basearch/
    repo --name=community-enterprise-linux-kernel-repository --baseurl=http://elrepo.org/linux/kernel/el7/$basearch/
    repo --name=community-enterprise-linux-extras-repository --baseurl=http://elrepo.org/linux/extras/el7/$basearch/
    ###=-- Epel
    repo --name=extra-packages-for-enterprise-linux-7 --baseurl=http://mirror.logol.ru/epel/7/x86_64/
    ###=-- SL7
    repo --name=scientific-linux --baseurl=http://ftp.scientificlinux.org/linux/scientific/7x/$basearch/os/
    repo --name=scientific-linux-extras --baseurl=http://ftp.scientificlinux.org/linux/scientific/7x/external_products/extras/$basearch/
    repo --name=scientific-linux-bugfix-updates --baseurl=http://ftp.scientificlinux.org/linux/scientific/7x/$basearch/updates/fastbugs/
    repo --name=scientific-linux-security-updates --baseurl=http://ftp.scientificlinux.org/linux/scientific/7x/$basearch/updates/security/
    repo --name=scientific-linux-7rolling --baseurl=http://ftp.scientificlinux.org/linux/scientific/7rolling/$basearch/os/
    repo --name=scientific-linux-7rolling-security-updates --baseurl=http://ftp.scientificlinux.org/linux/scientific/7rolling/$basearch/updates/security/
    repo --name=scientific-linux-7rolling-bugfix-updates --baseurl=http://ftp.scientificlinux.org/linux/scientific/7rolling/$basearch/updates/fastbugs/
    ###=-- Nux
    repo --name=Nux --baseurl=http://mirror.li.nux.ro/li.nux.ro/nux/dextop/el7/$basearch/
    ###=-- ZFS on Linux
    repo --name=ZFSonLinux --baseurl=http://archive.zfsonlinux.org/epel/7/$basearch/
    


    При необходимости добавления RPM пакетов, не содержащихся в указанных репозиториях (либо вообще отсуствующих в каких-либо репозиториях) для добавления этих пакетов необходимо создать локальный репозиторий, куда и поместить необходимые пакеты.
    Устанавливаем пакет поддержки:
    $ dnf install createrepo
    

    Создаём каталог размещения репозитория:
    $ mkdir -p /usr/share/repository
    

    Копируем в этот каталог все необходимые нам пакеты и создаём репозиторий:
    $ cd /usr/share/repository
    $ createrepo .
    $ dnf clean all
    

    Для подключения созданного репозитория создаём файл-описание /etc/yum.repos.d/my_repo.repo следующего содержания:
    [My_Repo]
    name=My_repository
    baseurl=file:///usr/share/repository
    enabled=1
    

    Всё, теперь необходимые пакеты доступны. Для проверки сделаем поиск пакета из нашего репозитория, например:
    $ dnf search monaco
    Загружены модули: langpacks, presto, refresh-packagekit, remove-with-leaves, show-leaves
    ===================================================================== Совпадений: monaco =====================================================================
    gringod-monaco-linux-fonts.noarch : Monaco fonts for Linux

    Показаны только совпадения по названиям и описаниям, для большего используйте «search all».

    Ну и последнее: добавляем наш репозиторий в список в ks-файле:
    repo --name=My_repository --baseurl=file:///usr/share/repository
    



    Указание необходимых в сборке пакетов, а так же ненужных, производится внутри конструкции:
    %packages
    ...
    %end
    

    Например, укажем установку почтового клиента Sylpheed и удаление Claws-Mail вместе со всеми дополнительными пакетами (плагинами и пр.):
    sylpheed
    -claws-mail*
    

    Можно тоже самое произвести и с группами (просмотр списка групп с оригиналами названий на английском: dnf grouplist -v):
    @libreoffice
    -@dial-up
    

    Если для сборки образа используются дополнительные репозитории, кроме стандартных, то лучше из сразу добавить, что бы после установки это не делать:
    # для Fedora
    russianfedora-free-release-stable
    russianfedora-nonfree-release-stable
    russianfedora-fixes-release-stable
    rpmfusion-free-release-22
    rpmfusion-nonfree-release-22
    # для Scientific Linux 7
    elrepo-release
    epel-release
    zfs-release
    

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

    Все параметры kickstart-файлов описаны в официальной инструкции на сайте проекта.
    После создания ks-файла можно запускать сборку собственного ISO файла (с правами пользователя root):
    $ setenforce 0   # отключаем (временно) SELinux
    $ livecd-creator --config=My_fedora.ks --fslabel=Fedora-18-x86_64-XFCE --verbose 2>&1 | tee My_Fedora.log
    $ setenforce 1   # включаем SELinux
    

    Дополнительная информация: git-репозиторий kickstart файлов, статья на RussianFedora, статья на FedoraProject, пример ks-файла.

    18. Планировщики ввода/вывода

    Управление вводом/выводом данных производится разными алгоритмами, реализованными в разных планировщиках ввода/вывода.
    С ядра 4.12 стали доступны (без патчей) планировщики blk_mq: mq-deadline, cfq, kyber.
    Для изменения планировщика можно:
    1) для применения ко всем устройствам задать параметр ядра elevator=deadline (требуется перезагрузка);
    2) для раздельного применения разных планировщиков к разным типам дисков необходимо создать файл /etc/udev/rules.d/60-scheduler.rules:
    ### установка для современных накопителей на flash-памяти (SSD)
    # ACTION=="add|change", KERNEL=="sd[a-z]", TEST!="queue/rotational", ATTR{queue/scheduler}="deadline"
    ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="bfq"
    ACTION=="add|change", KERNEL=="nvme0n1", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="kyber"
    ### установка для дисков вращения (HDD)
    ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="deadline"
    # или
    ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"
    

    При использовании этого варианта для его активации требуется либо перезагрузка, либо выполнить команды:
    $ sudo udevadm control --reload
    $ sudo udevadm trigger
    

    Проверяем:
    $ cat /sys/block/sd*/queue/scheduler
    mq-deadline kyber [bfq] none
    mq-deadline kyber [bfq] none
    [mq-deadline] kyber bfq none
    [mq-deadline] kyber bfq none
    [mq-deadline] kyber bfq none

    $ cat /sys/block/nvme0n1/queue/scheduler
    mq-deadline [kyber] bfq none

    Наслаждаемся результатом.

    19. Установка Fedora на SSD: обычного и M.2 формата (NVMe)

    При необходимости установить Fedora Linux на SSD (любого формата) необходимо задействовать специальные технологии, увеличивающие срок жизни SSD и поддерживающие его параметры на необходимом уровне: TRIM и ITGC (Idle-Time Garbadge Collection, Сборка мусора во время бездействия).
    Для этого надо:
    1) в /etc/fstab в параметры разделов на SSD вписать два параметра: discard и noatime
    /dev/sda1  /       ext4   defaults,noatime,discard   0  1
    /dev/sda2  /boot   ext4   defaults,noatime,discard   0  2
    

    Для запуска процедуры TRIM вручную:
    $ fstrim / -v
    $ fstrim /boot -v
    $ fstrim /home -v
    

    Т.е. каждый раздел, размещённый на SSD, обрабатывается отдельно. Утилита проверена на файловых системах EXT4 и BTRFS, а на NTFS и ReaserFS - не работает. Хотя, возможно, что-то изменится в будущем.
    2) выбрать планировщик ввода/вывода deadline (рекомендовал elemc).
    На случай проблем с работой discard на установленном SSD (обычно это случается с дешёвыми китайскими SSD с АлиЭкспресс) для проведения TRIM надо запустить соответствующий таймер:
    $ systemctl enable fstrim.timer
    

    Дополнительная информация: Solid State Drives (ArchLinux), Файл /etc/fstab, Настройка Ubuntu для работы с SSD, Как не заблудиться в SLC, MLC и TLC при выборе SSD, Сколько проживет ваш SSD?, Оптимизация Linux под SSD

    20. Подключение репозиториев

    Подключение Russian Fedora (Free, Nonfree, Fixes):
    $ dnf install --nogpgcheck http://mirror.yandex.ru/fedora/russianfedora/russianfedora/free/fedora/russianfedora-free-release-stable.noarch.rpm
    $ dnf install --nogpgcheck http://mirror.yandex.ru/fedora/russianfedora/russianfedora/nonfree/fedora/russianfedora-nonfree-release-stable.noarch.rpm
    $ dnf install --nogpgcheck http://mirror.yandex.ru/fedora/russianfedora/russianfedora/fixes/fedora/russianfedora-fixes-release-stable.noarch.rpm
    

    Используемые репозиторием Russian Fedora ключи электронной цифровой подписи (ЭЦП):
    # RPM-GPG-KEY-russianfedora-nonfree-fedora 
    $ pub  1024D/1453936D 2009-01-06 Russian Fedora repository (Fedora - nonfree) packages@russianfedora.ru
    Отпечаток ключа = B4A5 CA3E 6C4D 3E7B 2FE0  FCCD 5679 A69B 1453 936D
    # RPM-GPG-KEY-russianfedora-free-fedora 
    $ pub  1024D/DBB6C70D 2009-01-06 Russian Fedora repository (Fedora - free) packages@russianfedora.ru
    Отпечаток ключа = 4B7B 8DBF D222 AFE5 A289  AEDC 8318 BE83 DBB6 C70D
    # RPM-GPG-KEY-russianfedora-fixes-fedora 
    $ pub  1024D/4DD65180 2009-01-06 Russian Fedora repository (Fedora - fixes) packages@russianfedora.ru
    Отпечаток ключа = 3091 90CC 9967 017F 7574  64A4 371A 3B26 4DD6 5180
    

    Проверка программой GnuPG ключа ЭЦП на примере ключа проекта Fedora:
    $ gpg2 --quiet --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-18-primary
    pub  4096R/DE7F38BD 2012-08-06 Fedora (18) <fedora@fedoraproject.org>
    Отпечаток ключа = 7EFB 8811 DD11 E380 B679  FCED FF01 125C DE7F 38BD
    

    Подключение RPM Fusion (Free, Nonfree:
    # Для текущих выпущеных версий
    $ dnf install --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
    $ dnf install --nogpgcheck http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
    # Для версии текущей разработки (готовящейся к выпуску)
    $ dnf install --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-branched.noarch.rpm
    $ dnf install --nogpgcheck http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-branched.noarch.rpm
    

    Для подключения репозитория rawhide-kernel-nodebug (тестовых ядер) надо скачать готовый repo-файл:
    $ cd /etc/yum.repos.d
    $ wget http://alt.fedoraproject.org/pub/alt/rawhide-kernel-nodebug/fedora-rawhide-kernel-nodebug.repo
    

    А можно и так установить репозиторий (на примере UnitedRPMS):
    $ dnf config-manager --add-repo=https://unitedrpms.github.io/unitedrpms.repo
    

    Некоторые подробности можно прочитать тут и тут.

    21. SSH сервер

    а) Первичная настройка

    По умолчанию SSH сервер (sshd) в Fedora не активирован. Но он присуствует в системе вместе с SSH клиентов, являясь вместе с ним частью пакета OpenSSH, развиваемого сообществом OpenBSD.
    Конфигурационные файлы пакета OpenSSH расположены в каталоге /etc/ssh/. Конфигурационный файл сервера /etc/ssh/sshd_config, клиента - /etc/ssh/ssh_config. Здесь же располагаются файлы с открытыми (PUB) и секретными (KEY) ключами сервера (при необходимости каталог расмещения ключей можно переназначить в /etc/ssh/sshd_config).
    Произведём необходимую корректировку конфигурационного файла сервера /etc/ssh/sshd_config), указав (раскомментировав и исправив) следующие параметры:
    Port 7575           # любой свободный (по умолчанию 22,
                        # но он не безопасен)
    Protocol 2          # более старые версии не безопасны
    PermitRootLogin no  # запрет авторизации root-а
    AllowUsers UserName # разрешённые пользователи
    

    Разрешение и запрещение доступа по SSH для пользователей и групп пользователей может достаточно гибко настраиваться. Более подробно описано в man-ах или тут (может устаревать).
    Если порт будет отличаться от стандартного 22, то необходимо SELinux-у сообщить об этом. Например, в случае порта 7575:
    $ semanage port -a -t ssh_port_t --proto tcp 7575
    

    Возможно, если номер порта будет до 1024, то всё будет работать, но я не проверял.
    Протокол SSH является протоколом, использующим асимместричное шифрование, поэтому для сервера SSH необходимо прежде всего создать ключи (секретный(приватный)/private и публичный(открытый)/public). Для этих целей в составе OpenSSH есть утилита:
    $ /usr/sbin/sshd-keygen
    Генерируется ключ SSH2 RSA:                                [  OK  ]
    Генерируется ключ SSH1 RSA:                                [  OK  ]
    Генерируется ключ узла SSH2 DSA:                           [  OK  ]
    

    Теперь у нас имеется три необходимые пары ключей:
    $ ls -l
    итого 276
    -rw-------. 1 root root     245058 февр. 15 18:32 moduli
    -rw-r--r--. 1 root root       2104 февр. 15 18:32 ssh_config
    -rw-------. 1 root root       4375 февр. 15 18:32 sshd_config
    -rw-r-----. 1 root ssh_keys    668 апр.  26 22:47 ssh_host_dsa_key
    -rw-r--r--. 1 root root        590 апр.  26 22:47 ssh_host_dsa_key.pub
    -rw-r-----. 1 root ssh_keys    965 апр.  26 22:47 ssh_host_key
    -rw-r--r--. 1 root root        630 апр.  26 22:47 ssh_host_key.pub
    -rw-r-----. 1 root ssh_keys   1675 апр.  26 22:47 ssh_host_rsa_key
    -rw-r--r--. 1 root root        382 апр.  26 22:47 ssh_host_rsa_key.pub
    

    Такой настройки достаточно для большинства случаев.
    Перед запуском сервера ещё необходимо в межсетевом экране (firewall) "открыть" указанный в /etc/ssh/sshd_config порт для внешни подключений. Это можно сделать через GUI утилиту /usr/bin/firewall-config, либо через консольную (CLI) утилиту /usr/bin/firewall-cmd.
    Теперь всё готово к запуску сервера:
    # через systemd:
    # перевод сервиса в автозапуск
    $ systemctl enable sshd:
    # непосредственно запуск
    $ systemctl start sshd
    # без systemd-шный вариант:
    $ /usr/sbin/sshd
    

    Если есть необходимость ограничить доступ к серверу SSH только с определённых IP адресов, то необходимо использовать конфигурационные файлы /etc/hosts.allow (для разрешённых адресов) и /etc/hosts.deny (для запрещённых адресов).
    Например, если разрешённый адрес динамический, публикуемый через сервис DynDNS.org, то, например, можно в конфигурационный файл cron/etc/crontab дописать такую строку:
    */10 *  *  *  * root sed -i -e '$d' /etc/hosts.allow && host mydomain.dyndns.org | awk '{print("sshd:",$4)}' >> /etc/hosts.allow
    

    Теперь каждый 10 минут последняя строчка в файле /etc/hosts.allow будет удаляться, а вместо неё вписываться IP ресурса с именем mydomain.dyndns.org.
    Перезапуска сервиса sshd не требуется.
    Если всё работает и SSH принимает подключения:
    $ ssh UserName@myserver.ru -p 7575
    

    значит всё сделано правильно и теперь это можно использовать для работы с серверами и компьютерами в удалённой сети, упаковывая в туннель требуемый порт.
    Очень полезная возможность SSH сервера - создание туннелей. Например, если надо подключиться к web-интерфейсу сервера:
    $ ssh -2 -N -C -L 22222:192.168.1.2:80 UserName@myserver.ru -p 7575
    

    И теперь для получения доступа достаточно в web-обозревателе ввести в адресной строке:
    http://localhost:22222
    

    В другом случае необходимо подключиться по RDP к виндо-серверу:
    $ ssh -2 -N -C -L 3389:192.168.1.3:3389 UserName@myserver.ru -p 7575
    

    И теперь используя программу-клиента удалённого подключени Remmina можно подключаться к целевому серверу, введя в качестве имени сервера localhost.
    В принципе нет необходимости всё это вводить, т.к. Remmina сама отлично умеет создавать туннели и подключать через них к целевому серверу. Для этого при регистрации сервера в Remmina надо на закладке "SSH" указать "Включить SSH туннель", указать вручную адрес SSH сервера и порт подключения. На закладках "Основные" и "Дополнительные" указывать всё так, как указывали бы мы, находясь в той сети, куда мы получаем доступ удалённо.
    Посмотреть список активных соединений:
    $ netstat -tunp | grep ssh
    

    Так же может быть полезен X11-forwarding: перенаправление вывода изображений приложений X11 с удалённой машины на ваш рабочий стол.
    Для включения этой возможности надо в /etc/ssh/ssh_config на машине, с которой будет осуществлять подключение, либо добавить параметр
    ForwardX11 yes
    

    и перезапустить SSH
    # через systemd:
    $ systemctl restart sshd
    # без systemd-шный вариант:
    $ sudo /etc/init.d/ssh restart
    

    либо использовать опцию -X (далее всё указывается с этой опцией).
    Подключаемся (-C нужен для ускорения обмена данными за счёт сжатия):
    ssh -X -C UserName@myserver.ru -p 7575
    

    После авторизации введём, например, firefox и... Вуаля!... у нас открылся FireFox, который, на самом деле, запущен на машине 132.81.41.4.
    Чтобы запустить и перенаправить только одно нужное приложение надо выполнить команду такого вида:
    ssh -X -C UserName@myserver.ru -p 7575 'firefox'
    

    После этого сразу после ввода пароля на удалённой машине запустится FireFox и будет отображаться на вашей подключенной машине.
    Если при указанном ForwardX11 yes необходимо отключить X11-forwarding на всемя сессии, то надо использовать ключ -x.
    МЕЛКИЕ ЗАДАЧИ
    Задача №1
    Если по какой-то причине публичный ключ был утерян, то его легко восстановить из секретного:
    # Для DSA ключей
    $ ssh-keygen -y -f id_dsa > id_dsa.pub
    # Для RSA ключей
    $ ssh-keygen -y -f id_rsa > id_rsa.pub
    

    Задача №2
    Запуск на исполнение скрипта, загруженного по SSH:
    $ ssh UserName@myserver.ru -p 7575 'cat /root/scripts/init-script' | sh
    

    б) Авторизация по ключу

    На клиентской системе сгенерируем личные ключи (предпочитаю использовать более современные и криптоустойчивые алгоритмы ECDSA или ED25519) и сохранить в файл с именем id_myserver:
    $ ssh-keygen -t ecdsa -f id_myserver
    

    Получим два файла: открытый ключ ~/.ssh/id_myserver.pub и закрытый (секретный) ~/.ssh/id_myserver.


    ВНИМАНИЕ!!! Надо сохранить эту пару ключей, чтобы в будущем не потерять доступ к удалённому серверу. Особое внимание, конечно, на секретную часть, для которой надо исключить компрометацию.

    Теперь надо передать открытую часть ключа на удалённый сервер. Для этого надо либо передать СисАдмину удалённого сервера файл ~/.ssh/id_myserver.pub, либо (если у нас самих есть доступ (пока ещё парольный)) поместить содержимое этого файла в файл ~/.ssh/authorized_keys удалённого сервера в профиле пользователя, от имени которого будет осуществляться подключение.
    Так же есть специальная утилита, которая сама скопирует файл открытого ключа на удалённый сервер и разместит, где надо (опять же: если у нас есть доступ к удалённому серверу):
    $ ssh-copy-id UserName@myserver.ru
    # в случае нестандартного порта SSH сервера
    $ ssh-copy-id `-p 7575 UserName@myserver.ru`
    

    Для каждого открытого ключа в файлах ~/.ssh/authorized_keys можно выставить опции, ограничивающие возможности клиента, аутентифицировавшегося по данному ключу. Опции находятся перед ключом,
    Опция
    from="список-шаблонов" разрешает принимать соединения только с удовлетворяющих одному из шаблонов хостов (шаблоны указываются через запятую (поддерживаются символы - ? * и !))
    command="команда" при аутентификации по данному ключу разрешается запускать только указанную команду (обязательно использовать опцию no-pty для бинарной передачи данных)
    no-port-forwarding запретить port-forwarding
    no-X11-forwarding запретить X11
    no-user-rc запрещает выполнение файла ~/.ssh/rc после аутентификации (в RHEL не работает)
    environment="NAME=VALUE" принудительная установка переменных среды окружения (в RHEL не работает)
    no-agent-forwarding запретить использование agent-forwarding
    no-pty запретить интерактивную оболочку
    permitopen="host:port" ограничить переназначение локального порта (ssh -L)

    Для дополнительной защиты можно запретить пользователям добавлять новые открытые ключи и подключаться с их помощью.
    Для этого надо файл ~/.ssh/authorized_keys сделать доступным только для чтения пользователям и запретить всё остальное:
    $ chmod 400 ~/.ssh/authorized_keys
    

    Для того, чтобы лишить пользователей возможности вернуть права доступа обратно, установите защитный (immutable) бит для каталога ~/.ssh и его содержимого:
    $ chattr -R +i ~/.ssh/
    


    ВНИМАНИЕ!!! Если в дальнейшем будет необходимо добавить новый ключ, сперва понадобится убрать защитный бит с файла authorized_keys и предоставить права на запись. После внесения необходимых изменений надо снова установить защитный бит, чтобы вновь обеспечить безопасность этого файла.

    По умолчанию сервер SSH принимает первоначально авторизацию по ключу, а если не сработает (ошибка или что-то ещё), то запросится пароль. Если мы такое поведение не планируем (т.е. хотим полностью на ключи перейти), то в файле конфигурации SSH сервера /etc/ssh/sshd_config надо внести изменений - раскомментировать/изменить строки:
    PasswordAuthentication no
    ChallengeResponseAuthentication no
    

    Я бы ещё предложил разрешить авторизацию только по ключам с алгоритмами ECDSA или ED25519.

    в) SSH туннель (socks-прокси)

    На удалённом сервере.
    Создаём специального пользователя, который будет использоваться ТОЛЬКО для работы туннеля: ему не нужен пароль, однако нужен домашний каталог.
    # для Linux, основанных на RedHat
    $ adduser --comment "" --shell /bin/sh tunnel
    # для Linux, основанных на Debian
    $ adduser --gecos "" --shell /bin/sh --disabled-password tunnel
    

    Создаём каталог и файл для SSH ключей и устанавливаем права:
    $ mkdir /home/tunnel/.ssh
    $ touch /home/tunnel/.ssh/authorized_keys
    $ chown -R tunnel:tunnel /home/tunnel/.ssh
    $ chmod 700 /home/tunnel/.ssh
    $ chmod 600 /home/tunnel/.ssh/authorized_keys
    

    На клиенте.
    Генерируем ключ для этого соединения:
    $ ssh-keygen -t ed25519 -f id_key_TUNNEL
    

    Снова на удалённом сервере.
    Добавляем в созданный файл /home/tunnel/.ssh/authorized_keys содержимое сгенерированного публичного ключа:
    ssh-ed25519 AAAAC3Nz.........SlEu5zRqqd UserName@myworkpc.me
    

    и в самое начало ключа прописываем опции, чтобы получилось следующее:
    command="/bin/echo 'SSH tunnel session has been started, press CTRL+C to terminate'; /bin/sleep infinity",
    no-X11-forwarding,no-user-rc,no-agent-forwarding,no-pty ssh-ed25519 AAAAC3Nz.........SlEu5zRqqd UserName@myworkpc.me
    

    Устанавливаем защитный бит:
    $ chattr -R +i /home/tunnel/.ssh/
    

    Подключение:
    $ ssh -i ~/.ssh/id_key -D 127.0.0.1:8090 tunnel@myserver.com
    

    Или подготовим шаблон подключение в файле ~/.ssh/config:
    Host myworkpc
        IdentityFile ~/.ssh/id_key
        Hostname myworkpc.me
        DynamicForward 127.0.0.1:8090
        RequestTTY no
        Compression yes
        User tunnel
    

    И теперь для подключения достаточно ввести:
    $ ssh myworkpc
    

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

    г) Доступ по протоколу SFTP

    Протокол SFTP предпочтительней (в сравнении с FTP) для передачи файлов, т.к. используется защищённая передача (шифрование). Между тем при настройке доступа по SFTP необходимо учитывать, что доступ предоставляется по SSH и при ошибках пользователь может получить в системе прав больше, чем ему требуется (хорошо, если пользо ватель нормальный, а если захочет что-то "сломать"?).
    Поэтому для пользователей, которым предоставляется доступ по SFTP, необходимо настроить chroot окружение и специальным образом настроить SSH-сервер.
    Создаём пользователя, который будет осуществляться доступ по SFTP, без домашнего каталога и права авторизации по SSH:
    $ pw useradd UserName -s /usr/sbin/nologin -c "User for backup" -m -d /nonexistent
    

    Создаём каталоги нашего chroot-окружения и назначаем необходимые права:
    # корневой
    $ mkdir /_CHROOT
    $ chmod 755 /_CHROOT
    $ chown root:wheel /_CHROOT
    # пользователя
    $ mkdir /_CHROOT/UserName
    $ chmod 700
    $ chown UserName:UserName /_CHROOT/UserName
    

    В конфигурационном файле SSH-сервера /etc/ssh/sshd.conf вносим следующие изменения:
    1) заменяем строку:
    # исходный вариант
    Subsystem sftp /usr/libexec/openssh/sftp-server
    # необходимый вариант
    Subsystem sftp internal-sftp
    

    2) добавляем:
    Match user UserName
        ChrootDirectory /_CHROOT
        ForceCommand internal-sftp
    

    Проверяем новый файл конфигурации на ошибки и перезапускаем SSH-сервер:
    $ sshd -t
    $ systemctl restart sshd
    

    Проверяем результат и пользуемся.

    д) Различные тонкости и удобства

    Настроенный SSH-сервер позволяет пользоваться им как основой для множества полезных мелочей.

    №1: Шифрованное подключение удалённой директории
    Для использования этой возможности надо установить поддержку SSHFS:
    $ dnf install fuse-sshfs
    

    После этого становится доступной утилита sshfs:
    $ sshfs username@121.121.121.121:/home/username /mnt/username_home
    

    По окончании работы необходимо отмонтировать удалённый каталог:
    $ fusermount -u /mnt/username_home
    

    В данной случае используется протокол SFTP (чуть выше описано конфигурирование доступа по SFTP).

    №2: Передача файлов
    2.1 Используя протокол SCP
    Для обеспечения безопасного (защищённого шифрованием) обмена данными (файлами( между двумя компьютерами с ос Linux/FreeBSD был разработан протоко SCP (secure copy), который поддерживается в пакете OpenSSH в виде утилиты scp.
    Пользование утилитой очень простое, поэтому опишем самые часто используемые применения:
    # скопировать файл “file.txt” с удаленной машины на локальную:
    $ scp -P 228 <логин>@имя_хоста.ru:file.txt /<директория_назначения/
    # скопировать файл “file.txt” с локальной машины на удаленную:
    $ scp -P 228 file.txt <логин>@имя_хоста.ru:/<директория_назначения/
    # скопировать директорию “my_dir” с локальной машины на удаленную в директорию “your_dir”:
    $ scp -P 228 -r my_dir <логин>@имя_хоста.ru:/<директория_назначения/your_dir 
    # cкопировать файл “file.txt” с удаленной машины “test1.igf.ru”
    # на другую удаленную машину “test2.igf.ru”:
    $ scp -P 228 <логин>@test1.igf.ru:/некая/директория/file.txt \
      <логин>@test2.igf.ru:/некая/иная/директория/
    # скопировать файлы “file1.txt” и “file2.txt” с локальной машины
    # на удаленную, в свою домашнюю директорию:
    $ scp -P 228 file1.txt file2.txt <логин>@имя_хоста.ru:~
    # скопировать несколько файлов с удаленной машины на локальную, в текущую директорию:
    $ scp -P 228 <логин>@имя_хоста.ru:/некая/директория/\{a,b,c\} .
    $ scp -P 228 <логин>@имя_хоста.ru:~/\{file1.txt,file2.txt\} .
    # передача файла со сжатием непосредственно через SSH
    # tar запаковывает файлы по маске локально, пишет их в stdout,\
    # откуда их читает ssh, передаёт в stdin на удалённом сервере,\
    # где их cd игнорирует (не читает stdin), а tar - читает и распаковывает
    $ tar -c * | ssh user@server "cd && tar -x"
    

    Данные примеры указывают использование нестандартного (не 22) порта для SSH, а порта 228.
    По умолчанию scp использует при передаче данных алгоритм шифрования 3DES. Можно несколько увеличить скорость передачи, включив алгоритм Blowfish, для этого в командной строке следует добавить -c blowfish:
    $ scp -c blowfish <передаваемый_файл> <логин>@имя_хоста.ru:~
    

    Кроме Blowfish можно использовать любой алгоритм, используемый SSH.

    2.2 Используя сам SSH
    Воспользуемся перенаправлением ввода/вывода:
    $ cat file_name | ssh -p 220 UserName@192.168.1.2 'cat > file_name'
    

    Скорость передачи в обоих случаях одинакова.

    №3: Выполнение локального скрипта на удалённой машине
    Запуск скрипта ~/script/my_script на исполнение, загрузив его посредством SSH:
    $ ssh user@192.168.1.15 -p 255 'cat /opt/script/zfs-init' | sh
    

    Результат будет отображаться в окне SSH сессии.
    Дополнительная информация по SSH: freebsd.org, xgu.ru, habrahabr.ru (особо интересная) или sabini.ch.

    е) Дополнительная информация

    Общая: freebsd.org, xgu.ru, sabini.ch, habrahabr.ru.
    Туннелирование: opennet.ru, vds-admin.ru.
    Авторизация по ключу: debianzilla.com, vds-admin.ru, xgu.ru.
    Особо интересное: Хранение открытых ключей SSH в DNS, Host-based аутентификация в OpenSSH, Памятка пользователям ssh.

    22. SSLH сервер: первичная настройка и возможности

    Краткий экскурс в sslh
    sslh - Applicative protocol multiplexer

    23. FTP: монтирование удалённой директории

    Первоначально устанавливаем соответствующий пакет:
    $ dnf install curlftpfs
    

    И, собственно, само монтирование:
    $ curlftpfs -o allow_other ftp://<пользователь>:<пароль>@<узел> /mnt/FTP -o allow_other
    

    24. Подключение по Cisco AnyConnect через OpenConnect

    В качестве подключения можно использовать Network Manager с плагином:
    $ dnf install NetworkManager-openconnect
    

    В Network Manager создаём подключение "VPN / Cisco AnyConnect-совместимая VPN (openconnect)", в параметрах которого указываем на закладке "VPN":
    - "Шлюз" : адрес шлюза, через кторым будем осуществлять подключение;
    - "CA Certificate" : корневой или (если есть) промежуточный сертификат, на основе которого создавался ключ пользователя;
    - "Сертификат пользователя" : пользовательский сертификат, от имени которого будет совершаться подключение;
    - "Личный ключ" : второй раз указываем сертификат пользователя.
    Всё, пробуем соединиться. Если соединение проходит - всё нормально.
    Если соединение не проходит, а в описании ошибки будет строка
    Failed to set TLS priority string: The request is invalid.

    то необходимо обновить криптографические политики (в пакете crypto-policies):
    $ update-crypto-policies
    

    Такая проблема проявилась в Fedora 22, но решается таким простым способом.

    25. Архиваторы: упаковка и распаковка

    Упаковка:
    1) gzip
    $ tar -cvzf /dest/arch.tar.gz /sorc/
    # для потока ввода удобно
    $ ... | gzip - > arch.gz
    # или многопоточный вариант
    $ ... | pigz -8cf > arch.gz
    

    2) bzip2
    $ tar -cvjf /dest/arch.tar.bz2 /sorc/
    

    Распаковка:
    1) xz:
    $ tar -xpJf archive.tar.xz
    

    2) tar.gz или tgz:
    $ tar -zxvf archive.tar.gz
    

    3) gz (распакует с удалением файла архива):
    $ gunzip archive.gz
    # для текстовых файлов можно использовать для последующего перенаправления
    $ zcat archive.gz | ...
    

    4) zip:
    $ unzip archive.zip
    

    5) bzip2:
    $ bzip2 -d -v archive.bz2
    

    26. Включение web-камеры в Skype

    Если web-камеры не видится в Skype, то необходимо инициализировать переменную LD_PRELOAD, вписав в ~/.bashrc:
    export LD_PRELOAD=/usr/lib64/libv4l/v4l1compat.so skype
    

    После этого либо перегрузиться, либо ввести в терминале
    env LD_PRELOAD=/usr/lib64/libv4l/v4l1compat.so skype
    

    Теперь после запуска Skype надо зайти в настройки, выбрать камеру и проверить её работоспособность.
    По умолчанию микрофон в системе отключен, поэтому надо его включить через утилиту pavucontrol.

    27. lshell - "Шелл" с ограничениями (limited shell)

    Установка:
    $ yum install lshell
    

    Для целевого пользователя указываем lshell в качестве командной оболочки и добавляем его в группу lshell:
    $ usermod -s /bin/lshell -aG lshell UserName
    

    Конфигурация - в файле /etc/lshell.conf.
    Тонкости:
    1) нельзя в доступных каталогах (параметр path) указать 'all' (все) - только перечисление, например,
    path     : ['/etc', '/var/log', '/opt']
    

    2) Midnight Commander (mc) может гулять по каталогам, как хочет, поэтому его по возможности надо запретить, как другие опасные и потенциально опасные команды и комбинации символов, например,
    allowed         : 'all' - ['su', 'sudo', 'yum', 'vi', 'vim', 'ssh', 'scp']
    forbidden       : ['`','$(', '${']
    

    Дополнительная информация:
    GitHub: ghantoos/lshell
    lshell (1) - Linux Man Pages



    размещено: 2011-08-07,
    последнее обновление: 2020-03-25,
    автор: Fomalhaut

    оценить статью:



  • Хостинг HOST-FOOD

    2014-07-27, lissyara
    gmirror

    Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
    2013-08-20, zentarim
    Scan+Print server FreeBSD 9

    Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
    подписка

        вверх      
    Статистика сайта
    Сейчас на сайте находится: 11 чел.
    За последние 30 мин было: 72 человек
    За сегодня было
    3527 показов,
    1064 уникальных IP
     

      Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
      Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.0681 секунд
    Из них PHP: 65%; SQL: 35%; Число SQL-запросов: 37 шт.
    Исходный размер: 194044; Сжатая: 36377