Linux
MariaDB
Войти в базу данных
sudo mysql
mysql -u root -p
Создать нового пользователя
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
Предоставление прав доступа для пользователя
GRANT ALL PRIVILEGES ON database.table TO 'user'@'localhost';
- database - название базы в MySQL, к которой мы предоставляем доступ.
- table - название таблицы БД, к которой мы предоставляем доступ
- можно использовать *, чтобы предоставить доступ ко всем базам данных/таблицам
Cписок наиболее часто используемых привилегий MySQL:
ALL PRIVILEGES
- пользователь имеет полный доступ к базе данных.CREATE
- пользователю разрешено создавать базы данных и таблицы.DROP
- пользователь имеет право удалять базы данных и таблицы.DELETE
- пользователь может удалять строки из определенной таблицы.INSERT
- пользователь может вставлять строки в определенную таблицу.SELECT
- пользователю разрешено читать базу данных.UPDATE
- пользователь может обновлять строки таблицы.
Пример
GRANT SELECT, INSERT, DELETE ON database.* TO 'user'@'localhost';
Внесение изменений
FLUSH PRIVILEGES;
Определений существующий привилегий
SHOW GRANTS FOR 'user'@'localhost';
Отмена привилегий
Аналогично присвоению
REVOKE ALL PRIVILEGES ON database.* TO 'user'@'localhost';
Удалить пользователя
DROP USER 'user'@'localhost';
Просмотреть методы аутентификации
SELECT user,authentication_string,plugin,host FROM mysql.user;
Создать базу данных
CREATE DATABASE db_server01;
Просмотреть список баз данных
SHOW DATABASES;
Postgresql
Установка пакета
sudo apt install postgresql
Проверка состояний
sudo systemctl is-active postgresql
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
sudo pg_isready
Создание пользователя и базы
sudo su - postgres
psql
Управление пользователями
\du
CREATE USER bob WITH PASSWORD 'P@$$w0rd';
CREATE DATABASE bobdb;
GRANT ALL PRIVILEGES ON DATABASE bobdb to bob;
\q
exit
Настройка клиентской аутентификации
cd /etc/postgresql/14/main
postgresql.conf
listen_addresses = '*'
uncomment this line and change localhost to *
pg_hba.conf
host all all 0.0.0.0/0 md5
изменить строку 127.0.0.1/32 на 0.0.0.0/0
Перезагрузить сервис
sudo systemctl restart postgresql
Можно протестировать кодом
import psycopg2
class PostgresqlConn():
def __init__(
self,
user="ea",
password="ea",
host="194.87.206.89",
port="5432"
):
self.user = user
self.password = password
self.host = host
self.port = port
def fDbOpenConn(self, database):
db_conn = psycopg2.connect(
database=database,
user=self.user,
password=self.password,
host=self.host,
port=self.port
)
# print("Database opened successfully")
db_cursor = db_conn.cursor()
return db_conn, db_cursor
def fDbCloseConn(self, db_conn):
db_conn.commit()
db_conn.close()
# print("Database closed successfully")
def fFindNoteTable(self, arr_clmns, sql_req, database):
db_conn, db_cursor = self.fDbOpenConn(database)
db_cursor.execute(sql_req)
l_test = []
for i in db_cursor.fetchall():
l_test.append(i)
df = pd.DataFrame(
columns=arr_clmns,
data=l_test
)
self.fDbCloseConn(db_conn)
return df
test = PostgresqlConn()
test.fDbOpenConn('db_trobotic')
Netplan
sudo nano /etc/netplan/02-networkd.yaml
sudo netplan generate
Права доступа Linux
WinSCP ошибка
sudo chown -R ea:ea .
Узнать права каталога Для того, чтобы просмотреть права доступа на файлы и каталоги в нужной директории, переходим в неё и выполняем команду: ls -l
Получаем:
drwxr-xr-x 2 openhab openhab 4096 окт 22 22:15 html
Слева отображены права доступа на файл и директорию вида:
drwxrwxr-x
Обозначения символов Первый символ
Первый символ обозначает тип данных: - - обычный файл; d - директория/каталог/папка (directory); l - символическая ссылка (link).
Последующие символы
Следующие 9 символов обозначают права доступа.
rwxrwxr-x
Данные 9 символов состоят из трех групп:
rwx rwx r-x
Первая группа из трех символов обозначает права доступа владельца файла или директории:
u - user
Вторая группа из трех символов обозначает права доступа на файл или директорию для системной группы:
g - group
Третья группа из трех символов обозначает права доступа на файл или директорию для всех остальных:
o - other
r read, то есть, право доступа на чтение файла или директории. w write, то есть, право на изменение и удаление файла или директории. x eXecute, то есть, право на запуск файла как программы или вход в директорию. Всегда располагаются в таком порядке:
rwx
Если вместо какого-то символа идёт тире (минус), к примеру:
r-x
то это значит, что отсутствуют права на изменение и удаление файла или директории. Или так:
r--
то это обозначает, что отсутствуют права на изменение и запуск файла или директории. Доступен только просмотр.
Изменение права для группы на изменение файла: sudo chmod g-w /etc/openhab2 Рекурсивное изменение права для группы на изменение файла:
Изменим рекурсивно права на файлы и директории внутри нужной директории. Отменим, к примеру, все права у остальных пользователей и групп:
chmod -R o-rwx ~/linuxrussia.com/
OpenVPN Linux
Установка VPN сервера на линукс через git
sudo apt-get install git
клонируем репозиторий openvpn-install
с помощью инструмента git
cd ~
git clone https://github.com/Nyr/openvpn-install.git
переходим в каталогopenvpn-install
, созданный с помощью клонирования, и запускаем сценарий установщика
cd openvpn-install/
ls -1
chmod +x openvpn-install.sh
sudo ./openvpn-install.sh
получаем несколько запросов на изменение или подтверждение настроек по умолчанию для установки
Welcome to this OpenVPN "road warrior" installer! I need to ask you a few questions before starting the setup. You can leave the default options and just press enter if you are ok with them.
First, provide the IPv4 address of the network interface you want OpenVPN listening to. IP address: X.X.X.X - подтверждаем ip сервера
Which protocol do you want for OpenVPN connections? 1) UDP (recommended) 2) TCP Protocol [1-2]: 1 - тут выбираем на свое усмотрение
What port do you want OpenVPN listening to? Port: 1194 - прописываем порт по умолчанию или свой на выбор
Which DNS do you want to use with the VPN? 1) Current system resolvers 2) 1.1.1.1 3) Google 4) OpenDNS 5) Verisign DNS [1-5]: 3 - тут выбираем на свое усмотрение
Finally, tell me your name for the client certificate. Please, use one word only, no special characters. Client name: testclient - вводим имя первого клиента
Okay, that was all I needed. We are ready to set up your OpenVPN server now. Press any key to continue...
- жмем Enter После создания клиента файл можно найти в папке root и скачать на свое устройство
добавим службу openvpn-server в автозагрузку
sudo systemctl enable openvpn-server@server.service
проверяем статус
sudo systemctl status openvpn-server@server.service
для создания еще одного клиента или удаления существующего необходимо зайти в папку openvpn-install
cd openvpn-install/
выполняем и следуем подсказакам в консоли
sudo ./openvpn-install.sh
для мониторинга клиентов онлайн необходимо проверить наличие в файле /etc/openvpn/server.conf строки status openvpn-status.log (если есть идем дальше, если нет то дописываем строку в файле конфигурации и перезагружаем службу openvpn-server) и выполняем команду
cat /etc/openvpn/server/openvpn-status.log
Установка клиента на линукс
sudo mv client1.ovpn /etc/openvpn/client/client1.conf
sudo systemctl enable openvpn-client@client1
sudo systemctl start openvpn-client@client1
Задать клиенту статический адрес с сервера
sudo nano /etc/openvpn/ccd/client1
ifconfig-push 10.8.0.51 255.255.255.0
добавить в server.conf
client-config-dir /etc/openvpn/ccd
перезагрузить сервер
systemctl restart openvpn-server@server.service
tun это туннель L3, tap это туннель L2
добавление клиентов
sudo ./openvpn-ubuntu-install.sh
Изменить шаблон клиента
sudo nano /etc/openvpn/client-template.txt
Перезагрузка VPN клиента в случае отсутствия соединения
Создаем conn_script
IP1=ya.ru
IP2=8.8.8.8
RES1=0
RES2=0
ping -I tun0 -q -c 2 $IP1 > /dev/null && RES1=1
ping -I tun0 -q -c 2 $IP2 > /dev/null && RES2=2
if [ $RES1$RES2 = 00 ]
then
echo "Bad conn"
sudo systemctl restart openvpn-client@LinuxSrvVdmx > /dev/null
fi
echo "Conn tested $(date)"
Вызываем скрипт командой
bash conn_script
Также добавляем выполнение скрипта в Cron
Firewalld
sudo apt install firewalld
systemctl enable firewalld
systemctl start firewalld
Перечитать правила
sudo firewall-cmd --reload
Открыть порт
sudo firewall-cmd --permanent --zone=public --add-port=5000/tcp
Закрыть открытый порт
sudo firewall-cmd --permanent --zone=public --remove-port=5000/tcp
Проверить открытые порты для зоны
sudo firewall-cmd --permanent --zone=public --list-ports
Посмотреть все правила активной зоны
firewall-cmd --permanent --list-all --zone=public
Включить маскардинг
sudo firewall-cmd --permanent --zone=public --add-masquerade
Пробросить порт
firewall-cmd --permanent --zone=external --permanent --add-forward-port=port=10502:proto=tcp:toport=502:toaddr=192.168.1.30
Добавить интерфейс к зоне
firewall-cmd --permanent --zone=public --change-interface=eth0
firewall-cmd --permanent --zone=public --remove-interface=eth0
Проверить что systemctl разрешает переадресацию пакетов
ip_forward=1
Посмотреть отношение интерфейсов к зонам
firewall-cmd --get-active-zones
Нужно раскидать интерфейс тунеля и интерфейс локальной сети в разные зоны internal (eth0) и external (tun0). Пробрасываем порт в external зоне и включаем маскарадинг в обоих зонах
Отключить ICMP
sudo firewall-cmd --add-icmp-block-inversion
Когда target=default, то при попытке подключиться к запрещённому получаю ответ, что не могу. Так можно понять, что где-то блокирует файрвол. А если стоит режим DROP - то программа, которая пытается подключиться, допустим, ssh, будет долго ждать и просто не дождётся ответа
sudo firewall-cmd --set-target=DROP --permanent
Интерфейсы
Пинг через выбранный интерфейс
ping -I eth0 ya.ru
Узнать какой отвечает за интернет можно с помощью команды route
. Строка с маской 0.0.0.0 и есть выход в интернет. В правом столбце будет указано через какой интерфейс это пойдет. С помощью фильтров это можно сделать так:
route | grep '^default' | grep -o '[^ ]*$'
Изменить интерфейс по умолчанию
ip route change default via 192.168.0.1 dev usb0
Проверить доступность порта на удаленном хосте
nc -zvw3 172.31.161.140 41012
Подключение к Wifi
sudo nmtui-connect
KVM
Проверить поддерживает процессор аппаратное ускорение виртуализации от Intel-VT или AMD-V. 0 - не поддерживает, 1 или больше - ок.
egrep -c '(vmx|svm)' /proc/cpuinfo
Установить KVM
sudo apt install qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager
Systemd
На примере добавления python .py файла в качестве службы Linux Ubuntu 22.04
создаем конфигурационный файл службы
sudo nano /lib/systemd/system/nameservice.service
содержание файла
[Unit]
Description=Nameservice
[Service]
Type=idle
Restart=always
RestartSec=3
User=ea
ExecStart=/usr/bin/python3 /home/ea/Desktop/main.py
[Install]
WantedBy=multi-user.target
управление службой
sudo systemctl daemon-reload
sudo systemctl enable nameservice.service
sudo systemctl start nameservice.service
Диагностика системы
htop
atop
df -h
ncdu - позволяет вычислить забитое место на диск
sudo cfdisk - разделы дисков
Изменить MAC Mikrotik
/interface ethernet set mac-address=A4:BB:6D:6A:DD:CC ether1
172.31.165.215 KL000911
mac точказрения 74:56:3C:68:BA:5F