0.00
0 читателей, 25 топиков

Краткие заметки для чайника в линуксах )

MySQL
wget repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server
systemctl start mysqld

netstat, ifconfig, route и другие:
yum install net-tools

Установить пакет из локального rpm-файла
yum install VirtualBox-4.3-4.3.20_96996_el6-1.x86_64.rpm

selinux
Посмотреть текущее состояние:
getenforce
Выключить (до ребута):
setenforce 0
Включить (до ребута):
setenforce 1
Выключить совсем:
файл /etc/selinux/config (/etc/sysconfig/selinux):
SELINUX=disabled
# enforcing — запрещать
# permissive — выводить предупреждения
# disabled — отключить
reboot



Информация о пакете:
yum info jwhois



call-up utility — cu (com-port):
yum install uucp
cu -l /dev/ttyS



host nslookup dig
yum install bind-utils



mount ufs (freebsd)
mount -t ufs -o ufstype=ufs2,ro /dev/sdXY /path/to/mnt/point
www.cyberciti.biz/faq/howto-linux-mount-freebsd-ufs2-filesystem/



vlan dot1q
Проверить загружен ли модуль:
lsmod | grep 8021q
Загрузить модуль:
modprobe 8021q
Пример настройки:
файл /etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes

файл /etc/sysconfig/network-scripts/ifcfg-eth0.192:
DEVICE=eth0.192
PHYSDEV=eth0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.10
NETMASK=255.255.255.0
USERCTL=no
NETWORK=192.168.1.0
VLAN=yes
GATEWAY=192.168.1.1

service network restart

access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-networkscripts-interfaces_802.1q-vlan-tagging.html



ДНС-серверы (вместо /etc/resolv.conf)
файл /etc/sysconfig/network-scripts/ifcfg-eth0
PEERDNS=yes
DNS1=192.168.0.1
DNS2=192.168.0.2
DOMAIN=domain.tld



iostat
yum install sysstat



Все открытые TCP-сокеты (sockets)
ss -t -a



Подмонтировать имидж с NTFS как диск:
mount -t ntfs -o loop /data-b/win-hosting/win.img /mnt/win



Перемонтировать корневой раздел на запись:
mount -o remount /dev/mapper/centos-root /

CentOS: Переустановка загрузчика (GRUB)

Взято отсюда, на себе не проверял пока )

Переустановка загрузчика (GRUB)

Выполните следующие шаги.

Шаг 1: Загрузка CentOS с инсталляционного диска (например #1 CD или DVD).

Шаг 2: Выбрать «linux rescue» в поле меню «boot».

Шаг 3: Смонтировать все файловые системы в режиме чтения-записи.

Шаг 4: Заменить корень на реальный корень ("/") на жестком диске.

# chroot /mnt/sysimage

Шаг 5: Переустановка загрузчика (GRUB).

Если вы переустанавливаете GRUB в MBR на диск SCSI или SATA (/dev/sda).

# grub-install /dev/sda

Если вы переустанавливаете GRUB в PBR в раздел #2 на диск SCSI или SATA (/dev/sda2)

# grub-install /dev/sda2

Если вы переустанавливаете GRUB в MBR на IDE диск (/dev/hda).

# grub-install /dev/hda

Если вы переустанавливаете GRUB в MBR на диск HP Smart Array (/dev/c0d0).

# grub-install /dev/cciss/c0d0

Утилита управления сетевыми настройками ip

Странно как-то в Линуксе организовано управление сетевыми настройками — какие-то дополнительные утилиты, которые делают то, что во ФриБСД делается уже существующими утилитами. В частности утилита ip, которая частично дублирует функции утилит ifconfig, route и ещё бог весть каких. При этом утилитой ifconfig можно назначить айпишник, а удалить уже не получается.

Несколько примеров применения утилиты ip:

ip addr show dev eth1
ip addr add 10.1.1.224/26 dev eth1 (второй адрес добавляется также)
ip addr del 10.1.1.224/26 dev eth1

Добавить IPv6-адрес на интерфейс, можно как второй для уже существующего IPv4-адреса:
ip addr add 2001:0db8::21d:fff:febe:afec/64 dev eth0.10
ip addr del 2001:0db8::21d:fff:febe:afec/64 dev eth0.10

ip link show dev eth1
ip link set up dev eth1
ip link set down dev eth1

Добавить ВЛАН-интерфейс:
ip link add dev eth1.10 link eth1 type vlan id 10
Удалить интерфейс:
ip link del dev eth1.10

ip route show
Показать маршрут по-умолчанию по слову default или маршруту 0.0.0.0 утилита отказалась — показала всю таблицу, надо вот так:
ip route show 0/0
ip -6 route show ::/0

Показать точный маршрут к хосту (если есть маршрут на подсеть, в которую входит указанный хост, то он не учитывается):
ip route show 10.2.2.1
ip route show to exact 10.2.2.1
ip -6 route show 2001:db8::/64

Показать подходящий маршрут к хосту, например, если есть маршрут на соответствующую подсеть:
ip route show to match 10.2.2.1

ip route add 10.2.2.0/24 via 10.1.1.1
ip route add to 10.2.2.0/24 via 10.1.1.1

ip route delete 10.2.2.1
ip route delete 10.2.2.0/24

Удалить маршрут по-умолчанию и добавить его:
ip route delete default
ip route add default via 10.1.1.1

Работа с репозиториями

Список подключенных репозиториев:
yum repolist

yum install epel-release

Добавить репозитории (для CentOS 6.6):
rpm -ihv http://mirror.yandex.ru/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6.rpm

rpm -ihv http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm


Ищем нужные пакеты в указанном репозитории:
yum --enablerepo=remi list mysql mysql-server
Устанавливаем пакеты из указанного репозитория:
yum --enablerepo=remi install mysql mysql-server
Обновляем пакеты из указанного репозитория:
yum --enablerepo=remi update mysql mysql-server
Какой пакет содержит указанную библиотеку:
yum provides libasound.so.2

Репозиторий Nux Dextop

rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro


On CentOS/RHEL 6.*:
rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm


On CentOS/RHEL 7:
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm

CentOS 8: sftp chroot для пользователя

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

В файле /etc/ssh/sshd_config прописываем нужные настройки для группы, в которую включен нужный пользователь:
Match Group rock
        ChrootDirectory /data/%u
        ForceCommand internal-sftp


Мне кажется, вместо конструкции "/data/%u" можно указать просто "~", но я решил использовать более явную.

А также включаем внутренний sftp:
Subsystem       sftp    internal-sftp


Однако, тут есть подводный камень. Чтобы sshd мог сделать chroot папка пользователя должна принадлежать root-у и права на запись ни у кого другого быть не должно, т.е. установить на папку право на запись для группы не получится. Это приводит к тому, что пользователь не может ничего записать в свою папку и остаётся писать во вложенную папку, которую, к тому же, он не может создать. Для данной моей задачи всё это не критично, так что пойдёт.

Ну и попутно можно настроить вход по публичному ключу. А если с какой машинки публичный ключ типа dss (вроде бы устаревший алгоритм), а демон ругается на него примерно вот так:
sshd[8456]: userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes [preauth]


то надо добавить в конфиг sshd вот такой параметр:
PubkeyAcceptedKeyTypes=+ssh-dss

В CentOS 8 нет ntpdate?!

Пипец, в CentOS 8 теперь нельзя установить ntpdate, чтобы синхронизировать время с NTP-серверов. Теперь, блин, надо, видите ли, запускать новый демон чтобы просто синхронизировать время.
А как без ntpdate проверить работает ли какой-либо NTP-сервер вообще непонятно. Это я чтоли должен настроить полноценную синхронизацию и ждать сообщения в логах? А мне, блин, не надо синхронизироваться, мне надо просто посмотреть отвечает ли сервер и прям в данный момент интерактивно!
Кроме матов больше слов нет…

Настройка NTP-клиента на CentOS 8.

Посмотреть настройки времени:
timedatectl

Задать часовой пояс:
timedatectl set-timezone Asia/Bishkek

В конфиге нового демона убрать строку с ненужными серверами и указать нужные серверы — источники времени:
#pool 2.centos.pool.ntp.org iburst
server ntp1.domain.tld.
server ntp2.domain.tld.

Запустить новый демон:
systemctl start chronyd

Включить синхронизацию времени:
timedatectl set-ntp true

Подождать какое-то время пока не обновится время в системе или смотреть за логами и ждать появится ли там запись о подстройке времени.

Время в BIOS

На одном из серверов была проблема: после ребута время устанавливалось на час вперёд. После синхронизации по NTP время исправлялось.
Временная зона правильная. Вероятно неправильное время указано в BIOS, но проверить всё не получалось — думал для этого надо перегружать сервер. Но оказалось, что можно проверить и исправить время в BIOS прямо из операционной системы.

Посмотрел время в BIOS и убедился, что время на час вперёд:
#hwclock
Wed 13 Nov 2019 07:49:18 PM +06 -0.250483 seconds

Поменял время:
#hwclock --set --date «Wed 13 Nov 2019 06:54 PM»

Проверил — всё нормально теперь:
#hwclock
Wed 13 Nov 2019 06:54:03 PM +06 -0.130003 seconds

Все команды, в том числе для просмотра, должны выполняться от пользователя root.

Работа с разделом swap

Решил перенести раздел swap на другой диск, т.е. надо создать раздел на другом диске, подключить его и отключить старый.

Второй диск пустой. Создаю на нём новый раздел размером 6GB и меняю его тип:
fdisk -l /dev/sdc
Command (m for help): p
Select (default p): p
Partition number (1-4, default 1): [Enter]
First sector (2048-1953525167, default 2048): [Enter]
Last sector, +sectors or +size{K,M,G} (2048-1953525167, default 1953525167): +6G
Command (m for help): t
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'
Command (m for help): w


Если fdisk выводит сообщение о необходимости перечитать таблицу разделов диска.

Можно попробовать вот эту команду:
partprobe /dev/sdc

Если она нормально не завершилась, то придётся перезагрузить компьютер. Иначе раздел нормально не создаётся, например, у меня получался раздел примерно в 500МБ, вместо 6ГБ.

Форматируем раздел:
mkswap /dev/sdc1
mkswap: /dev/sdc1: warning: wiping old ext4 signature.
Setting up swapspace version 1, size = 511996 KiB
no label, UUID=4c96302a-37bd-49d2-b352-7b6d09e60123


Подключаем раздел:
swapon -U 4c96302a-37bd-49d2-b352-7b6d09e60123


Проверяем:
swapon -s
Filename                                Type            Size    Used    Priority
/dev/md126                              partition       6153212 9200    -2
/dev/sdc1                               partition       6291452  0       -2


Отключаем старый swap (UID есть в /etc/fstab):
swapoff -U 7de94a8a-9fe1-4112-b09c-ee79f1eea123


Ну и понятно, что надо внести изменения в /etc/fstab — старый комментируем, новый добавляем:
#UUID=7de94a8a-9fe1-4112-b09c-ee79f1eea123 swap    swap    defaults                            0 0
# swap on sdc (sdc1):
UUID=4c96302a-37bd-49d2-b352-7b6d09e60123 swap    swap    defaults                            0 0

Policy-routing на CentOS

Довольно распространённая ситуация — на моёй рабочей станции есть два интерфейса и два айпишника, скажем из подсети А и подсети Б. При обращении клиента с хоста из сети Б к моему айпишнику из подсети А ответ к нему уходит через другой интерфейс с моего айпишника из подсети Б, т.к. он из той же подсети, что и адрес клиента. Мне надо сделать, чтобы эти ответы уходили с того же адреса на который пришли.

Тут нужен policy-routing — маршрутизация на основе определённых правил. Логика получается такая: ответы на запросы из подсети Б к моему адресу из подсети А отправлять с адреса из подсети А (т.е. на шлюз подсети А).

Маркируем соединения из сети Б к нашему адресу из сети А при помощи iptables и таблицу mangle (используется для изменения пакетов):
iptables -t mangle -I INPUT -i eth0 -s 10.1.100.0/24 -d 10.2.96.3 -j CONNMARK --set-mark 1
А на выходе копируем маркировку соединения в маркировку пакетов, насколько я понимаю, это означает, что мы маркируем пакеты промаркированных ранее соединений:
iptables -t mangle -I OUTPUT -s 10.2.96.3 -d 10.1.100.0/24 -j CONNMARK --restore-mark
Вероятно, в этом правиле можно обойтись и без указания адресов источника и адресата, но мне кажется так будет правильнее, более точно чтоли )

В таблицу маршрутизации 111 добавляем маршрут для сети Б, но на шлюз из подсети А:
ip route add to 10.1.100.0/24 via 10.2.96.1 dev eth0 table 111
И, наконец, добавляем правило для перенаправления пакетов с нашей маркировкой в отдельную таблицу маршрутизации:
ip rule add fwmark 1 lookup 111

Для удобства можно назначить название для таблицы в файле /etc/iproute2/rt_tables, которое можно будет использовать вместо номера.

Так же нужно проверить не включена ли проверка обратного пути (reverse path checking):
sysctl net.ipv4.conf.eth0.rp_filter
Если включена, то система будет проверять пакеты на соответствие источника интерфейсу, с которого пакет получен. Например, если пакет пришёл с адреса, который виден через другой интерфейс (а не тот, с которого пакет пришёл), то значит этот пакет надо отбросить.

Если всё заработало как надо, то сохраняем правила iptables в файл "/etc/sysconfig/iptables", а правила для маршрутизации в файл "/etc/sysconfig/network-scripts/route-eth0".

Далее несколько вспомогательных команд, которые могут пригодиться.

Посмотреть определённую таблицу маршрутизации:
ip route show table 111
Удалить маршрут из указанной таблицы
ip route del table 111 to 10.1.100.0/24
Посмотреть правила маршрутизации:
ip rule show
Удалить правило маршрутизации:
ip rule del fwmark 1

Как посмотреть правила iptables писать не буду )

CentOS: статистика

В папке /proc можно найти много всякой полезной статистики, например:
/proc/meminfo — статистика по памяти;
/proc/diskstats — статистика по дискам;
/proc/net/dev — счётчики трафика на сетевых картах;

А ещё есть данные в папке /sys/class, например счётчики трафика на отдельных сетевых картах:
/sys/class/net/eth0/statistics/rx_bytes
/sys/class/net/eth0/statistics/tx_bytes
/sys/class/net/eth0/statistics/rx_packets
/sys/class/net/eth0/statistics/tx_packets

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