Архив рубрики: Работа c Linux

MariaDB работа из консоли

Основные моменты работы с базами данных MariaDB из консоли. Не всегда под рукой имеется PhpMyAdmin, который удобен в работе а произвести необходимые работы с базами необходимо. Будьте внимательность при работе в консоли!

Введение

В статье вы узнаете как можно работать с базами данных MariaDB из консоли.

О том как производить оптимизацию после установки можно из статьи MariaDB оптимизация и установка.

Просмотр из консоли баз MariaDB

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

mysql -u root -p
= вывод команды =
Enter password: указываем пароль root
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 100985
Server version: 5.5.50-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Вывод списка имеющихся баз

MariaDB [(none)]> SHOW DATABASES;
= вывод команды =
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| wiki_sevo44 |

+--------------------+
4 rows in set (0.01 sec)

Просмотр базы с выводом параметров

MariaDB [(none)]> SHOW CREATE DATABASE `wiki_sevo44`;
= вывод команды =
+-----------+--------------------------------------------------------------------+
| Database | Create Database |
+-----------+--------------------------------------------------------------------+
| wiki_sevo44 | CREATE DATABASE `wiki_sevo44` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+-----------+--------------------------------------------------------------------+
1 row in set (0.00 sec)

Подключение к необходимой базе

MariаDB [(none)]> USE wiki_sevo44;
= вывод команды =
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariаDB [wiki-sevo44]>

Просмотр всех таблиц из базы

MariаDB [wiki-sevo44]> SHOW tables;
= вывод команды =
+-----------------------+
| Tables_in_wiki_sevo44 |
+-----------------------+
| l10n_cache |
| langlinks |
| log_search |
| logging |
| module_deps |
| objectcache |
| user_former_groups |
| user_groups |
| user_newtalk |
| user_properties |
| valid_tag |
| watchlist |
+-----------------------+
12 rows in set (0.00 sec)

Просмотр содержания нужной таблицы

MariаDB [wiki-sevo44]> SELECT * FROM page;
= вывод команды =
+---------+----------------+-------------------------------------+-------------------+------------------+-------------+----------------+----------------+--------------------+-------------+----------+--------------------+-----------+
| page_id | page_namespace | page_title | page_restrictions | page_is_redirect | page_is_new | page_random | page_touched | page_links_updated | page_latest | page_len | page_content_model | page_lang |
+---------+----------------+-------------------------------------+-------------------+------------------+-------------+----------------+----------------+--------------------+-------------+----------+--------------------+-----------+
| 1 | 0 | Заглавная_страница | | 0 | 1 | 0.6843282599 | 20170826182609 | NULL | 1 | 1035 | wikitext | NULL |
| 2 | 0 | Тестовая 3 | | 0 | 1 | 0.485584249082 | 20170830191050 | 20170830191052 | 2 | 20 | wikitext | NULL |
| 3 | 0 | Тестовая | | 0 | 1 | 0.027751067675 | 20170831130200 | 20170831130201 | 3 | 19 | wikitext | NULL |
| 4 | 0 | Тестовая 2 | | 0 | 0 | 0.213026978763 | 20170831131024 | 20170831131025 | 6 | 1120 | wikitext | NULL |
+---------+----------------+-------------------------------------+-------------------+------------------+-------------+----------------+----------------+--------------------+-------------+----------+--------------------+-----------+
4 rows in set (0.00 sec)

Добавление базы в MariaDB

Для работы с базой необходимо после создания добавить пользователя к этой базе и назначить права.

Добавление базы с параметрами

MariаDB [(none)]> CREATE DATABASE `base` CHARACTER SET utf8 COLLATE utf8_general_ci;
= вывод команды =
Query OK, 1 row affected (0.00 sec)

Удаление базы

MariaDB [(none)]> DROP DATABASE `base`;
= вывод команды =
Query OK, 0 rows affected (0.01 sec)

Просмотр пользователей с выводом их прав

MariaDB [(none)]> SELECT User,Host FROM mysql.user;
= вывод команды =
+--------+-----------+
| User   | Host      |
+--------+-----------+
| root   | localhost         |
| mysql  | localhost |
+--------+-----------+
2 rows in set (0.005 sec)

Права пользователя баз данных MariaDB

В случае необходимости подключатся к базе с других компьютеров необходимо создать пользователя с нужным параметром и дать права на доступ в настройках сервера MariaDB!

Права на доступ к серверу баз данных делается в двух местах:

  1. Параметр bind-address=0.0.0.0 в конфигурационном файле самого сервера баз MariaDB разрешающий подключатся с любого адреса (или укажите конкретный IP) в разделе [mysqld] ;
  2. Права пользователя на возможность удаленного подключения к базе данных.

Для работы с базами мне удобно использовать PhpMyAdmin и эта программа позволяет настроить доступ к базам работающих на разных серверах.

Менять права пользователя root не желательно, но можно создать пользователя и дать ему полные права. Держать ещё одного пользователя с полными правами не разумно, но иногда необходимо. Добавляются пользователю полные права командой:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* to 'имя пользователя'@'%';

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

Например, ниже представлена полная версия команд после выполнения которых будет создан пользователь sevo44 с полными правами:

mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.4.8-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE USER `sevo44`@`%` IDENTIFIED BY 'ПАРОЛЬ';
Query OK, 0 rows affected (0.008 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* to 'sevo44'@'%';
Query OK, 0 rows affected (0.017 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> exit
Bye

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

В случае если надо поменять права имеющемуся пользователю это делается следующей командой, после подключения к серверу баз данных:

# Команда смены прав доступа пользователя на подключение с любого адреса (параметр %)
MariaDB [(none)]> UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='имя_пользователя';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

# Команда смены прав доступа на базы
MariaDB [(none)]> UPDATE mysql.db SET Host='%' WHERE Host='localhost' AND User='имя_пользователя';
Query OK, 0 rows affected (0.03 sec)
Rows matched: 0 Changed: 0 Warnings: 0

Добавление пользователя

# Права на доступ только с localhost
MariаDB [(none)]> CREATE USER `base_user`@localhost IDENTIFIED BY 'ПАРОЛЬ';

# Права на доступ с любого адреса (при использовании знаков в названиях код заключается в кавычки! 
MariаDB [(none)]> CREATE USER `base_user`@`%` IDENTIFIED BY 'ПАРОЛЬ';

# Права на доступ с адреса 10.10.0.2 (при использовании знаков в названиях код заключается в кавычки!
MariаDB [(none)]> CREATE USER `base_user`@`10.10.0.2` IDENTIFIED BY 'ПАРОЛЬ';

= правильный вывод команды для любой команды =
Query OK, 0 rows affected (0.10 sec)

Назначение пользователя базе

# При назначении прав выставляем пользователя с нужными правами!
MariaDB [(none)]> GRANT ALL PRIVILEGES ON base.* to base_user@localhost;
= вывод команды =
Query OK, 0 rows affected (0.04 sec)

После всех манипуляция с базами необходимо обновить права доступа

MariаDB [(none)]> FLUSH PRIVILEGES;
= вывод команды =
Query OK, 0 rows affected (0.02 sec)

Выход с сервера MariaDB

Выход производиться командой

MariаDB [(none)]> exit
= вывод команды =
Bye

Резервное копирование и восстановление баз MariaDB

Создадим необходимую папку для бэкапов и перейдем в неё

mkdir backup
cd backup

Создание резервной копию базы с указанием даты создания

mysqldump -u base_user -p base > base-dump_10092017.sql
= вывод команды =
Enter password: вводим пароль пользователя базы и жмем Enter

Восстановление резервной копии базы

mysql -u base_user -p base < base-dump_10092017.sql
= вывод команды =
Enter password: вводим пароль пользователя базы и жмем Enter

Вывод

В консоли без проблем можно делать все основные манипуляции с базой данных. Для более удобной работы удобней использовать PhpMyAdmin, установку и настройку которой я рассмотрел в своей статье PhpMyAdmin на Nginx.

Проверка диска в консоли Linux

Проверка диска на наличие плохих секторов возникает нежданно и лучше знать как это сделать имея под рукой всё необходимое. Вариантов проверки дисков множество. Расскажу о проверке средствами консоли Linux. Просто и ничего лишнего.

Причины для проверки диска

Основная причина проверки это как правило медленная работа системы или зависание при определенных действиях. Вывести диск из строя могут разные факторы. Вот некоторые из них:

  • Время жизни диска не вечна;
  • Некорректные выключения системы при пропадании питания;
  • Физические удары;
  • Запуск холодного диска зимой.

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

Храните важные данные в двух совершенно разных физически местах. Только такой подход гарантирует вам полную сохранность данных.

Определение диска для проверки

Для того чтобы понять какой диск проверять нам достаточно ввести команду в консоли которая выдаст нам список всех имеющихся дисков в системе.

fdisk -l
= вывод части команды =
Диск /dev/sda: 232.9 GiB, 250059350016 байт, 488397168 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x42ef42ef

Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип
/dev/sda1 * 2048 184322047 184320000    87.9G 7 HPFS/NTFS/exFAT
/dev/sda2 184322048 488394751 304072704 145G  7 HPFS/NTFS/exFAT

Мы видим в выводе диск который нам надо проверить. Диск имеет 2 раздела с данными.

Проверка диска на битые секторы

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

Можно сразу запустить проверку с исправлением, но мне кажется это неправильно. Гораздо логичней вначале проверить диск и собрать информацию обо всех битых секторах и только после этого принять решение о дальнейшей судьбе диска.

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

Создание файла для записи плохих секторов

Создадим файл указав для удобства имя проверяемого раздела.

touch "/root/bad-sda1.list"

Проверка диска утилитой badblocks

Запустим проверку с информацией о ходе процесса с подробным выводом. Чем больше диск тем дольше проверка!

badblocks -sv /dev/sda1 > /root/bad-sda1.list
= Информация о ходе процесса = 
badblocks -sv /dev/sda1 > /root/bad-sda1.list Checking blocks 0 to 976761542 Checking for bad blocks (read-only test): 0.91% done, 1:43 elapsed. (0/0/0 errors)
= Подробный вывод результата =
badblocks -sv /dev/sda1 > /root/bad-sda1.list Checking blocks 0 to 156289862 Checking for bad blocks (read-only test): done             Pass completed, 8 bad blocks found. (8/0/0 errors)

В нашем случае диск с 8 плохими секторами.

Пометка плохих секторов диска

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

Указывать формат файловой системы нет надобности. Утилита сделает всё сама.

e2fsck -l /root/bad-sda1.list /dev/sda1
= Вывод команды =
e2fsck -l /root/bad-sda1.list /dev/sda1e2fsck 1.43.3 (04-Sep-2016)
Bad block 44661688 out of range; ignored.
Bad block 44661689 out of range; ignored.
Bad block 44661690 out of range; ignored.
Bad block 44911919 out of range; ignored.
Bad block 44958212 out of range; ignored.
Bad block 44958213 out of range; ignored.
Bad block 44958214 out of range; ignored.
Bad block 44958215 out of range; ignored.
/dev/sda1: Updating bad block inode.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda1: 11/9773056 files (0.0% non-contiguous), 891013/39072465 blocks

Подготовка диска для проверки

Бывают случаи когда таблица разделов повреждена на диске и нет возможности посмотреть какие есть разделы с данными. Возможно вам не надо никаких данных на диске и вы хотите диск отформатировать и затем проверить. Случаи бывают разные и надо подходить исходя из ситуации.

С помощью команды с ключом -z вы сможете создать заново таблицу разделов и создать необходимые вам разделы.

cfdisk -z /dev/sda

Как работать с утилитой cfdisk я не буду объяснять, так как это выходит за рамки данной статьи.

Предположим что вы создали из всего диска лишь один раздел /dev/sda1. Для форматирования его в ext4 достаточно выполнить команду:

mkfs.ext4 /dev/sda1
= Вывод команды =
mke2fs 1.43.3 (04-Sep-2016)Creating filesystem with 244190385 4k blocks and 61054976 inodesFilesystem UUID: c4a1eeed-960a-4aea-a5ff-02ce93bf0a2eSuperblock backups stored on blocks:  32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,  4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,  102400000, 214990848
Allocating group tables: done                            
Writing inode tables: done                           
Creating journal (262144 blocks): doneWriting superblocks and filesystem accounting information: done

Вывод

Проще и понятней механизма проверки диска на битые сектора как в системе Linux я не встречал. Ничего лишнего только суть. Выбор варианта как проверять и когда всегда за вами. После того как я один раз потерял важные данные храню всё важное в 3 разных местах.

RSA или авторизация SSH по ключу

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

Введение

Не на долго удалось мне отложить настройку этого варианта подключения к серверу. Необходимость настройки доступа по ключу пришла откуда я даже не думал. Неожиданно обнаружил что резервные копии периодически не проходят на Yandex.Disk.  Резервирование сайтов у меня производится скриптом который резервирует вначале файлы сайта а потом базу. Пропуски были как с файлами так и с базами.  Решил настроить резервное копирование на сервер с которым идет соединение ssh.

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

Расскажу как настроить подключение к данным web сервера используя протокол sftp по файлу с ключом расширением ppk.

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

Генерация пары ключей RSA

Механизм авторизации по ключу прост. На то место куда мы подключаемся нам надо повесить замок (публичный ключ название.pub) а сам ключик с помощью которого мы сможем подключится (приватный ключ название) держать у себя и с помощью его открывать замочек. Мало того, замок вешается не на всю систему а именно на конкретного пользователя под которым мы будем авторизовываться.

Можно не указывать путь куда мы будем устанавливать ключи и тогда они создадутся в папке по умолчанию с базовым названием. Я не буду менять путь по умолчанию для ключей а лишь буду создавать их со своим удобным мне названием.

Создадим связку ключей указав тип -t rsa, длину ключа -b 2048 и место с необходимым нам названием:

ssh-keygen -t rsa -b 2048 -f /home/user/.ssh/rsa_sevo44
= вывод команды =
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user/.ssh/rsa_sevo44.
Your public key has been saved in /home/user/.ssh/rsa_sevo44.pub.
The key fingerprint is:
SHA256:A9d+2cz6M1GK482oOxf/zweqt9B18WPox04m+Deczgc user@H4530
The key's randomart image is:
+---[RSA 1024]----+
| |
| . |
| . . . . |
| o . =. +|
| S . oo==o|
| . o*oE..|
| .oo@.O.|
| ..B.&*o|
| +B.o+BO|
+----[SHA256]-----+

По результату видим что создалась пара ключей с названием rsa_sevo44.

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

Настройка SSH сервера

Настройка сервера на всех системах Linux сводится к редактированию конфигурационного файла ssh сервера:

mcedit /etc/ssh/sshd_config
= необходимые параметры с пояснениями =
RSAAuthentication yes
PubkeyAuthentication yes
PubkeyAcceptedKeyTypes ssh-dss
#Путь к файлу с публичными ключами
AuthorizedKeysFile %h/.ssh/authorized_keys
#Отключение возможности авторизации по паролю
PasswordAuthentication no
#Вид публичного ключа для авторизации
PubkeyAcceptedKeyTypes ssh-rsa

Не советую сразу отключать подключение по паролю. Отключите его только после проверки авторизации по ключу!

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

Перезагрузим сервер SSH:

systemctl restart ssh

Добавление публичного ключа RSA

Используем для добавления публичного ключа команду указав необходимый ключ и пользователя куда мы хотим повесить замок:

ssh-copy-id -i /home/user/.ssh/rsa_sevo44.pub -p 25555 root@10.10.0.1
= вывод команды =
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/rsa_sevo44.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.10.0.1's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'root@10.10.0.1'"
and check to make sure that only the key(s) you wanted were added.

После введения пароля от пользователя к которому мы хотим повесить публичный ключ он добавится в список который находится в файле /root/.ssh/authorized_keys.

Проверим добавление ключа на сервере:

cat /root/.ssh/authorized_keys
= вывод команды =
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDCHkWoBv8b+j11IJ685m4WrYCdgx/v5bqwC3AahFyySH4yK0CV8ZJA7H6e3bbkPEI1Aw2xB6xRUS7NC4B3dGciDycMJJumX/OGpocm7A4BdrdODXfHzW5ap/WTN46/nlq7pMZH/8sa8GLzhpOv3OokUogLZFh1zZaFD4M0Hiseyw== user@H4530

Если хотите можете сверить данные с нужной строки и данными с файла публичного ключа. Данные будут идентичны.

При желании вы можете добавить открытую часть сертификата руками.

Для этого смотрим публичную часть сертификата:

cat /home/user/.ssh/rsa_sevo44.pub
= вывод команды =
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDCHkWoBv8b+j11IJ685m4WrYCdgx/v5bqwC3AahFyySH4yK0CV8ZJA7H6e3bbkPEI1Aw2xB6xRUS7NC4B3dGciDycMJJumX/OGpocm7A4BdrdODXfHzW5ap/WTN46/nlq7pMZH/8sa8GLzhpOv3OokUogLZFh1zZaFD4M0Hiseyw== user@H4530

Добавляем его в необходимый файл пользователю к которому подключаемся:

vim /root/.ssh/authorized_keys
= добавляем код =
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDCHkWoBv8b+j11IJ685m4WrYCdgx/v5bqwC3AahFyySH4yK0CV8ZJA7H6e3bbkPEI1Aw2xB6xRUS7NC4B3dGciDycMJJumX/OGpocm7A4BdrdODXfHzW5ap/WTN46/nlq7pMZH/8sa8GLzhpOv3OokUogLZFh1zZaFD4M0Hiseyw== user@H4530

Запоминаем пароль с помощью ssh-agent

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

На многих новых версиях систем всё работает из коробки и наставить то что описано ниже не надо.

Для добавления ключей в список для использования во время работы на компьютере используем сервис ssh-agent.

Проверим состояние ssh-agent:

ps -C ssh-agent
= вывод команды =
 PID TTY TIME CMD
 4564 ? 00:00:00 ssh-agent

Теперь нам надо добавить нужный ключ командой:

ssh-add /home/user/.ssh/rsa_sevo44
= вывод команды =
Enter passphrase for /home/user/.ssh/rsa_sevo44: вводим пароль
Identity added: /home/user/.ssh/rsa_sevo44 (/home/user/.ssh/rsa_sevo44)

После перезагрузки данную процедуру придется повторить!

Посмотреть добавленные ключи можно командой:

ssh-add -l
= вывод команды =
1024 SHA256:A9d+2cz6M1GK482oOxf/zweqt9B18WPox04m+Deczgc /home/user/.ssh/rsa_sevo44 (RSA)

Для удаления всех ключей применим опцию -D:

ssh-add -D
= вывод команды =
All identities removed.

Такую команду удобно использовать когда мы работали на чужом компьютере. Для удаления только своего ключа можно использовать опцию -d путь к ключу.

Права на ключи RSA

В папку пользователя .ssh можно добавить ранее созданные сертификаты. Достаточно выставить необходимые права и сертификат будет активен после перезагрузки системы.

Выставим необходимые права (на примере ключа с именем rsa_sevo44 пользователя local):

chmod 0600 /home/local/.ssh/rsa_sevo44
chmod 0644 /home/local/.ssh/rsa_sevo44.pub

Для проверки выведем полную информацию о файлах
ls -l
= Необходимая часть =
-rw------- 1 local local  986 июл 15 21:24 rsa_sevo44
-rw-r--r-- 1 local local  225 июл 15 21:24 rsa_sevo44.pu

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

Только после добавления необходимого ключа командой ssh-add возможно подключится по ключу!

Подключимся к нужному серверу по нестандартному порту с выводом истории подключения ssh:

ssh -p 4223442 root@10.10.0.2 -v
= вывод части команды с комментариями =
OpenSSH_7.5p1-hpn14v12, OpenSSL 1.0.2k 26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to 10.10.0.2 [10.10.0.2] port 4223442.
debug1: Connection established.
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:i8TBEPr+jQo0HT49dpo1zOgCX9xPUOlvFEDCU63tHQA
debug1: Host '[10.10.0.2]:4223442' is known and matches the ECDSA host key.
debug1: Found key in /home/user/.ssh/known_hosts:20
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_SERVICE_ACCEPT received
# В этой строчке мы видим возможные варианты подключения к серверу
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/user/.ssh/rsa_sevo44
debug1: Server accepts key: pkalg ssh-rsa blen 151
debug1: Authentication succeeded (publickey).
Authenticated to10.10.0.2 ([10.10.0.2]:4223442).
debug1: HPN to Non-HPN Connection
debug1: Final hpn_buffer_size = 2097152
debug1: HPN Disabled: 0, HPN Buffer Size: 2097152
debug1: channel 0: new [client-session]
debug1: Enabled Dynamic Window Scaling
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Jul 16 00:28:36 2017 from 10.10.0.3
root@proxmox:~#

FileZilla авторизация по ключу PPK

В статье SFTP настройка для веб хостинга я рассказывал как настроить подключение к данным web сервера по sftp.

Расскажу как подключатся используя сертификат.

Вначале необходимо из действующего сертификата создать файл с расширение ppk. Так как, программа FileZilla понимает только этот формат.

Для Debiana необходимо добавить требуемые пакеты:

apt install putty-tools openssh-client

Переходим в папку где находится закрытая и открытая часть необходимого ключа и создаём в корневой папке своего профиля файл c ключoм:

cd /home/local/.ssh/
puttygen rsa_sevo44 -o ~/rsa_sevo44.ppk

После добавления сертификата на сервер нам необходимо в программе FileZilla указать необходимый файл с ключом:

Заключение

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

PXE загрузочный сервер

Настроим загрузочный PXE сервер. Загрузить настроенную операционную систему на компьютере без жесткого диска всегда приятно. Использовать утилиты для диагностики и работы с жесткими дисками удобно и практично. Настройка на любом дистрибутиве Linux.

Введение

Давно хотел иметь в локальной сети загрузочный сервер PXE с помощью которого можно запускать на компьютерах не имеющих жесткого диска нужную мне операционную систему со всеми необходимыми настройками. Использование набора утилит для диагностики и работы с системой загружаемых по локальной сети тоже весьма удобная штука. В дистрибутиве Calculate Linux создание своего загрузочного образа делается просто, понятно и при хорошем знании позволяет творить чудеса.

После всех настроек мы получим возможность используя PXE загрузчик:

  • Загружать операционную систему Calculate Linux,
  • Проверить память программой Memtest86+,
  • Проверить жесткие диски программами MHDD и Victoria,
  • Работать с жесткими дисками программой Clonezilla.

Вся настройка производится на операционной система CentOS 7. Настроить можно и на любой другой системе, так как используемые пакеты присутствую во всех операционных системах Linux.

Подготовка системы для работы PXE сервера

Для загрузки по PXE в Bios подключаемого компьютера должна быть включена и настроена данная функция.

Установим необходимые пакеты без вопросов:

yum -y install dhcp xinetd tftp tftp-server nfs-utils syslinux

Настройка DHCP сервера

В локальной сети должен работать только один сервер DHCP.

Мои настройки будут производится на системе работающей в качестве шлюза локальной сети. Я не буду рассматривать настройку самого шлюза а лишь затрону моменты необходимые для нас.

Параметры сетевой карты которая смотрит во внутреннюю сеть:

TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_PEERDNS=no
IPV6_PEERROUTES=no
IPV6_FAILURE_FATAL=no
NAME=enp0s8
UUID=d785f929-dcfb-436a-8ba7-59189a394aa6
DEVICE=enp0s8
# Загрузка при старте
ONBOOT=yes
IPADDR=192.168.1.1
PREFIX=24

Как видна моя внутренняя локальная сеть будет 192.168.1.0/24

Приведем конфигурационный файл DHCP сервера к следующему виду:

vim /etc/dhcp/dhcpd.conf
= вывод команды с необходимыми изменениями =
default-lease-time 32400;
max-lease-time 604800;
min-lease-time 7200;
log-facility local7;
subnet 192.168.1.0 netmask 255.255.255.0 {
option domain-name "sevo44.loc";
option domain-name-servers 192.168.1.1;
range 192.168.1.150 192.168.1.220;
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option ntp-servers 192.168.1.1;
#PXE SERVER IP
next-server 192.168.1.1;
filename "pxelinux.0";
}

Добавляем в автозагрузку:

systemctl enable dhcpd

Запустим службу:

systemctl start dhcpd

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

Одно из таких возможностей, это закреплении ip адреса компьютера на основании мак адреса сетевой карты. Достаточно зная мак адрес нужного компьютера добавить в файл настройки DHCP строчки:

host hp4530 {
hardware ethernet 64:31:50:95:b1:b7; 
fixed-address 192.168.1.5;
}

После перезагрузки службы параметры вступят в силу:

systemctl restart dhcpd

Настройка TFTP сервера

TFTP сервер используется главным образом для первоначальной загрузки без дисковых рабочих систем. Настроим конфигурационный файл:

vim /etc/xinetd.d/tftp
= вывод команды с необходимыми изменениями =
service tftp
 {
 socket_type = dgram
 protocol = udp
 wait = yes
 user = root
 server = /usr/sbin/in.tftpd
 # Путь для расположения файлов
 server_args = -s /var/lib/tftpboot
 # Для включения поменяем yes на no
 disable = no
 per_source = 11
 cps = 100 2
 flags = IPv4
 }

Добавляем в автозагрузку:

systemctl enable xinetd

Запустим службу:

systemctl start xinetd

Настройка NFS сервера

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

vim /etc/exports
= вывод команды с необходимыми изменениями =
/var/lib/tftpboot/ 192.168.1.0/24(rw,no_root_squash)

Например, я использую сервер nfs для размещения бэкапов виртуальных машин Proxmox.

В моем случае необходимо добавить строчку:

/sevo44/pve/backup 192.168.0.100(rw,sync,no_root_squash,no_all_squash)

Где параметры имеют следующие значения:

  • /sevo44/pve/backup — расшариваемая директория;
  • 192.168.0.100 — IP адрес клиента с которого может быть подключение (можно указать 192.168.0.0/24 тогда будет возможность подключения для всей под сети);
  • rw – доступ на чтение и запись (может принимать значение ro-только чтение);
  • sync – синхронный режим доступа(может принимать обратное значение- async). sync (async) — указывает, что сервер должен отвечать на запросы только после записи на диск изменений, выполненных этими запросами. Опция async указывает серверу не ждать записи информации на диск, что повышает производительность, но понижает надежность, т.к. в случае обрыва соединения или отказа оборудования возможна потеря данных;
  • no_root_squash – запрет подмены uid/gid для суперпользователя (root). По умолчанию пользователь root на клиентской машине не будет иметь доступа к разделяемой директории сервера. Этой опцией мы снимаем это ограничение. В целях безопасности этого лучше не делать;
  • all_squash / no_all_squash — установка подмены идентификатора от всех пользователей all_squash — подмена запросов от ВСЕХ пользователей (не только root) на анонимного uid/gid, либо на пользователя, заданного в параметре anonuid/anongid. Используется обычно для публичного экспорта директорий. no_all_squash — запрет подмены uid/gid для от всех пользователей.

Создание папки и назначение прав доступа осуществляется командами:

mkdir -p /sevo44/pve/backup
chmod -R 777 /sevo44/pve/backup

Для полноценной работы необходимо открыть доступ необходимым портам. Для FirewallD команды имеют вид:

firewall-cmd --permanent --add-port=111/tcp
firewall-cmd --permanent --add-port=54302/tcp
firewall-cmd --permanent --add-port=20048/tcp
firewall-cmd --permanent --add-port=2049/tcp
firewall-cmd --permanent --add-port=46666/tcp
firewall-cmd --permanent --add-port=42955/tcp
firewall-cmd --permanent --add-port=875/tcp
firewall-cmd --permanent --zone=public --add-service=nfs
firewall-cmd --permanent --zone=public --add-service=mountd
firewall-cmd --permanent --zone=public --add-service=rpc-bind
= применим изменения =
firewall-cmd --reload

Внимательно отнеситесь к указанию зоны! Более подробно можно прочитать в статье FirewallD базовая настройка.

Добавляем в автозагрузку:

systemctl enable nfs-server

Запустим службу:

systemctl start nfs-server

Создание загрузочного меню PXE сервера

Скопируем необходимые файлы для работы меню:

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot
cp /usr/share/syslinux/vesamenu.c32 /var/lib/tftpboot
cp /usr/share/syslinux/memdisk /var/lib/tftpboot
cp /usr/share/syslinux/mboot.c32 /var/lib/tftpboot
cp /usr/share/syslinux/chain.c32 /var/lib/tftpboot

Создадим папку для файлов меню загрузки:

mkdir /var/lib/tftpboot/pxelinux.cfg

Создание главного меню PXE сервера

В главном меню мы будем использовать варианты загрузки системы и переход на подменю с утилитами по паролю.

Создадим файл главного меню:

mcedit /var/lib/tftpboot/pxelinux.cfg/default
= необходимые параметры с комментариями =
default vesamenu.c32
# Фон для меню
menu background backgrounds/fon.png
prompt 0
# Время через которое стартует первый пункт меню
timeout 100

menu title ##### PXE BOOT MENU: #####

Label 10
menu label Calculate 17 KDE & SEVO44
kernel live/calculate/cld17kde/boot/vmlinuz
append initrd=live/calculate/cld17kde/boot/initrd root=nfs:192.168.1.1:/var/lib/tftpboot/live/calculate/cld17kde calculate=lang:ru_RU,keymap:ru_RU,timezone:Europe/Moscow rw selinux=0

LABEL # ADMIN SETTINGS

LABEL 20
# Пароль для запуска
menu passwd 777
MENU LABEL Utilits
KERNEL vesamenu.c32
APPEND pxelinux.cfg/utilits

Label # BOOT LOCAL

label 30
menu label Boot from local drive
localboot 0

Файл фонового изображения меню должен быть размером 640х480 пикселей, в формате PNG или JPEG.

Создадим папку для фоновых изображений и папку для загрузочных live образов систем:

mkdir /var/lib/tftpboot/live
mkdir /var/lib/tftpboot/backgrounds

Загружаем необходимый iso образ любыми удобными вам способами и копируем содержимое в нужную папку.

При использовании образа с графической оболочкой KDE для стабильной работы необходимо использовать 4 G оперативной памяти!

Приведу лишь команды которые необходимы для монтирования и размонтирования образа iso:

mount -o loop /root/calculate_kde_sevo44.iso /mnt/iso
umount /mnt/iso

Настройки параметров для загрузки разных операционных систем различаются.

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

Моё главное меню:

Создание подменю для PXE сервера

Все утилиты я намеренно вывел в отдельное подменю и закрыл паролем. Так мне спокойней и пользователи не полезут туда куда им не надо.

Мой файл подменю для utilits выглядит так:

mcedit /var/lib/tftpboot/pxelinux.cfg/utilits
= вывод команды с пояснениями =
default vesamenu.c32
menu background backgrounds/fon.png

menu title ##### Utilits: #####

label # TEST

LABEL 10
MENU LABEL Memtest86+
KERNEL utilits/memtest86

LABEL 11
MENU LABEL MHDD
kernel memdisk
initrd utilits/mhdd32ver4.6.iso
append iso raw

LABEL 12
MENU LABEL Victoria 3.5 HDD
kernel memdisk
initrd utilits/v35.iso
append iso raw

label # Backup/Recovery

LABEL 20
MENU LABEL Clonezilla Live 2.5.2-17
KERNEL utilits/zilla/live/vmlinuz
APPEND initrd=utilits/zilla/live/initrd.img boot=live username=user union=overlay config components quiet noswap edd=on nomodeset nodmraid locales=ru_RU.UTF-8 keyboard-layouts=NONE ocs_live_run="ocs-live-general" ocs_live_extra_param="" video=uvesafb:mode_option=1024x768-16 ocs_live_batch=no net.ifnames=0 nosplash noprompt fetch=tftp://192.168.1.1/utilits/zilla/live/filesystem.squashfs

Label ###
LABEL 30
MENU LABEL NEXT
KERNEL vesamenu.c32
APPEND pxelinux.cfg/default

Скачать необходимый iso образ Clonezilla вы на сайт разработчика. На сайте вы можете найти всю необходимую информацию для настройки и работы с этой замечательной системой.

Скачать утилиты использованные в данном описании.

Моё меню с утилитами:

Видео

На видео показано как работает система Calculate Linux которую я настроил под свои нужды запускаемая с помощью PXE сервера.

Вывод

Имея под рукой такой сервер я без труда могу запустить на любом компьютере, с возможностью PXE загрузки, операционную систему и поработать в ней. Можно загрузить ClineZilla и произвести любые манипуляции с жесткими дисками. Конечно система с KDE тяжеловата и я обязательно настрою образ с XFCE, для работы на компьютерах со слабыми техническими параметрами.

Vim текстовый редактор

Рассмотрим основные команды работы с текстовым редактором Vim основном на более старом Vi. Если вы нацелены на серьезную дальнейшую работу в качестве системного администратора изучайте этот редактор. Vi универсальный редактор, который есть везде.

Почему выбираем VIM

Долгое время пользовался редактором mcedit, который входит в текстовый редактор Midnight Commander, и он вполне меня устраивал. Периодически видел в сети рекомендации опытных админов использовать редактор vim, но никак не мог понять чем же он так хорошо и почему советуют именно его.

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

  1. Других редакторов нет на других системах по умолчанию (например Solaris), Vi это универсальный редактор, который есть везде с 80-x годов;
  2. При редактировании с mc возможны ошибки, если случайно задел что-то и появился непечатный символ — глазами его не увидеть, а голову потом ломать можно очень долго почему что-то не работает как надо.

Этих причин мне хватило чтобы осознано изучить как работать с редактором Vim.

В случае отсутствия редактора установите пакет vim согласно правил выбранного дистрибутива.

Учебник VIM

Введем в консоли команду и увидим учебник по vim:

vimtutor
= вывод команды =
===============================================================================
= Д о б р о п о ж а л о в а т ь в у ч е б н и к VIM -- версия 1.7 =
===============================================================================

Vim -- это очень мощный редактор, имеющий множество команд, слишком много
 для того, чтобы их все можно было описать в таком учебнике, как этот.
 Этот учебник призван объяснить достаточное число команд для того, чтобы
 вы могли с лёгкостью использовать Vim в качестве редактора общего
 назначения.

Вам потребуется приблизительно 25-30 минут на освоение данного учебника в
 зависимости от того, сколько времени вы потратите на эксперименты.

Внимание! Командами в уроках вы будете изменять этот текст. Создайте
 копию этого файла, чтобы попрактиковаться на ней (если вы запустили
 "vimtutor", то это уже копия).

Важно помнить, что этот учебник предназначен для обучения в процессе
 использования. Это означает, что вы должны запускать команды для того,
 чтобы как следует их изучить. Если вы просто прочитаете этот текст, то
 не запомните команды!

Теперь убедитесь в том, что клавиша CapsLock не включена, и нажмите
 клавишу j несколько раз, так, чтобы Урок 1.1 полностью поместился на
 экране.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Урок 1.1: ПЕРЕМЕЩЕНИЕ КУРСОРА
** Для перемещения курсора нажмите клавиши h,j,k,l так, как показано ниже. **
!!! Остальная часть учебника не показана !!!

На прохождение всех уроков и выписывания всех команд в удобной мне форме у меня ушел день. Советую обязательно пройти эти уроки! Если вам покажется что используемые команды разбросаны по своим функциональным назначения вы можете воспользоватся моим списком команд.

Смена цветовой схемы

Все схемы для CentOS можно посмотреть по пути /usr/share/vim/vim74/colors

Чтобы посмотреть текущую схему, необходимо выполнить команду :

:colorscheme

Для просмотра цветовой схемы в текущей сессии набираем:

:colorscheme scheme_name

Для применить схемы после перезагрузки надо создать файл в папке пользователя и внести туда необходимый код:

= переходим в папку пользователя =
cd
= создаем необходимый файл =
vim .vimrc
= вносим необходимые параметры
syntax on
colorscheme scheme_name

Список основных команд VIM

ESC — снимает все режимы и переводит в Normal mode.

Навигация и Поиск

СТРЕЛКИ — перемещение курсора.
0 — (ноль) перемещение к началу строки.
Ctrl + G — внизу экрана появится статус с именем файла и номером строки.
Shift + G  — перемещение к концу файла.
:№ строки — переход к нужной строке.

/искомая фраза — поиск после курсора.
/искомая фраза\с — игнорировать регистр только для одного поиска.
n — повтор поиска.
Shift + N — поиск в обратном направлении.
?искомая фраза — сразу поиск в обратном направлении.

Опции для поиска:
:set ic — игнорирование регистра при поиске.
:set is — отображение частичных совпадений при поиске.
:set hls — подсветка всех совпадений при поиске.
Для отключения добавляется`no’ перед параметром.

Поиск парных скобок:
Ставим курсор на нужный символ { [ и тд. и знак % перенесет на парную скобку.

Выход и Сохранение

:q! — выйти из редактора БЕЗ СОХРАНЕНИЯ любых сделанных изменений.
:q — закрыть если не делали никаких действий с файлом.
:wq — выход с СОХРАНЕНИЕМ всего что сделано.
:w!q — выход с СОХРАНЕНИЕМ когда у файла есть атрибуты на запрет изменений. Не путать с правами доступа!

Аналоги команд:
w! — это W
q! — это Q

:w test — создаст файл test  в текущей директории.
:w /home/test — создаст файл по указанному пути.

Сохранения части текста в файл:
v — перевод в визуальный режим редактора (выделение стрелками).
:'<,’>w /root/test — параметр ‘<,’> говорит что сохраниться только выделенная часть  файл test.

Редактирование

:noh — убрать выделения.

i — вставка текста под курсором.
a — вставка текста после курсора.
A — добавление текста в конце строки.

yy — копирование строки.
v — переводит в визуальны режим. Стрелками выделяется нужный текст.
y — копирование выделенного текста.
p — вставка последнего удалённого текста или того что было скопировано по команде y.

r — замена символа под курсором.
R — замена нескольких символов.

ce — удаление символов в слове после курсора и переход в режим вставки.
с$ — после курсора в строке всё удалит и перейдет в режим вставки.

Клавиша Backspace может использоваться для исправления при наборе!

o — создание пустой строки ПОД курсором и переход в режим вставки.
O — создание пустой строку НАД курсором и переход в режим вставки.

:r TEST — вставка текст из файла TEST.
:r !ls — прочитает вывод команды ls и вставит его ниже курсора.

u — отмена (откат) предшествующих действий.
U — отмена (откат) предшествующих действий в строке.
CTRL+ R — отмена отмены (если случайно отменили то что не надо было отменять).

:s/было/стало — заменит первое найденное вхождение в строке.
:s/уводю/увожу/g — заменит все найденные в строке вхождения.
:#,#s/было/стало/g — где #,# номера этих строк для замены всех вхождений.
:%s/было/стало/g — замена всех вхождений во всем файле.
:%s/было/стало/gc — поиск всех вхождений во всем файле и запроса подтверждения замены.

x — удаление символа под курсором.
dd — удаление всей строки.
2dd удаление двух строк.
dw — удаление от курсора до конца слова, включая последующий пробел.
de -удаление от курсора до конца слова, НЕ включая последующий пробел.
d$ -удаление от курсора до конца строки.
d^ -удаление от курсора до начала строки.

Выполнение внешних команд

:sh — переход в консоль (для возврата набрать exit).
:!ls — команда добавит список файлов в текущем каталоге.

Вывод

Не так страшен Vim как он кажется при первом знакомстве с ним. Всего несколько дней и уже начинаешь понимать, что кажущаяся сложность использования на самом деле ограждает от случайных действий.

Conky удобный мониторинг системы

Рассмотрим основные моменты по работе с замечательной программой Conky которая позволяет выводить на рабочий стол любые параметры вашей системы показывая все процессы компьютера в реальном времени. Универсальная настройка для любой OC Linux.

Вступление

Удобное и информативное отображение параметров системы и особенно отображение тех параметров которые мне хочется видеть была одной из моих главных пожеланий при настройке любой системы. Первое время я пытался добавлять на панели разные аплеты с выводом информации, но все это не совсем удобно. Когда первый раз познакомился с Сonky мне было не удобно настраивать его и каждый раз при переустановке системы лезть в настройки и настраивать. К моей радости один из пользователей Calculate Linux, который регулярно выкладывает свои сборки, в сборку добавляет свой подход к настройкам Conky его то я и взял за основу.

Установка Conky

Пакет присутствует во всех дистрибутивах и называется conky. Назову лишь команды установки в некоторых системах.

Calculate Linux или Gentoo:

emerge conky

Debian

apt-get install conky

CentOS

yum install conky

Управление Conky

Для запуска достаточно запустить в консоли из под пользователя команду и на рабочем столе появится базовая версия отображения параметров:

conky

Все параметры берутся и файла настроек по умолчанию и вряд ли кого устроят. Вот так выглядят базовые настройки на моем рабочем столе:

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

Остановить можно командой из под пользователя:

killall conky

Удобный подход к работе с Conky

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

Вот то что я делаю при установке новой системы для удобной работы с Conky:

  • Ложу папку my_conky туда куда мне удобно,
  • Папку со шрифтами копирую в папку /usr/share/fonts/,
  • Добавляю в автозагрузку файл start-conky.sh в котором прописаны параметры запуска.

Файл необходимо сделать запускаемым. В консоли команда: chmod +x /путь до/start-conky.sh

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

Мой далеко не идеальный вариант настройки вы можете скачать по ссылке и отредактировать параметры под все свои требования.

Файл настроек Conky

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

Вот мой файл настроек который вы можете увидеть в скаченном архиве:

###############################
# Настройки Алексея Долотова #
# для сайта sevo44.ru #
###############################
update_interval 1
total_run_times 0
net_avg_samples 1
cpu_avg_samples 1
if_up_strictness link
# imlib_cache_size 0
double_buffer yes
no_buffers yes
format_human_readable
#######################
# Текстовые настройки #
#######################
use_xft yes
xftfont Ubuntu:size=8
override_utf8_locale yes
text_buffer_size 2048
#####################
# Оконная специфика #
#####################
own_window_class Conky
own_window yes
#own_window_type conky
own_window_argb_visual yes
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
border_inner_margin 4
border_outer_margin 1
alignment top_right
gap_x 15
gap_y 15
minimum_size 182 700
maximum_width 182
default_bar_size 60 8
# use_xft yes
# xftfont caviar dreams:size=8
# xftalpha 0.5
# uppercase no
#########################
# Графические настройки #
#########################
# draw_outline no
draw_borders no
draw_graph_borders no
draw_shades yes
default_color cccccc
color0 D3D2D5
color1 77507b
color2 F2F2F2
color3 5C3566
######################################
# Начало кода вывода после кода TEXT #
######################################
TEXT
###########
# Система #
###########
!!! Часть кода скрыл. Все увидите в скаченном архиве my_conky !!!
#########
# Конец #
#########

Вот так выглядят мои настройки на рабочем столе:

Под моим контролем всегда:

  • Состояние работы процессора,
  • Загруженность памяти и какие ресурсы кушают больше всего,
  • Какие приложения занимают ресурсы процессора,
  • Информация о свободном месте на диске,
  • Результат работа обоих сетевых карт, проводной и wi-fi,
  • Информация о назначенных IP адресах.

Результат

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

XRDP терминальный сервер Linux

Установим терминальный сервер XRDP на OC Debian. Настроим все основные требования для удобной работы с сервером для пользователей и администраторов. В последствии рассмотрим установку на сервер программу из семейства 1С Предприятие 8.

Введение

Из статьи вы узнаете о том как настроить терминальный сервер на базе операционной системы Linux. Настраивать будем используя дистрибутив Debian 10 Buster.

Ранее в этой статье я расказывал как производится настройка на Debian 8 и 9 версии и какие нюансы настройки. В новой версии большенсово проблем прошлых версий исправлено, но появились новые с решением которых я с вами и поделюсь.

Совершенно нет желания захломлять ресурс старыми не актуальными статьями. XRDP он всегда один и лучше использовать его на новых стабильных версиях. При желании всегда можно мигрировать со старой версии Debian на новую. Например, я вполне успешно делаю обновления начиная с 7 версии.

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

Требования для терминального сервера:

  • Работа буфера обмена в обоих направлениях,
  • Переключение раскладки клавиатуры на русский язык,
  • Работа пользователей по сертификату,
  • Монтирование сетевых ресурсов,
  • Подключение локальной папки на сервер,
  • Создание одной сессии для пользователя,
  • Подключение принтеров.

Главная задача чтобы сессия пользователя оставалась на сервере и можно было к ней подключиться с любого места.

Графическую оболочку лучше использовать легковесную. Например, LXDE или XFCE. В моем примере рассматривается использование XFCE.

Все дальнейшие действия описаны с учетом стандартной усатновки сервера с выбором окружения XFCE и установкой ssh сервера.

Если вам хочется почитать «Как скачать и установить Debian 10 Buster» вы можете это сделать на сайте который стал для меня отправной точкой в изучении Linux. Все статьи на этом ресурсе написаны понятным языком и проверены автором перед тем как выкладывать в сеть.

Неудачная попытка настройки XRDP на CentOS 7

В репозитории Epel присутствует свежая версия xrdp.x86_64 1:0.9.2-10.el7 что сразу порадовало. Установка проходит без проблем и все сразу работает после старта службы.

В CentOS, как я понял, работают в основном над своим рабочим окружением Gnomе и стараются поддерживать KDE. Для терминального сервера окружение Gnome и KDE тяжеловаты. Можно установить XFCE, LXDE или MATE но они в урезанном виде и пришлось поковыряться, чтобы настроить нужные элементы на панели не говоря уже о других неудобных моментах в настройке.

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

Предварительна подготовка

Для своего удобства я всегда устанавливаю файловый редактор vim и файловый менеджер mc. Установим выполнив команду:

apt install vim mc

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

По умолчанию считается что действия в консоли выполняются из под пользователя root.

Установка XRDP на Debian 10

К сожалению вы не сможете впоследствии установить на эту систему 1C:Предприятие по причине долгой задержки в поддержке этой версии от разработчиков. Команды и действия полностью эдентичны для установки на Debian 9.

Системные требования «1С:Предприятия 8»

Установка производится следующей командой:

apt install xrdp xorgxrdp

Настройка произведена и можно подключатся по протоколу RDP.

Для запуска X сервера (отображение экрана) существуют разные права доступа. По умолчанию запуск разрешен всем пользователям с доступом к консоли.

Для изменения прав доступа к запуску X сервера необходимо выполнить следующую команду:

dpkg-reconfigure xserver-xorg-legacy

Перезагружаем сервис:

service xrdp restart

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

Настройка XRDP

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

Скелет (Skel) позволит при добавлении нового пользователя скопировать все параметры настроенного пользователя.

Двухсторонний буфер обмена XRDP

Буфер сразу работает и не требует настроек. Все проблемы могут быть связанны с раскладкой клавиатуры которые мы решим дальше.

Перезагрузка системы пользователем XRDP

Остановился на варианте когда простому пользователю для выполнения перезагрузки не надо указывать пароль root.

Будем использовать сервис PolicyKit. Все параметры разбиты на секции где есть описание на английском языке. Для применения политик в нужных параметрах указывается необходимое значение.

Откроем нужный файл и сделаем необходимые изминения:

vim /usr/share/polkit-1/actions/org.freedesktop.login1.policy
= часть вывода команды и необходимые изменения =
= вместо auth_admin_keep указываем yes =
<action id="org.freedesktop.login1.reboot">
<description gettext-domain="systemd">Reboot the system</description>
<message gettext-domain="systemd">Authentication is required for rebooting the system.</message>
                <defaults>
                        <allow_any>yes</allow_any>
                        <allow_inactive>yes</allow_inactive>
                        <allow_active>yes</allow_active>
                </defaults>
<annotate key="org.freedesktop.policykit.imply">org.freedesktop.login1.set-wall-message</annotate>
</action>

Теперь при перезагрузке система не будет запрашивать пароль root.

Одна сессия для пользователя XRDP

Мне было необходимо сделать чтобы у пользователя при подключении создавалась только одна сессия и чтобы она сохранялась на сервере. Всегда удобно уйдя с работы и закрыв терминал придти домой подключиться по RDP и увидеть свой рабочий стол со всеми открытыми документами и программами.

Для настройки нам необходимо открыть файл и сделать там необходимые изменения:

vim /etc/xrdp/sesman.ini
= вывод части команды с необходимыми настройками =
[Sessions]
;; X11DisplayOffset - x11 display number offset
; Type: integer
; Default: 10
X11DisplayOffset=10

;; MaxSessions - maximum number of connections to an xrdp server
; Type: integer
; Default: 0
# Выставляем количество пользователей для одновременной работе на сервере 
MaxSessions=3

;; KillDisconnected - kill disconnected sessions
; Type: boolean
; Default: false
; if 1, true, or yes, kill session after 60 seconds
# Не разрываем сеанс при отключении пользователя чтобы потом попасть в туже сессию 
KillDisconnected=false

Запрет авторизации ROOT

По умолчанию разрешен вход под пользователем root. В целях безопасности отключим такую возможность:

vim /etc/xrdp/sesman.ini
= необходимое изменение =
[Security]
# Авторизация root. true - разрешено false - запрещено
AllowRootLogin=false

Название подключенной локальной папки

Изменим название подключаемой локальной папки при подключению к серверу терминалов на свое имя:

vim /etc/xrdp/sesman.ini
= необходимое изменение =
[Chansrv]
; drive redirection, defaults to xrdp_client if not set
# Название монтируемой папки
FuseMountName=Mount_FOLDER

Сертификат при работе сервера XRDP

По умолчанию система работает с сертификатами созданными при установке о чем свидетельствует информация в логе xrdp:

cat /var/log/xrdp.log
= необходимая информация =
[INFO ] Using default X.509 certificate: /etc/xrdp/cert.pem
[INFO ] Using default X.509 key file: /etc/xrdp/key.pem
[ERROR] Cannot read private key file /etc/xrdp/key.pem: Permission denied

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

Для исправления ошибки выполним команду которая добавит учетную запись пользователя с именем xrdp в группу с именем ssl-cert.

adduser xrdp ssl-cert

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

Выпуск собственого сертификата для XRDP

Выпустим свой сертификат по команде указанном в файле настройки xrdp.  Изменим только действие сертификата с 1 года до 10 лет. Создадим папку, перейдем туда и запустим команду генерации ключа:

mkdir /etc/xrdp/certificate/
cd /etc/xrdp/certificate/
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 3650
= будут заданы вопросы на которые ответьте по аналогии =
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Kostroma
Locality Name (eg, city) []:Kostroma
Organization Name (eg, company) [Internet Widgits Pty Ltd]:sevo44
Organizational Unit Name (eg, section) []:sevo44
Common Name (e.g. server FQDN or YOUR name) []:Administrator
Email Address []:info@sevo44.ru

Отредактируем файл настройки:

vim /etc/xrdp/xrdp.ini
= часть кода с необходимые изменениями =
; security layer can be 'tls', 'rdp' or 'negotiate'
; for client compatible layer
security_layer=negotiate
; minimum security level allowed for client
; can be 'none', 'low', 'medium', 'high', 'fips'
crypt_level=high
; X.509 certificate and private key
; openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365
certificate=/etc/xrdp/certificate/cert.pem 
key_file=/etc/xrdp/certificate/key.pem
; set SSL protocols
; can be comma separated list of 'SSLv3', 'TLSv1', 'TLSv1.1', 'TLSv1.2', 'TLSv1.3'
ssl_protocols=TLSv1.2, TLSv1.3
; set TLS cipher suites
#tls_ciphers=HIGH

Дадим необходимые права для файлов созданного сертификата выполнив команду:

chown -R xrdp:xrdp /etc/xrdp/certificate/

После перезагрузки сервера и подключения к нему по XRDP cообщений больше в логе об использовании сертификатов по умолчанию нет и сервис работает с нашим сертификатом.

Настройка вида окна авторизации XRDP

Отредактируем параметры отвечающие за отображение формы авторизации пользователей. Отредактируем параметры в файле:

vim /etc/xrdp/xrdp.ini
= часть кода с необходимыми изменениями =

; Login Screen Window Title
ls_title=XRDP server 1C

; top level window background color in RGB format
# Фон
ls_top_window_bg_color=000000

; width and height of login screen
ls_width=350
ls_height=430

; login screen background color in RGB format
ls_bg_color=dedede

; optional background image filename (bmp format).
#ls_background_image=

; logo
; full path to bmp-file or file in shared folder
# Свой логотип в формате bmp размера 240х140
ls_logo_filename=/etc/xrdp/logo_xrdp.bmp
ls_logo_x_pos=55
ls_logo_y_pos=50

; for positioning labels such as username, password etc
ls_label_x_pos=30
ls_label_width=60

; for positioning text and combo boxes next to above labels
ls_input_x_pos=110
ls_input_width=210

; y pos for first label and combo box
ls_input_y_pos=220

; OK button
ls_btn_ok_x_pos=142
ls_btn_ok_y_pos=370
ls_btn_ok_width=85
ls_btn_ok_height=30

; Cancel button
ls_btn_cancel_x_pos=237
ls_btn_cancel_y_pos=370
ls_btn_cancel_width=85
ls_btn_cancel_height=30

= Оставляю сессию только Xorg а остальные коментирую =

;
; Session types
;

; Some session types such as Xorg, X11rdp and Xvnc start a display server.
; Startup command-line parameters for the display server are configured
; in sesman.ini. See and configure also sesman.ini.
[Xorg]
name=Xorg
lib=libxup.so
username=ask
password=ask
ip=127.0.0.1
port=-1
code=20

Результат моих изменений.

Перезагрузим сервис xrdp для применения всех сделанных настроек:

service xrdp restart

Отключение screensaver

Вначале хотел отключать его у пользователей но подумав решил удалить:

apt-get remove xscreensaver

В системе Debian 10 после базовой установки я не обнаружил пакета xscreensaver.

Для того чтобы к системе всегда можно было подключиться в менеджере питания настройте необходимые параметры.

Настройка базового пользователя

Будем использовать пользователя что создавали при установке как базового пользователя из настроек которого будем делать скелет. Настраивайте как вам угодно. Вся настройка зависит только от требований и пожеланий конечных пользователей. Устанавливаем необходимые программы, монтируем сетевые ресурсы, устанавливаем принтеры, модернизируем панели и тд. и тп.

Раскладка клавиатуры в XFCE

С раскладками в XRDP приходилось возится больше всего. После добавления нового элемента «Раскладка клавиатуры» на панель и его настройки все работает как положено.

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

Что я только не перепробовал, куда только не писал рекомендованный код, по рекомендациям с разных статей но проблема эта никуда не уходила. Показать пользователю как каждый раз настраивать «Раскладка клавиатуры» не серьезно. Вариант есть дубовый но рабочий на 100 % и при любых обстоятельствах.

Добавил элемент на панель «Запуск приложения» указал там «Терминал Xfce» и внёс туда код:

setxkbmap -layout "us,ru" -model "pc105" -option "grp:alt_shift_toggle,grp_led:scroll"

Обратите внимание на клавиши смены раскладки!

Разместил рядом с флагами поменяв иконку на понравившуюся мне. 

Теперь если переключение не работает тыкаем по кнопке и раскладка снова работает.

Решение проблемы с раскладкой клавиатуры

Мне на почту прислал решение Михаил с сайта admin1c.ru
Посл проверки с радостью делись с вами этим решением!

Необходимо в файле /etc/xrdp/xrdp_keyboard.ini добавить необходимый код и переключение работает прекрасна при любых вариантах работы с системой.

vim /etc/xrdp/xrdp_keyboard.ini
= необходимые проверки и дополнения =
В моем случае эти коды были, но лучше проверить их наличие
[default_rdp_layouts]
rdp_layout_us=0x00000409
rdp_layout_ru=0x00000419

Всё что ниже добавляем в конце не забывая что переключение происходит сочетанием  клавиш alt+shift
[layouts_map_ru]
rdp_layout_us=ru,us
rdp_layout_ru=ru,us

[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
; model=pc105 при необходимости
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru

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

service xrdp restart

Блокировка настроек XFCE пользователям

В статье выше мы разрешили простым пользователям перезагружать сервер без ввода пароля root. Cделаем запрет на редактирование системных настроек. В папке /etc/xdg/xfce4/xfconf лежат базовые настройки и по умолчанию они не работают так как работают настройки самого пользователя. Добавив параметр в эти файлы пользователь будет использовать именно их.

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

Cделаем запрет на редактирование панели. Скопируем параметры настроенного пользователя:

cp -v /home/настроенный пользователь/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/
= вывод команды =
«/home/настроенный пользователь/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml» -> «/etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml»

Откроем и отредактируем файл указав запрет на изменения всем кроме пользователя local:

mcedit /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
= вывод команды с необходимыми изменениями =
<channel name="xfce4-panel" version="1.0" locked="*" unlocked="local">

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

Запрет на изменения настрое XFCE делается редактированием файла:

mcedit /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml
= вывод команды с необходимыми изменениями =
<channel name="xsettings" version="1.0" locked="*" unlocked="local">

Настройки XFCE сделанные пользователем не будут применяться но никаких предупреждающих сообщений пользователь не увидит!

Мы настроили запрет на выключение пользователю но значки показываются и можно выполнить действие указав пароль root. Такой вариант решает проблему но захотелось сделать эти кнопки не активными.

Изменим вид панели пользователя. Создадим папку и необходимый файл с параметрами:

mkdir /etc/xdg/xfce4/kiosk
mcedit /etc/xdg/xfce4/kiosk/kioskrc
= вывод команды с необходимыми изменениями =
[xfce4-session]
# Указываем пользователей кто может перегрузить сервер или разрешение группе %root
Shutdown=root,sevo44

Обычно я в панели вывожу элемент «Системные действия» и там выбираю только «Перезагрузка» и «Завершение сеанса».

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

Для применения всех параметров перезагрузим сервер:

reboot

Так выглядит выход из системы у пользователей с разрешением.

У всех остальных будет такой вид.

 Создание skel (скелета) для новых пользователей

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

Я использую настройки самой XFCE, рабочего стола и списка баз 1С:Предприятие. Выполним действия:

cd /home/Базовый пользователь
 cp -R -f -b .config/ /etc/skel/
 cp -R -f -b Рабочий\ стол/ /etc/skel/
# В случае использования 1С:Предприятие
 cp -R -f -b .1C/ /etc/skel/

Последняя строка кода скопирует настройку окна «Запуск 1С:Предприятие» в которой указываются параметры всех баз.

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

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

В одной из статей я подробно рассмотрел установку и настройку 1С:Предприятие на сервер терминалов который рассматриваем в этом материале.

Управление пользователями Debian

Для доступа будем использовать обычных пользователей которых создадим на сервере. Можно конечно настроить авторизацию по доменным пользователям, но мне такие сложности пока не требовались к тому же это приведет к необходимости настраивать VPN для пользователей которым необходимо работать удалённо.

Добавление новых пользователей

Добавление производится командой:

adduser user007
= вывод команды с информацией для заполнения =
Добавляется пользователь «user007» ...
Добавляется новая группа «user007» (1007) ...
Добавляется новый пользователь «user007» (1006) в группу «user007» ...
Создаётся домашний каталог «/home/user007» ...
Копирование файлов из «/etc/skel» ...
Введите новый пароль UNIX: 
Повторите ввод нового пароля UNIX: 
passwd: пароль успешно обновлён
Изменение информации о пользователе user007
Введите новое значение или нажмите ENTER для выбора значения по умолчанию
 Полное имя []: user007 
 Номер комнаты []: 
 Рабочий телефон []: 
 Домашний телефон []: 
 Другое []: 
Данная информация корректна? [Y/n] y

Изменении пароля пользователя

passwd user007
= вывод команды =
Введите новый пароль UNIX: 
Повторите ввод нового пароля UNIX: 
passwd: пароль успешно обновлён

Удаление пользователя

При удалении укажем необходимость удалять файлы пользователя и домашнюю директорию:

deluser --remove-home user007
= вывод команды =
Идёт поиск файлов для сохранения/удаления ...
Удаляются файлы ...
Удаляется пользователь «user007» ...
Предупреждение: в группе «user007» нет больше членов.
Готово.

Список пользователей

Посмотреть всех пользователей и их параметры можно посмотрев  необходимый файл:

cat /etc/passwd
= часть вывода команды =
test:x:1001:1001:test,,,:/home/test:/bin/bash
sevo44:x:1002:1002:sevo44,,,:/home/sevo44:/bin/bash
usr1cv8:x:999:1003:1C Enterprise 8 server launcher:/home/usr1cv8:/bin/sh
geoclue:x:119:127::/var/lib/geoclue:/bin/false
davfs2:x:120:128::/var/cache/davfs2:/bin/false

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

Подключение локального диска на сервер терминалов

Подключение было проверено на стандартном клиенте Windows и программах LInux Remmina и KRDC. Монтирование и работа с локальным диском подключаемого клиента происходит без проблем.

В случае проблем с подключением дисков необходимо в настройках подключения в локальных ресурсах отключать галочку “Принтеры»

Подключение с Windows

При подключении c систем Windows на странице авторизации не получится переключить раскладку клавиатуры для требуемого языка ввода. В большинстве случаев по умолчанию стоит Русская раскладка а вводит надо на Английском.

Перед подключением с Windows необходимо вначале перейти на раскладку в которой вводится логин и пароль, как правило это EN.

Добавление принтеров

К принтерам у меня особое отношение. Эти аппараты вечно приносят кучу проблем и слава богу что все больше и больше их делают сетевыми что облегчает настройку. Настроить сетевой принтер не вызовет проблем даже у начинающего администратора. С usb принтерами придется повозится до получения бубна мастера по подключению принтера в системах Linux. Подключение  локального принтера используя программу RDP клиента у меня никогда не получалось а по словам опытных программистов работает коряво и не стабильно. Ладно еще если в одном офисе всё а если разные или вообще с дома хотят подключить принтер вообще жжжж….

Для меня есть два варианта решения проблемы для удаленных от офиса пользователей:

  1. В случаях когда принтере не требуется я в семействе бухгалтерских программ 1С настраиваю нормальное сохранения в PDF и все это сохраняется в локальную папку которая без проблем подключается к серверу терминалов во всех популярных клиентах.
  2. Если нужен принтере в работе то необходимо настраивать VPN чтобы удавленный клиент попал в туже сеть.

Управление XRDP

Управление службой стандартное для систем Debian.

service xrdp restart
service xrdp start
service xrdp stop
service xrdp status

Так выглядит статус после старта службы:

service xrdp status
● xrdp.service - xrdp daemon
 Loaded: loaded (/lib/systemd/system/xrdp.service; enabled)
 Active: active (running) since Вт 2017-05-23 15:05:32 MSK; 32s ago
 Docs: man:xrdp(8)
 man:xrdp.ini(5)
 Process: 759 ExecStart=/usr/sbin/xrdp $XRDP_OPTIONS (code=exited, status=0/SUCCESS)
 Process: 730 ExecStartPre=/bin/sh /usr/share/xrdp/socksetup (code=exited, status=0/SUCCESS)
 Main PID: 949 (xrdp)
 CGroup: /system.slice/хrdp.service
 └─949 /usr/sbin/хrdp

май 23 15:05:31 хrdp systemd[1]: PID file /run/xrdp/xrdp.pid not readable (yet?) after start.
май 23 15:05:32 хrdp systemd[1]: Started xrdp daemon.
май 23 15:05:33 хrdp xrdp[949]: (949)(140156439295744)[INFO ] starting хrdp with pid 949
май 23 15:05:45 хrdp xrdp[949]: (949)(140156439295744)[INFO ] listening to port 3389 on 0.0.0.0

Просмотр активных пользователей XRDP

У каждого подключенного пользователя создается одна сессия, их то нам и надо посмотреть выполнив необходимую команду:

ps aux | grep xrdp | grep xorg
= вывод команды =
local      694  3.7  1.9 571540 76992 ?        Sl   22:47   0:29 /usr/lib/xorg/Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log

Вот мы видим что подключен только один пользователь с логином local и PID 694.

Просто снять этот процесс не достаточно, чтобы полностью завершить работу пользователя на сервере. Выведем список всех процессов сервиса XRDP:

ps aux | grep xrdp
= вывод команды =
root       447  0.0  0.0  13860  3640 ?        S    22:45   0:00 /usr/sbin/xrdp-sesman
xrdp       471  0.0  0.0  12248  2044 ?        S    22:45   0:00 /usr/sbin/xrdp
root       692  0.0  0.0  13616  2300 ?        S    22:47   0:00 /usr/sbin/xrdp-sesman
local      694  3.8  1.9 571540 76992 ?        Sl   22:47   0:36 /usr/lib/xorg/Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log
local      697  0.0  0.0  99512  3412 ?        Sl   22:47   0:00 /usr/sbin/xrdp-chansrv
xrdp       903  4.1  0.6  40076 28176 ?        S    22:47   0:37 /usr/sbin/xrdp
root       982  0.0  0.0   6224   828 pts/0    S+   23:02   0:00 grep xrdp

Теперь мы можем отключить пользователя указав команду, которая завершит все процессы пользователя:

pkill -9 -u local

Ротация логов xrdp

По умолчанию логи не ротируются и мы изменим это недоразумение. Можно создать свой файл ротации но мне это не надо и я добавлю параметры в один из стандартных файлов.

Откроем файл и добавим необходимые логи:

mcedit /etc/logrotate.d/rsyslog
=вывод команды с необходимыми дополнениями =
/var/log/syslog
{
 rotate 7
 daily
 missingok
 notifempty
 delaycompress
 compress
 postrotate
 invoke-rc.d rsyslog rotate > /dev/null
 endscript
}

/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
/var/log/хrdp-sesman.log
/var/log/хrdp.log
{
 rotate 4
 weekly
 missingok
 notifempty
 compress
 delaycompress
 sharedscripts
 postrotate
 invoke-rc.d rsyslog rotate > /dev/null
 endscript
}

Результат

Все требуемые мной параметры получились. Дальнейшее использование покажет какие проблемы могут быть в работе, но это обыденно и любая система требует вмешательства администратора. Все проблемы и их решения будут тут отражены. Радует что с каждой новой версией идут улучшения а значит проект живой и активно развивающийся.

Вся эта статья была лишь прелюдия для того чтобы рассказать как можно используя Linux настроить легально и надежно стабильную работу сервера  «1С:Предприятие 8.3 на Linux» работающего с файловой базой. Минимальные вложения и максимальная производительность.

RAID1 запуск после отказа

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

Информирование о неисправности RAID1 массива

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

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

Определение проблемного раздела

Для определения проблемного раздела выполните команду:

cat /proc/mdstat
=вывод команды=
Personalities : [raid1]
md2 : active raid1 sda3[2](S) sdb3[1]
 307683752 blocks super 1.2 [2/1] [_U]
md1 : active raid1 sda2[2] sdb2[1]
 3902759 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sda1[2] sdb1[1]
 979921 blocks super 1.2 [2/2] [UU]
unused devices:

Видим что массив md2 развалился и раздел sda3 выпал.

Действия после исправления раздела

Допустим что мы исправили диск и он с физической точки зрения исправен.

Удаление раздела из массива

Удаление выполняется командой:

mdadm /dev/md2 -r /dev/sda3

Добавление раздела в массив

Добавляем выполнив команду:

mdadm /dev/md2 -a /dev/sda3

Проверка массива

Проверим правильность работы массива командой:

cat /proc/mdstat
=вывод команды=
Personalities : [raid1]
md2 : active raid1 sda3[2] sdb3[1]
 307683752 blocks super 1.2 [2/1] [_U]
 [>....................] recovery = 0.4% (1518592/307683752) finish=83.9min speed=60743K/sec
md1 : active raid1 sda2[2] sdb2[1]
 3902759 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sda1[2] sdb1[1]
 979921 blocks super 1.2 [2/2] [UU]
unused devices:

Видим что пошла синхронизация разделов, а значит все прошло успешно.

Чтобы в реальном времени смотреть процесс сборки массива, достаточно ввести:

watch cat /proc/mdstat

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

mdadm --detail /dev/md2
/dev/md2:
 Version : 1.2
 Creation Time : Thu Mar 29 19:10:24 2012
 Raid Level : raid1
 Array Size : 307683752 (293.43 GiB 315.07 GB)
 Used Dev Size : 307683752 (293.43 GiB 315.07 GB)
 Raid Devices : 2
 Total Devices : 2
 Persistence : Superblock is persistent
 Update Time : Fri Mar 30 17:47:48 2012
 State : clean, degraded, recovering
 Active Devices : 1
Working Devices : 2
 Failed Devices : 0
 Spare Devices : 1
 Rebuild Status : 1% complete
 Name : debian:2 (local to host debian)
 UUID : 44da8106:3d3c2f10:446517c7:b9b4d593
 Events : 1028
 Number Major Minor RaidDevice State
 2 8 3 0 spare rebuilding /dev/sda3
 1 8 19 1 active sync /dev/sdb3