useradd -d /home/new_user -s /bin/bash new_user
mkdir /home/new_user
chown new_user:new_user /home/new_user
passwd new_user
su new_user
Например, инсталятор Debian'а не позволяет создавать пользователей, чьи имена содержат нижнее подчёркивание, что может идти в разрез с исторически сложившимися традициями с одной стороны, с другой стороны ручное создание пользователя может противоречить требованию единого id пользователя при работе с файловой системой на кластере.
В общем, разные бывают ситуации, иногда переименовать пользователя необходимо, сохранив его id.
groupmod --new-name newuser olduser usermod --login newuser --home /home/newhome olduser
mv /home/oldhome /home/newhome
groupadd data
mkdir /mnt/data
chmod 2775 /mnt/data/ chown root:data /mnt/data/
usermod -a -G data user_name
setfacl -R -m g::rwx /mnt/data # show result getfacl /mnt/data
Создание самоподписанного SSL-сертификата состоит из следующих этапов.
openssl genrsa -des3 -out jurik-phys.net.key 2048
openssl req -new -key jurik-phys.net.key -out jurik-phys.net.csr
В поле «Common Name» ввести доменное имя сайта, несколько имён через запятую, или маску сайта, например, *.jurik-phys.net
mv jurik-phys.net.key jurik-phys.net.key.org openssl rsa -in jurik-phys.net.key.org -out jurik-phys.net.key
openssl x509 -req -days 365 -in jurik-phys.net.csr -signkey jurik-phys.net.key -out jurik-phys.net.crt
Внимание! Использование самоподписанного сертификата будет вызывать в браузере предупреждение безопасности
Также инструкция от DigitalOcean ссылка .
В файле /etc/rc.local добавить:
su - user_name -c "vncserver -geometry 1920x1080 -depth 24 -deferupdate 0" &
В файле ~/.vnc/xstartup
exec /usr/bin/xfce4-session & # x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & # x-window-manager &
update-alternatives --list editor
update-alternatives --config editor
select-editor
Русские буквы в консоли Debian/Ubuntu. После очередного обновления можно столкнуться с «квадратами» вместо букв. Решение:
dpkg-reconfigure console-setup
Выбрать:
UTF-8 Combined - Latin; Slavic and non-Slavic Cyrillic Fixed Размер по вкусу.
Шрифт Fixed т.к., Terminus может отображаеться квадратами.
Закрепить результат:
update-initramfs -u
Дополнительная информация по ссылке.
Один из простых способов отправить электронную почку из шелла - использовать консольный почтовый клиент mutt в связке с внешним smtp сервером.
vim ~/.muttrc
set imap_user="mail_login" set imap_pass="mail_password" set realname = "Printed info" set smtp_url="smtps://$imap_user@smtp.mail.ru:465" set smtp_pass="$imap_pass" set ssl_force_tls=yes
vim mail-send.sh
#! /bin/bash subject="Email from bash" body="This email send using a bash scritpt" from="mail_login@mail.ru" to="resieve_email@mail.ru" echo "Sending email..." echo "$body" | mutt -s "$subject" -e "my_hdr From:$from" -b $from "$to"
curl -X POST "https://api.telegram.org/botXXX:YYYY/sendMessage" -d "chat_id=-zzzzzzzzzz&disable_notification=false&text=My sample text"
Сообщение с компьютера пришло на телефон в «телегу».
В файле /etc/ssh/sshd_config установить
PermitRootLogin no
или оставить возможность логина через публичные ключи, запретив логин через пароль
PermitRootLogin prohibit-password
На удалённую машину:
scp local_file user_name@server_name:/path/to/new/place/
С удалённой машины:
Обратно тоже можно: scp user_name@server_name:/path/to/remote_file /local_path/
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote
scp ~/.ssh/id_rsa.pub user@remote:id_rsa.pub
ssh user@remote
# создаем директорию и даём права [ -d ~/.ssh ] || (mkdir ~/.ssh; chmod 711 ~/.ssh) # добавляем открытый ключ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys # делаем правильные права chmod 600 ~/.ssh/authorized_keys # удаляем не нужное rm ~/id_rsa.pub
ssh user@remote
PasswordAuthentication no
ssh -D 127.0.0.1:8080 -f -N user.name@remote.domain.name
# apt install autossh
ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<host>
/etc/systemd/system/autossh-socks5-proxy-<host>-<port>.service
[Unit] Description=Auto up socks5 proxy After=network.target [Service] Environment=REMOTE_USER=<remote_user> Environment=REMOTE_HOST=<host> User=<local_user> Restart=on-failure RestartSec=15 ExecStart=/usr/bin/autossh -M 0 -N -o "ExitOnForwardFailure=yes" \ -o "ServerAliveInterval=30" \ -o "ServerAliveCountMax=3" \ -D 127.0.0.1:8080 \ ${REMOTE_USER}@${REMOTE_HOST} [Install] WantedBy=multi-user.target
systemctl enable autossh-socks5-proxy-<host>-<port>.service
Образ системы на VPS зачастую идёт с пустыми ключами шифрования, о чём можно судить по ошибкам в /var/log/authorize «No supported key exchange format» и нулевым размерам ключей в /etc/ssh/. Сервис ssh в данном случае не запускается.
Решение заключается в генерации новых ключей:
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
ssh [user]@[server] '[command]'
На некоторых каналах связи при отсутствии активности ssh соединение зависает. Решение заключается в посылке внутри ssh канала пустых пакетов между клиентом и сервером.
/etc/ssh/sshd_config
TCPKeepAlive yes ClientAliveInterval 30 ClientAliveCountMax 99999999
/etc/ssh/ssh_config
или .ssh/config
Host * ServerAliveInterval 10
Shellinabox - это программа, реализующая шелл доступ к linux-серверу через браузер
apt install shellinabox
Проверка
https://192.168.XX.XX:4200
1. Использовать ssh для логина /etc/default/shellinabox
SHELLINABOX_ARGS="--no-beep --service=/:SSH"
2. Запрет root логина в ssh /etc/ssh/sshd_config
PermitRootLogin prohibit-password
3. Появившиеся предупреждения не критичны, но при желании можно пересобрать пакет с небольшими правками кода ссылка .
Shellinabox всем хорош, но ломает отображение Midnight Commander'а. Выход использовать альтернативу WebSSH написанную на Python'е. Есть определённые различия в философии двух подходов, последний по умолчанию предполагает возможность подключения к любому серверу с поднятого инстанса, это надо иметь в виду, чтобы не сделать общедоступного ssh-proxy от вашего имени.
Для shellinabox требуется специальный комбинированный сертификат с определённым названием
cat /etc/letsencrypt/live/*domain.name*/fullchain.pem /etc/letsencrypt/live/*domain.name*/privkey.pem > /var/lib/shellinabox/certificate-*domain.name*.pem
Проверка работоспособности
systemctl stop shellinabox.serivce
shellinaboxd -v
Особенность. Для работы shellinabox необходимо существование сертификата с названием файла certificate.pem, на который можно делать символические ссылки вида certificate-domain.name.pem.
Работу DNSCrypt можно оценить через один из сервисов проверки DNS:
Идея: зарегистрировать N учётных записей Yandex.Disk'а по 10GB и примонтировать с помощью WebDAV N каталогов, объединить все N каталогов в единое облачное хранилище размером в N*10GB, прикрутить шифрование на стороне клиента и пользоваться сервисом для хранения редко используемых данных.
Особенности регистрации. Похоже, что за один подход лучше не регистрировать более 3-х учётных записей, иначе при переходе в Яндекс.Диск можно словить блокировку (мобильный в помощь):
Доступ временно ограничен
Соответственно, диск через WebDAV не монтируется c ошибкой:
402 Payment Required
Итог. Прежде чем переходить к следующему этапу, необходимо убедиться через Web-интерфейс, что Яндекс.Диск доступен для всех предполагаемых к использованию учётных записей.
Реализация Net.Storage в статье.
Ошибка удаления/переименования файлов из-за блокировки файлов, тыц
Решение.
'filelocking.enabled' => false
Отключить кривую блокировку файлов в файле config.php, ссылка
В /etc/fstab, mail_user - имя пользователя
https://webdav.cloud.mail.ru/ /mnt/mail.ru davfs uid=mail_user,file_mode=666,dir_mode=777,user,noauto 0 0
В /etc/davfs2/secrets
/mnt/mail.ru mail_user@mail.ru "password"
Монтирование:
mount /mnt/mail.ru
Cогласно договору, mail.ru получает авторские права на все загружаемые данные, и может использовать их по своему усмотрению. Данные надо шифровать.
Например, с помощью EncFS, которая использует директорию для хранения зашифрованных файлов, а не специально подготовленную ФС.
Создадим точку монтирования для расшифрованного каталога:
mkdir /mnt/crypt.mail.ru
Установка пакета encfs
apt-get install encfs
Подключение зашифрованного каталога в облаке.
encfs /mnt/mail.ru/.encfs /mnt/crypt.mail.ru
При первом запуске утилита попросит ввести пароль для шифрования. Если каталог уже зашифрован, то утилита спросит пароль для расшифровки. После этого все операции необходимо производить через /mnt/crypt.mail.ru.
Отключение зашифрованного каталога
fusermount -u /mnt/crypt.mail.ru
Разрешить не root пользователям монитровать EncFS.
Файл /etc/fuse.conf:
user_allow_other
Добавить пользователя в группу fuse
usermod -a -G fuse $USER
Руководство по настройке перенаправления на лету вывода звука приложения между передними выходами звуковой карты (front-left,front-right) и задними выходами (rear-left,rear-right).
Данный способ позволяет подключить к компьютеру акустическую систему на передние выводы, а на задние, например, наушники и при необходимости перенаправлять вывод звука на то или иное устройство.
Однако, как выяснилось, при создании виртуальных sink'ов в /etc/pulse/default.pa, согласно руководству, монофонические файлы не будут слышны при воспроизводстве, увы. Проблема известная и связанная с тем, что предлагаемый способ требует установки «enable-remixing = no».
Предлагаемое решение состоит в том, чтобы cделать виртуальные sink'и «speakers» и «headphones» не 2-х канальными, а 4-х канальными, с дублированием выходов звуковой карты, но различающимися входами.
Первоначальный вариант при котором монофонические файлы не звучат выглядит так
load-module module-remap-sink sink_name=speakers_stereo master=alsa_output.pci-0000_0a_05.0.analog-surround-40 channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-right remix=no load-module module-remap-sink sink_name=headphones_stereo master=alsa_output.pci-0000_0a_05.0.analog-surround-40 channels=2 master_channel_map=rear-left,rear-right channel_map=front-left,front-right remix=no
Задать человеческие названия каналам можно следующим образом:
update-sink-proplist speakers_stereo device.description="Speakers [Stereo]" update-sink-proplist headphones_stereo device.description="Headphones [Stereo]"
Изменённый вариант (моно звук) выглядит так:
150 load-module module-remap-sink sink_name=speakers_mono master=alsa_output.pci-0000_0a_05.0.analog-surround-40 channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-left remix=no 151 load-module module-remap-sink sink_name=headphones_mono master=alsa_output.pci-0000_0a_05.0.analog-surround-40 channels=2 master_channel_map=rear-left,rear-right channel_map=front-left,front-left remix=no
Замечание первое. sound_card_name для master=<sound_card_name> определяется из вывода команды
pacmd list-sinks | grep name
Замечание второе. В файле /etc/pulse/daemon.conf необходимо установить enable-remixing = no
Файл /etc/pulse/daemon.conf
resample-method = soxr-vhq ; resample-method = src-sinc-best-quality default-sample-format = float32le default-sample-rate = 192000 alternate-sample-rate = 96000
Цена улучшения звука - несколько бОльшая загрузка процессора.
Узнать поддерживаемые алгоритмы ресамплинга
pulseaudio --dump-resample-methods
Проверить текущий формат вывода звука картой
cat /proc/asound/card0/pcm0p/sub0/hw_params
На звуковом сервере в файле /etc/pulse/default.pa раскомментировать загрузку сетевого модуля и установить авторизацию для локальной сети
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16
На удалённом клиенте запускать приложение в виде
PULSE_SERVER=<pulse_servername> <application>
На клиенте в /etc/pulse/default.pa
load-module module-tunnel-sink-new sink_name=edifier server=dirac update-sink-proplist edifier device.description="Remote Bum-Bum"
На сервере /etc/pulse/default.pa
load-module module-zeroconf-publish
На клиенте /etc/pulse/default.pa
load-module module-zeroconf-discover
После перезапуска pulseaudio всё работает, но имя принимающего тунеля на сервере будет не очень красивым. Исправление на сервере
update-sink-proplist alsa_output.pci-0000_01_01.0.iec958-stereo device.description="Edifire R2800"
где alsa_output.pci-0000_01_01.0.iec958-stereo device.description определяется из вывода команды pactl list
http://ubuntuforums.org/showthread.php?t=1324135
https://s8dragon.wordpress.com/2010/12/26/listen-to-microphone-over-the-speakers-using-pulseaudio/
Проблема. Звук работает только для первого вошедшего в систему пользователя. У иных пользователей pulseaudio не видит звуковую карту, а следовательно, звука эти пользователи не слышат.
Решение 1. Использовать системный демон pulseaudio
deamonize = yes system-instance=yes local-server-type = system
[Unit] Description=PulseAudio Daemon [Service] Type=forking RemainAfterExit=yes ExecStart=/usr/bin/pulseaudio -D [Install] WantedBy=multi-user.target
systemctl enable pulseaudio.service
adduser user_name pulse-access
Данный способ разработчики рекомендуют избегать, но он самый безглючный в плане звука.
Решение 2. Организовать подключение к пульсе для второго пользователя через unix-сокеты, открываемые первым пользователем. Источник.
/etc/pulse/default.pa:
load-module module-native-protocol-unix auth-anonymous=1 socket=/tmp/my-pulse-socket-name
У второго пользователя ~/.config/pulse/client.conf:
default-server = unix:/tmp/my-pulse-socket-name
Минусы. При логине второго пользователя до первого, звука у второго пользователя не будет вовсе т.к, при запуске pulseaudio выдаст ошибку:
pulseaudio --start N: [pulseaudio] main.c: Обнаружен настроенный вручную сервер на %s, отказ от запуска.
В файл /etc/pulse/default.pa добавить
load-module module-alsa-sink device=hw:X
Здесь «X» - индекс звуковой карты, согласно выводу команды
aplay -l | grep card
systemctl --user stop pulseaudio.socket; systemctl --user stop pulseaudio.service
Описание. Системный раздел зашифрован, при загрузке необходимо ввести пароль. Однако usb-клавиатура после начала загрузки ядра и до момента ввода пароля не функционирует.
Решение. Необходимо добавить модули отвечающие за работу подсистемы usb и hid в образ первоначальной загрузки (initrd).
Реализация (debian). Прописать в /etc/initramfs-tools/modules необходимые модули.
usbcore usbhid hid_generic hid ehci_pci ehci_hcd xhci_hcd
Обновить образ начальной загрузки.
update-initramfs -u -k all
Результат. Добавленные в initrd модули инициализируют подсистему USB до монтирования основной ФС, благодаря чему с помощью usb-клавиатуры можно ввести пароль шифрования и продолжить загрузку операционной системы.
Duplicity:
https://kamaok.org.ua/?p=1093;
http://wiki.hetzner.de/index.php/Duplicity_Script/ru;
http://www.linuxspace.org/archives/5608.
https://wiki.debian.org/Duplicity
http://blog.geek.km.ua/2012/06/14/shpargalka-po-duplicity/
http://serverfault.com/questions/417158/duplicity-recommended-value-for-volsize
http://wiki.rfremix.ru/index.php/Архивирование_данных_с_помощью_Duplicity
Пример использования: системыне sd-карты на Raspberry Pi.
#dd if=/dev/sdX status=progress bs=1M | bzip2 --best > ./$(date +%Y%m%d_%H%M%S)_sdX-backup.bz2
xfconf-query -c xfce4-keyboard-shortcuts -p '/commands/custom/<Alt>F2' -s "xfrun4 --disable-server"
Проблема с отображением значков в системном лотке Xfce (Ubuntu). Решение:
vim /etc/lightdm/lightdm.conf
[SeatDefaults] autologin-user=auto_login_user_name
ffmpeg -i ./file.avi -acodec copy -vcodec copy -ss 00:00:00 -t 00:02:13 ./new_file.avi
for file in *.m4a; do avconv -i "$file" -f flac "`basename "$file" .m4a`.flac"; done
for file in *.mp3; do id=`stat --format=%Y "${file}"`; mv "${file}" "${id}"."${file}"; echo $id; done
for f in *.png; do convert -colors 2 -colorspace Gray -normalize +dither "$f" "${f%%.*}.tiff"; done
Проблема: Не открываются docx, xlsx документы.
Решение: update-binfmts –disable jar
Подробнее...
http://nikhgupta.com/code/installing-squid-proxy-server-on-centos-5-vps/
По-умолчанию все внешние соединения с proxy запрещены (при необходимости учитывать):
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # Example rule allowing access from your local networks. # Adapt localnet in the ACL section to list your (internal) IP networks # from where browsing should be allowed #http_access allow localnet http_access allow localhost # And finally deny all other access to this proxy http_access deny all
Создание загрузочной флешки Windows 7 из-под Linux'а:
https://romantelychko.com/blog/352/
http://blog.mind-x.org/2011/02/live-usb-windows-7-linux.html
mount /dev/sda1 /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
update-grub
или
grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
mount /dev/sda1 /mnt/custom
grub2-install /dev/sda
set prefix=(hd0,1)/grub set root=(hd0,1) ls /grub
set prefix=(hd0,1)/boot/grub set root=(hd0,1) ls /boot/grub
insmod ext2 insmod normal
normal
grub2-install --root-directory=/ /dev/sda
Загрузиться с установочного диска в режим восстановления, согласно инструкции[дистрибутив Debian]. :
Bootrec.exe /FixMbr
Bootrec.exe /FixBoot
Bootrec.exe /RebuildBcd
Предотвращение отключения usb и переход в настоящий suspend. Мануал тут.
Система пользовательских сертификатов, центра сертификации и БД отозванных сертификатов называется PKI - Public Key Infrastructure.
На стороне сервера создается корневой сертификат [ca.crt] и закрытый ключ [ca.key].
Для создания корневого сертификата и закрытого используется утилита easy-rsa. После установки данного пакета примеры лежат в /usr/share/easy-rsa. Путь к каталогу с PKI не должен содержать пробелов.
source ./vars ./clean-all ./build-ca
Последняя команда [build-ca] создаст корневой сертификат [ca.crt] и приватный ключ центра сертификации [ca.key], вызвав интерактивную команду openssl.
Большинство запрошенных параметров установлены в значения по умолчанию взятые из файла vars, common name - единственный параметр, который должен быть явно указан.
Дополнение. Для избежания ошибки вида: The <someName> field needed to be the same in the CA certificate and the request необходимо отредактировать поле <someName>, изменив его с «match» на «optional» в файле openssl.cnf. Подробнее.
Из соображений безопасности и работоспособности коннекта сертификаты должны быть на алгоритме sha256. Проверка сертификата удостоверяющего цента
openssl x509 -in ca.crt -noout -text | grep Signature
Аналогично, с помощью утилиты easy-rsa генерируются сертификат сервера [server.crt] и закрытый ключ сервера [server.key]:
./build-key-server server
Большинство параметров могут быть оставлены в значениях по умолчанию, явного ввода требует параметр Common name, можно ввести «server». Два других запроса требуют положительных ответов, «Sign the certificate? (Подписать сертификат?) [y/n]« и «1 out of 1 certificate requests certified, commit? (заверен 1 из 1 запросов на сертификацию, фиксировать?) [y/n]».
Исправление ошибки
Error checking x509 extension
./build-key-server server Ignoring -days without -x509; not generating a certificate Error checking x509 extension section server
X509 Subject Field
файла «vars» добавить export KEY_ALTNAMES="altServerName"
[server]
файла openssl.cnf параметр subjectAltName привести к видуsubjectAltName="DNS:$ENV::KEY_ALTNAMES"
На стороне сервера необходимо создать параметры Diffie Hellman'а:
./build-dh
openvpn --genkey secret keys/ta.key
Файл ta.key должен быть доступен как на сервере, так и на клиент. При этом в конфигурации необходимо добавить
tls-auth ta.key N
, где параметр N должен принимать значение «0» на одной стороне и «1» на другой. Например, если на сервере N = «0», то на клиенте N должен быть установлен в «1».
Cозданные ключи и сертификаты расположены в каталоге keys.
Имя файла | Где необходим | Назначение | Секретный |
---|---|---|---|
ca.crt | сервер + все клиенты | Корневой CA-сертификат | НЕТ |
ca.key | машина для подписи ключей | Корневой CA-ключ | ДА |
dh{n}.pem | только сервер | Параметры Diffie Hellman'а | НЕТ |
server.crt | только сервер | Сертификат сервера | НЕТ |
server.key | только сервер | Ключ сервера | ДА |
client1.crt | только клиент1 | Сертификат клиента1 | НЕТ |
client1.key | только клиент1 | Ключ клиента1 | ДА |
client2.crt | только клиент2 | Сертификат клиента2 | НЕТ |
client2.key | только клиент2 | Ключ клиента2 | ДА |
При подготовке материала по OpenVPN использовались источники: opennet.ru, habrahabr.ru, wiki.525.su, debian-help.ru
Файл /etc/openvpn/newton.conf
client dev-type tap dev vpn0 proto udp remote AA.BB.CC.DD resolv-retry infinite persist-key persist-tun comp-lzo ns-cert-type server mute-replay-warnings ca /etc/openvpn/key/ca.crt cert /etc/openvpn/key/newton.crt key /etc/openvpn/key/newton.key script-security 3 system up /etc/openvpn/dhcp.sh down /etc/openvpn/dhcp.sh verb 0
Файл dhcp.sh
#!/bin/bash # [ -x /sbin/dhclient ] || exit 0 case $script_type in up) # set mac address for tap interface ip link set dev ${dev} address 92:56:cd:85:43:d7 # echo "Your misson should you choose to accept it:" # echo "dhclient -v ${dev}" # echo "You have 30 seconds...GO!" dhclient -v "${dev}" & ;; down) echo "Releasing ${dev} DHCP lease." dhclient -r "${dev}" ;; esac
Подсмотрено здесь. Создать ловушку для обхода изменения /etc/resolv.conf, путём создания файла /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate следующего содержания:
#!/bin/sh make_resolv_conf(){ : }
Сделать его исполняемым:
chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate
Данный скрипт заменяет функцию replace make_resolv_conf() на изменённую, которая ничего не делает.
Также может понадобиться отключить обновление dns в NetworkManager'е (см. ссылку).
Особенность. OpenVPN релизован в виде tap интерфейса, сеть openvpn входит в домашнюю подсеть 192.168.93.xxx.
Задача.
Решение.
Запускать1) OpenVPN2) при подключении Wi-Fi, проверяя SSID текущей сети, отключать OpenVPN при закрытии Wi-Fi.
Запуск отключение реализуется через параметры Network Manager'а в файле /etc/NetworkManager/dispatcher.d/01ifupdown:
up|vpn-up) export MODE="start" export PHASE="post-up" ############################ /etc/openvpn/vpn_status_test ############################ run-parts /etc/network/if-up.d ;; down|vpn-down) export MODE="stop" export PHASE="post-down" ############################ /etc/init.d/openvpn stop & ############################ run-parts /etc/network/if-post-down.d ;;
/etc/openvpn/vpn_status_test:
#!/bin/bash # jurik_phys@jabber.ru - ssid домашней сети local_wifi=`/sbin/iwconfig wlan0 | /bin/grep -c "jurik_phys@jabber.ru"` # 192.168.93.5 - домашний ip для ethernet порта ноута local_wire=`/sbin/ifconfig eth0 | /bin/grep -c "192.168.93.5"` if [ $local_wifi == "1" ] || [ $local_wire == "1" ]; then # echo "Home network. OpenVPN will be stop now" # SysV init version # /etc/init.d/openvpn stop # SystemD version systemctl stop openvpn@tesla else # SysV init version # vpn_not_run=`/etc/init.d/openvpn status | /bin/grep -c "not running"` # SystemD version vpn_not_run=`systemctl status openvpn@tesla | grep -c "inactive"` if [ $vpn_not_run == "1" ]; then # echo "Intranet and OpenVPN not running. OpenVPN will be start" # SysV init version # /etc/init.d/openvpn restart # SystemD version systemctl start openvpn@tesla fi fi
tc qdisc add/change/ dev ens3 root tbf rate 15mbit burst 1214 latency 50ms
iptables -t mangle -I POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
ChatGPT объясняет:
Дано. На роутере работает vpn-клиент с ip-адресом шлюза 10.73.73.1; доступ в интернет получен через usb-модем со шлюзом 192.168.0.1; локальная сеть роутера представлена подсетью вида 192.168.6.0/24. При установлении vpn-соединения трафик всех клиентов из локальной сети 192.168.6.0/24 по умолчанию заворачивается в vpn.
Задача. Клиенту с ip-адресом 192.168.6.49 предоставлять интернет без использования vpn-соединения.
Решение.
# Добавление правила для обработки трафика от 192.168.6.49 таблицей маршрутизации "100" ip rule add from 192.168.6.49 table 100 # Добавление маршрута по умолчанию через usb-модем (usb0) в таблице 100 ip route add default via 192.168.0.1 dev usb0 table 100
Полезные команды
# Просмотр основной таблицы маршрутизации ip route show
# Просмотр таблицы маршрутизации 100 ip route show table 100
# Просмотр активных правил маршрутизации ip rule show
Решение на LOR'е
Проблема. Версия cr3-3.0.56 с сайта проекта мало того, что не проходит по зависимостям (приходится вытаскивать содержимое deb-пакета), так ещё и не сохраняет настройки пользователя, пытаясь сохранить их в системном каталоге /usr/share/cr3.
Решение. Использовать данную версию из репозитория Alt Linux'а. Содержимое rpm пакета также придётся доставать вручную. Правда в дебиане потребуется собрать библиотеку libpng15.so и положить ещё в /usr/lib.
Руководство администратора по SystemD от RH. Рассуждения справедливы для Debian 8 «Jessie».
Также хороший обзорный материал, SystemD in Action.
Запуск OpenVPN после появления connect'а в NetworkManager'е (конфигурация openvpn расположена в /etc/openvpn/newton.conf):
/etc/systemd/system/openvpn@newton.service.d
[Unit] After=NetworkManager-wait-online.service wpa_supplicant.service
systemctl enable NetworkManager-wait-online.service
P.S. OpenVPN подключение поднимается не средствами NetworkManager из-за того, что при использовании tap сетевого интерфейса NM не может получить сетевые параметры из openvpn-сети через dhclient (Bug #297707).
systemctl is-enabled systemd-networkd-wait-online.service
systemctl enable systemd-networkd-wait-online.service
/etc/systemd/system/mnt-openvpn-public.mount
[Unit] Description=Mount NFS over OpenVPN (public) After=openvpn@newton.service [Mount] What=192.168.XX.YY://storage/public Where=/mnt/openvpn/public Type=nfs4 Options=rsize=8192,wsize=8192,timeo=5 [Install] WantedBy=multi-user.target
Следует отметить, что в данном случае nfs монтируется из OpenVPN сети после установления связи.
В категории Options важным параметром является timeo=5, без него монтирование не происходит, а в логах systemd упоминается об истекшем timeout при монтировании ресурса.
systemctl enable mnt-openvpn-public.mount
Готово, при загрузке системы и удачном подключении openvpn в каталог /mnt/openvpn/public будет автоматически примонтирован удалённый ресурс 192.168.XX.YY:/storage/public.
Однако на этом настройка не закончена, ибо, система при выключении будет вставать в ступор на несколько минут, пытаясь отключить удалённый ресурс… Такой же ступор будет наблюдаться и при установки libvirt-daemon… В общем, очередной Bug #1438612.
Обход бага #1438612 связанного с ранним отключением dbus.service реализуется дополнением зависимостей к сервису NetworkManager, для чего:
/etc/systemd/system/NetworkManager.service.d
nfs-shutdown-unmount.conf
следующего содержания:
[Unit] After=dbus.service
В итоге выключение системы должно нормализоваться.
systemctl enable systemd-networkd-wait-online
Флеш не стартует автоматически при включённом Opera Turbo. Решение - отключить Opera Turbo.
Рекомендуется создавать массив на разделах с типом FD (Linux RAID), что позволит ядру автоматически собирать разделы при загрузке системы (см. раз, два, три).
Для этого, например, для диска sda в fdisk'е (fdisk /dev/sda) необходимо:
Можно создавать raid-массив:
mdadm --create /dev/md<N> --level=1 --raid-device=2 /dev/sd<A><K> /dev/sd<B><K>
После создания стартует процесс начальной синхронизации (initial resync), который работает в фоне и не препятствует нормальному использованию raid-массива, но лучше дождаться завершения синхронизации перед активным использованием созданного raid-массива.
Сохранение информации о созданном массиве
mdadm --examine --scan ... ARRAY /dev/md/<N> metadata=1.2 UUID=071e1eec:c0224deb:edbe49f1:e7620e05 name=maxwell:2
Отсутствующую строку с /dev/md/<N> необходимо добавить в /etc/mdadm/mdadm.conf и выполнить обновление initramfs
update-initramfs -u
Инициализация физических разделов под LVM. В данном случае - это созданный ранее raid-1.
pvcreate /dev/md<N> # Просмотреть результат pvscan
Создание группы разделов (VG) LVM.
vgcreate -v storage /dev/md<N> # Просмотреть результат vgdisplay
Создана группа томов с именем «storage»
Создание логического тома под файловую систему. При этом, если планируется использование LVM снапшотов, размер логического тома (LV) необходимо выбирать исходя из необходимости наличия свободного места в группе томов (VG) для функционирования снапшотов.
lvcreate --size <XXX>G --name vol1 storage # Просмотреть результат lvdisplay vgdisplay
Источник: раз.
Создание файловой системы на логическом томе. Если файловая система не будет использоваться под системные нужды, то резервирование места для файлов пользователя «root» можно отключить, также при дальнейшем использовании снапшотов рекомендуется монтировать файловую систему с параметром noatime для избежания избыточных изменений основной фс и их записи в снимок.
mkfs.ext4 -m 0 -L storage /dev/storage/vol1
Изменение размера LV. Ниже производится увеличение (+) размера логического тома на 5ГБ
lvresize --resizefs --size +5G /dev/storage/vol1
Как работают снапшоты LVM и какие данные записываютcя на диск при работе со снапшотами можно прочитать по ссылке. Кратко, новые блоки пишутся в оригинальный раздел, а те данные, что должны остаться неизменными, но изменились, копируются в изначальном виде в снапшот, поэтому в группе логических томов (VG) должно быть свободное место под созданный снапшот.
Создание снапшота с выделением под него всего свободного места на VG
lvcreate -l 100%FREE --snapshot --name vol1.snap /dev/storage/vol1 # Просмотреть результат lvs lvdisplay
Полученный снимок может быть примонтирован, как обычное блочное устройство
mount -o noatime /dev/storage/vol1.snap /mnt/storage.snap/
Удаление снимка. После резервного копирования или иных процедур, снапшот должен быть удалён т.к., его наличие отрицательно сказывается на скорости основной файловой системы.
lvremove -y /dev/storage/vol1.snap
mdadm --create /dev/md0 --level=1 --raid-device=2 --metadata=0.90 /dev/sda1 /dev/sdb1
pvcreate /dev/md0 vgcreate hdd /dev/md0 lvcreate -n root -L 34G hdd lvcreate -n swap -L 3.26 hdd
watch -n 1 cat /proc/mdstat
grub-install /dev/sdb
Дано:
df -h
/dev/md5 424G 11G 414G 3% /home
cat /proc/mdstat
md5 : active raid1 sdb2[0] sda2[1] 451684216 blocks super 1.2 [2/2] [UU]
Рейд1 /dev/md5 смонтирован в каталог /home и содержит данные пользователей, размер 414ГБ;
Задача: Уменьшить замер домашнего каталога до 14 ГБ и на оставшихся 400ГБ поднять raid-1 для хранения данных.
Решение:
umount /home
mdadm /dev/md5 --fail /dev/sdb2
cat /proc/mdstat
Personalities : [raid1] md5 : active raid1 sdb2[0](F) sda2[1] 451684216 blocks super 1.2 [2/1] [_U]
mdadm /dev/md5 --remove /dev/sdb2
cat /proc/mdstat
Personalities : [raid1] md5 : active raid1 sda2[1] 451684216 blocks super 1.2 [2/1] [_U]
fdisk /dev/sdb
fdisk -l /dev/sdb
Device Boot Start End Blocks Id System /dev/sdb1 * 2048 73402367 36700160 fd Linux raid autodetect /dev/sdb2 73402368 81790975 4194304 fd Linux raid autodetect /dev/sdb3 81790976 976773167 447491096 fd Linux raid autodetect
partprobe
mdadm --create /dev/md12 --level=1 --raid-devices=2 missing /dev/sdb2 mdadm --create /dev/md13 --level=1 --raid-devices=2 missing /dev/sdb3
cat /proc/mdstat
Personalities : [raid1] md13 : active (auto-read-only) raid1 sdb3[1] 447359872 blocks super 1.2 [2/1] [_U] md12 : active (auto-read-only) raid1 sdb2[1] 4192192 blocks super 1.2 [2/1] [_U]
mkfs.ext4 /dev/md12 mkfs.ext4 /dev/md13
tune2fs -m 0 /dev/md12 tune2fs -m 0 /dev/md13
umount /home mdadm --stop /dev/md5
mdadm /dev/md12 --add /dev/sda2 mdadm /dev/md13 --add /dev/sda3
cat /proc/mdstat
Personalities : [raid1] md13 : active raid1 sda3[2] sdb3[1] 447359872 blocks super 1.2 [2/1] [_U] [>....................] recovery = 4.5% (20240576/447359872) finish=85.7min speed=83028K/sec md12 : active raid1 sda2[2] sdb2[1] 4192192 blocks super 1.2 [2/1] [_U] resync=DELAYED
Видно, что разделы подхватились массивами и запустился поочерёдный процесс синхронизации raid-массивов. На данном этапе уже можно работать с массивами, но желательно дождаться завершения синхронизации.
Подробности в статье по ссылке https://anikin.pw/all/zamena-dika-v-programnom-raid1-v-linux/
Переименовать raid-массив https://delightlylinux.wordpress.com/2019/07/27/md127-how-to-rename-a-raid-array-with-mdadm/
При размере диска более 2ТB можно столкнуться с ошибкой «Value too large for defined data type invalid end block»
badblocks -svw /dev/sda badblocks: Значение слишком велико для такого типа данных invalid end block (13672382464): must be 32-bit value
Быстрое решение - использовать иной размер блока, например, «badblock -b 4096» вместо значения по умолчанию «1024», где значение 4096 можно получить из вывода команды «blockdev –getbsz /dev/sda», ссылка .
badblocks -svw -b 4096 /dev/sda
0 - stdin
1 - stdout
2 - stderr
prog 1>log 2>err
#stderr в stdout: 2>&1
С точки зрения администрирования удобно все используемые алиасы располагать в отдельном файле, обычно это файл ~/.bash_aliases
Необходимо помнить, что данный файл должен быть загружен через ~/.bashrc
if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi
Для ручной загрузки алиасов можно использовать команду source ~/.bash_aliases
Запись на flash-накопители (ограничение буфера) ссылка.
KWin has detected that your OpenGL library is unsafe to use, falling back to XRender. kwin(5744): Failed to initialize compositing, compositing disabled
Решение. В ~/.kde/share/config/kwinrc OpenGLIsUnsafe=true изменить на false (см. ссылку).
Импортирование нового открытого ключа:
apt-key adv --recv-keys --keyserver keys.gnupg.net KEY-ID
По умолчанию, firefox не позволяет сразу открыть файл FictionBook (fb2) в сторонней программе, предлагая сохранить его на диск. Решение в добавлении типа файлов «fb2» в настройки браузера.
Для этого необходимо добавить в файл mimeTypes.rdf, находящийся в профиле пользователя, следующие строки:
<RDF:Description RDF:about="urn:mimetype:application/x-fictionbook+xml" NC:fileExtensions="fb2" NC:description="документ FictionBook" NC:value="application/x-fictionbook+xml" NC:editable="true"> <NC:handlerProp RDF:resource="urn:mimetype:handler:application/x-fictionbook+xml"/> </RDF:Description>
Основой приведённого описания файлов FictionBook является описание zip архива.
Скорость записи
sysbench memory --memory-block-size=1G --memory-total-size=50G --memory-oper=write --threads=1 run | grep transferred
Скорость чтения
sysbench memory --memory-block-size=1G --memory-total-size=50G --memory-oper=read --threads=1 run | grep transferred