LINUX.ORG.RU

Сообщения Novascriptum

 

MySQL привилегия CREATE USER

Форум — Admin

Не могу найти нигде в документации: почему-то при создании пользователя, которому даётся привилегия CREATE USER, такой пользователь получает «автоматически» право на просмотр списка всех баз данных на сервере. Ну то есть я создаю пользователя вот так:

CREATE USER 'user1'@'localhost' IDENTIFIED BY 'mypass1';
GRANT CREATE USER ON *.* TO `user1`@`localhost` WITH GRANT OPTION;

…и в этот момент он получает право видеть список всех БД. Это нормально? Можно ли вообще как-то выдать право пользователю создавать других пользователей, но при этом видеть базы данных только по какому-либо префиксу («user1_%» в моём случае)? При этом написать привилегию как-то так:

GRANT CREATE USER ON "user1_%".*

…не получается - типа это глобальная привилегия.

 

Novascriptum ()

opendkim (multiple users)

Форум — General

Всем доброго времени! Настраиваю почтовый сервер postfix в CentOS. В логах вижу такую ошибку:

myselector._domainkey.site.ru: key data is not secure: opendkim is in group 0 which has multiple users (e.g., "sync")

При этом файл с ключом принадлежит пользователю opendkim, группе opendkim. Далее смотрю:

id opendkim
uid=999(opendkim) gid=997(opendkim) groups=997(opendkim),12(mail)

Вроде всё корректно. Не могу понять тогда, откуда ошибка берётся.

 

Novascriptum ()

docker-compose build без контейнера

Форум — General

Всем привет! Возник тут вопрос при использовании docker-compose. Допустим, я взял за основу образ CentOS, доработал его чуток под себя (в рамках dockerfile). И создаю контейнер на основе этого образа. То есть у меня будет что-то вроде такого:

services:
  centos79:
    build:
      context: ~/win/centos-7.9
      dockerfile: Dockerfile
    image: local/centos-7.9:latest

  local-php-fpm-74:
    container_name: php74
    build:
      context: ~/win/php-fpm
      dockerfile: Dockerfile
    depends_on:
      - centos79

Мне это нужно, чтобы при запуске docker-compose up –build у меня собирались оба образа. При этом образ второго контейнера базируется на первом образе. Проблема в том, что контейнер-то мне нужен только один - второй (в данном примеер php-fpm), а вот первый нет. А при таком синтаксисе создаётся всегда два контейнера. Можно ли каким-то синтаксисом обозначить, что второй образ зависит от первого, поэтому при build’е нужно сначала собирать первый. А при запуске через up контейнер нужен только один. Не могу нигде найти.

 

Novascriptum ()

Ошибка iptables

Форум — General

Iptables при старте службы выводит следующую ошибку:

systemd[1]: Starting IPv4 firewall with iptables...
iptables.init[9875]: iptables: Applying firewall rules: iptables-restore v1.4.21: Port `0' not valid
iptables.init[9875]: Error occurred at line: 39
iptables.init[9875]: Try `iptables-restore -h' or 'iptables-restore --help' for more information.
iptables.init[9875]: [FAILED]
systemd[1]: iptables.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Failed to start IPv4 firewall with iptables.
systemd[1]: Unit iptables.service entered failed state.
systemd[1]: iptables.service failed.

Конфиг iptables выглядит следующим образом:

[root@bxenv1 tasks]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Sun Dec 27 18:58:31 2020
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:bx_public - [0:0]
:bx_trusted - [0:0]
-A INPUT -j bx_trusted
-A INPUT -j bx_public
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A bx_public -p tcp -m state --state NEW -m tcp --dport 8070 -m comment --comment "BX: requests for pool update" -j ACCEPT
-A bx_public -p tcp -m state --state NEW -m tcp --dport 80 -m comment --comment "BX: web ports" -j ACCEPT
-A bx_public -p tcp -m state --state NEW -m tcp --dport 443 -m comment --comment "BX: web ports" -j ACCEPT
-A bx_public -p tcp -m state --state NEW -m tcp --dport 8890 -m comment --comment "BX: web ports" -j ACCEPT
-A bx_public -p tcp -m state --state NEW -m tcp --dport 8891 -m comment --comment "BX: web ports" -j ACCEPT
-A bx_public -p tcp -m state --state NEW -m tcp --dport 8893 -m comment --comment "BX: web ports" -j ACCEPT
-A bx_public -p tcp -m state --state NEW -m tcp --dport 8894 -m comment --comment "BX: web ports" -j ACCEPT
-A bx_public -p tcp -m state --state NEW -m tcp --dport 5222 -m comment --comment "BX: web ports" -j ACCEPT
-A bx_public -p tcp -m state --state NEW -m tcp --dport 5223 -m comment --comment "BX: web ports" -j ACCEPT
-A bx_trusted -s 10.10.0.4/32 -p tcp -m tcp -m comment --comment "BX: server1" -j ACCEPT
-A bx_trusted -s 10.10.0.4/32 -p udp -m udp -m comment --comment "BX: server1" -j ACCEPT
COMMIT
# Completed on Sun Dec 27 18:58:31 2020
# Generated by iptables-save v1.4.21 on Sun Dec 27 18:58:31 2020
*nat
:PREROUTING ACCEPT [7:1225]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [1413:84840]
:POSTROUTING ACCEPT [2799:191448]
:DOCKER_OUTPUT - [0:0]
:DOCKER_POSTROUTING - [0:0]
-A OUTPUT -d 127.0.0.11/32 -j DOCKER_OUTPUT
-A POSTROUTING -d 127.0.0.11/32 -j DOCKER_POSTROUTING
-A DOCKER_OUTPUT -d 127.0.0.11/32 -p tcp -m tcp --dport 53 -j DNAT --to-destination 0.0.0.0:0 --random --persistent --to-destination 0.0.0.0:0 --random --persistent --to-destination 0.0.0.0 --random --persistent
-A DOCKER_OUTPUT -d 127.0.0.11/32 -p udp -m udp --dport 53 -j DNAT --to-destination 0.0.0.0:0 --random --persistent --to-destination 0.0.0.0:0 --random --persistent --to-destination 0.0.0.0 --random --persistent
-A DOCKER_POSTROUTING -s 127.0.0.11/32 -p tcp -m tcp --sport 36221 -j SNAT --to-source :53
-A DOCKER_POSTROUTING -s 127.0.0.11/32 -p udp -m udp --sport 60692 -j SNAT --to-source :53
COMMIT
# Completed on Sun Dec 27 18:58:31 2020

Сам с iptables знаком плохо, конфиг сгенерирован автоматически. В нём какая-то ошибка?

 ,

Novascriptum ()

Долгий страт midnight commander в терминале Linux Mind

Форум — Desktop

Всем привет! Столкнулся с любопытной проблемой: из-под обычного пользователя в терминале linux mint (cinnamon) долго запускается mc (секунд по 10-20). Однако если в командной строке написать «sudo mc» - то открывается моментально. Есть идеи, с чем это может быть связано?

 ,

Novascriptum ()

Vmware vs VirtualBox guest screen resolution

Форум — General

Всем привет! Недавно поднимал вопрос графической производительности в виртуалках на основе VirtualBox. Как оказалось, в vmware действительно с этим обстоят дела лучше (но не сказать, что сильно лучше), поэтому потихоньку тестирую vmware workstation и планирую перемещаться в него (в качестве хост-системы выступает win10). Установил в качестве guest Linux Mint. Теперь вот вожусь с разрешением экрана в Linux Mint. Выяснил, что это очень неудобно, если сравнивать с VirtualBox. Поясню на конкретном примере: У меня два монитора с разным разрешением (1920x1080 и 1680x1050). Я регулярно перетаскиваю окно с виртуалкой с монитора на монитор и включаю полноэкранный режим. На обоих мониторах в этом случае происходит автоподстройка разрешения в момент применения полноэкранного режима. Более того, при изначальном запуске виртуалки в полноэкранном режиме установится в ней именно то разрешение экрана, на котором она отображается (если можно так выразиться). А в vmware по умолчанию такого нет. Когда я запустил виртуалку и установил vmwaretool, разрешение осталось равным 800x600. Потом я пошёл в настройки монитора в guest-системе и ручками хотел выбрать то разрешение, которое соответствует экрану. К моему удивлению, его не оказалось (но есть, например, 1920x1200 и для 1680 точек не помню, сколько по вертикали, но не 1050). Погуглил, нашёл решение, чтобы добавить нужное мне разрешение:

cvt 1920 1080
xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
xrandr --addmode Virtual1 1920x1080_60.00
xrandr --output Virtual1 --mode 1920x1080_60.00

Но оно пропадает после ребута. Как я понял, там что-то с файлом xorg.conf и мне ещё предстоит с этим разобраться. Но даже если я это сделаю, это не решит проблему того, что у меня два экрана с разным разрешением. Если я перетаскиваю окно на другой монитор и там применяю полноэкранный режим, мне надо зайти в настройки монитора и сменить разрешение экрана. Это жутко неудобно. И, естественно, сразу возникает вопрос, почему в VirtualBox это работает из коробки и вообще, может, я чего-то неправильно стал делать, и в vmware оно тоже есть, но я типа где-то не там ищу. Вот, соответственно, и вопрос. Можно ли как-то автоматизировать автоподстройку разрешения экрана? И чтобы оно не сбрасывалось в случае ребута виртуалки на этом экране.

 , ,

Novascriptum ()

Проблемы графической производительности linux-guest из win10-host

Форум — General

Всем привет! В windows10 использую VirtualBox для виртуальных машин linux (тестировал centOS 8.1, centos 8.3, linuxmint). Во всех случаях наблюдается одна и та же проблема: если поставить в настройках вирт. машины флажок «Включить 3D-ускорение» https://www.screencast.com/t/TMnCpLCqZuF2, то внутри guest-системы резко падает графическая производительность. Внутри guest-linux, например, проверяю с помощью команды «glxgears»: 1) при использовании 3d-ускорения показывает 30 fps; 2) без использования - около 1500. Но и при 1500 в целом наблюдается неплавность при прокрутке страницы в браузере, например (похоже, что из-за низкого FPS). Примечательно, что точь-в-точь такую же проблему описывали вот тут: https://forums.virtualbox.org/viewtopic.php?f=6&t=97024

Железо у меня похожее: процессор amd ryzen 3600, графика radeon 5700xt.

Хотелось бы добиться хорошей графической производительности внутри guest-linux. Может есть у кого-нибудь предположения? Обновил уже и VirtualBox, и guest additions до последней на текущий день версии.

 , ,

Novascriptum ()

Не подключается сеть в CentOS 8

Форум — General

Всем привет! На виртуалке крутится CentOS 8. В один прекрасный момент перестало работать сетевое подключение:

Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7686] manager: NetworkManager state is now CONNECTED_LOCAL
Dec 23 00:35:57 localhost NetworkManager[1093]: <warn>  [1608665757.7692] device (enp0s8): Activation: failed for connection 'enp0s8'
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7694] device (enp0s8): state change: failed -> disconnected (reason 'none', sys-iface-state: 'managed')
Dec 23 00:35:57 localhost avahi-daemon[939]: Withdrawing address record for fe80::35a9:9586:c052:32f6 on enp0s8.
Dec 23 00:35:57 localhost avahi-daemon[939]: Leaving mDNS multicast group on interface enp0s8.IPv6 with address fe80::35a9:9586:c052:32f6.
Dec 23 00:35:57 localhost avahi-daemon[939]: Interface enp0s8.IPv6 no longer relevant for mDNS.
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7885] dhcp4 (enp0s8): canceled DHCP transaction, DHCP client pid 3391
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7885] dhcp4 (enp0s8): state changed timeout -> done
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7972] policy: auto-activating connection 'enp0s8' (ca4214f3-5437-4bfd-9cf5-329774052f77)
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7977] device (enp0s8): Activation: starting connection 'enp0s8' (ca4214f3-5437-4bfd-9cf5-329774052f77)
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7978] device (enp0s8): state change: disconnected -> prepare (reason 'none', sys-iface-state: 'managed')
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7980] manager: NetworkManager state is now CONNECTING
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.7982] device (enp0s8): state change: prepare -> config (reason 'none', sys-iface-state: 'managed')
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.8080] device (enp0s8): state change: config -> ip-config (reason 'none', sys-iface-state: 'managed')
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.8082] dhcp4 (enp0s8): activation: beginning transaction (timeout in 45 seconds)
Dec 23 00:35:57 localhost NetworkManager[1093]: <info>  [1608665757.8103] dhcp4 (enp0s8): dhclient started with pid 3422
Dec 23 00:35:57 localhost avahi-daemon[939]: Joining mDNS multicast group on interface enp0s8.IPv6 with address fe80::35a9:9586:c052:32f6.
Dec 23 00:35:57 localhost avahi-daemon[939]: New relevant interface enp0s8.IPv6 for mDNS.
Dec 23 00:35:57 localhost avahi-daemon[939]: Registering new address record for fe80::35a9:9586:c052:32f6 on enp0s8.*.
Dec 23 00:35:57 localhost dhclient[3422]: DHCPDISCOVER on enp0s8 to 255.255.255.255 port 67 interval 7 (xid=0xcc8b7061)
Dec 23 00:36:04 localhost dhclient[3422]: DHCPDISCOVER on enp0s8 to 255.255.255.255 port 67 interval 11 (xid=0xcc8b7061)
Dec 23 00:36:12 localhost systemd[1]: libvirtd.service: Succeeded.
Dec 23 00:36:15 localhost dhclient[3422]: DHCPDISCOVER on enp0s8 to 255.255.255.255 port 67 interval 9 (xid=0xcc8b7061)
Dec 23 00:36:24 localhost dhclient[3422]: DHCPDISCOVER on enp0s8 to 255.255.255.255 port 67 interval 14 (xid=0xcc8b7061)
Dec 23 00:36:38 localhost dhclient[3422]: DHCPDISCOVER on enp0s8 to 255.255.255.255 port 67 interval 7 (xid=0xcc8b7061)
Dec 23 00:36:42 localhost NetworkManager[1093]: <warn>  [1608665802.7622] dhcp4 (enp0s8): request timed out
Dec 23 00:36:42 localhost NetworkManager[1093]: <info>  [1608665802.7622] dhcp4 (enp0s8): state changed unknown -> timeout
Dec 23 00:36:42 localhost NetworkManager[1093]: <info>  [1608665802.7622] device (enp0s8): state change: ip-config -> failed (reason 'ip-config-unavailable', sys-iface-state: 'managed')

Используется dhcp, вот конфиг из network-scripts:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s8
UUID=ca4214f3-5437-4bfd-9cf5-329774052f77
ONBOOT=yes

# ip -br addr
lo               UNKNOWN        127.0.0.1/8 ::1/128 
enp0s8           UP             
virbr0           DOWN           192.168.122.1/24 
virbr0-nic       DOWN           

Смущает какой-то вот этот адаптер virbr0 (судя по названию, virtual bridge или что-то такое) и что у него адрес начинается на 192.168.122, а у меня локальная сеть 192.168.1.*

# ping 192.168.1.1
connect: Сеть недоступна

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

 ,

Novascriptum ()

Переключение раскладки по Ctrl+Shift, а не Shift+Ctrl

Форум — Desktop

Всем привет! Пытаюсь настроить переключение раскладки под себя в CentOS 8.3 + Gnome. Зашёл в «Доп. настройки Gnome»: Клавиатура и мышь / Дополнительные параметры раскладки / Переключение на другую раскладку / Ctrl + Shift.

Вроде всё ок, но переключается по нажатию на Shift + Ctrl, а не Ctrl + Shift, это дико раздражает. Причём раньше работала смена раскладки по Alt + Shift, когда я переткнул флажок напротив этого сочетания в том же окошке настроек, тоже стало применяться только по Shift + Alt, что за наваждение. :(

 localectl
   System Locale: LANG=ru_RU.UTF-8
       VC Keymap: ruwin_ct_sh-UTF-8
      X11 Layout: ru,us
     X11 Variant: ,
     X11 Options: grp:alt_shift_toggle,grp:lctrl_lshift_toggle,grp:rctrl_rshift_toggle
cat /etc/vconsole.conf
KEYMAP=ruwin_ct_sh-UTF-8
FONT=eurlatgr
localectl list-keymaps | grep ru
cz-rus
dvorak-ru
ge-ru
ng-yoruba
ru
ru-cp1251
ru-cv_latin
ru-ms
ru-yawerty
ru1
ru2
ru3
ru4
ru_win
ruwin_alt-CP1251
ruwin_alt-KOI8-R
ruwin_alt-UTF-8
ruwin_alt_sh-UTF-8
ruwin_cplk-CP1251
ruwin_cplk-KOI8-R
ruwin_cplk-UTF-8
ruwin_ct_sh-CP1251
ruwin_ct_sh-KOI8-R
ruwin_ct_sh-UTF-8
ruwin_ctrl-CP1251
ruwin_ctrl-KOI8-R
ruwin_ctrl-UTF-8
sunt5-ru

Помогите разобораться, пожалуйста, добрые люди.

 , ,

Novascriptum ()

HTTP_PROXY и php

Форум — General

Здравствуйте! Возникла необходимость глобально использовать прокси для всех внешних соединений из php. Php работает как модуль apache (есть также cli-режим, но он сейчас меньше интересует). Можно ли как-то глобально задать для php настройки прокси, чтобы он использовал их при всех внешних подключениях? Вроде file_get_contents и curl к внешним адресам. Пробовал задать переменные окружения http_proxy и https_proxy - конкретно php их не подхватывает в своих запросах. Есть ли какой-то иной способ?

 , ,

Novascriptum ()

npm: «no such file or directory»

Форум — Web-development

Всем привет! Начал изучать vue.js, пытаюсь создать проект через «vue create» и сразу словил ошибку: https://www.screencast.com/t/kmBzJfPso

Как я понимаю, какой-то пакет не может быть установлен по какой-то причине. Но, вроде ничего сверхъестественного я не устанавливаю, вот содержимое package.json:

{
  "name": "prj10",
  "version": "0.1.0",
  "private": true,
  "devDependencies": {
    "@vue/cli-plugin-babel": "~4.3.0",
    "@vue/cli-plugin-eslint": "~4.3.0",
    "@vue/cli-service": "~4.3.0"
  }
}

Пробовал без eslint - та же ерунда. Помогите, пожалуйста, разобраться. Тестирую в docker-контейнере на основе CentOS 7.7.1908

 ,

Novascriptum ()

Компоненты Laravel 7 & page title

Форум — Web-development

В blade Laravel 7 презентован новый синтаксис компонентов, когда внутри view стало возможным писать что-то вроде

<x-mycomponent param1="value" param2="value"/>

Всё круто, но возникает вопрос, на который нигде не могу найти ответ. А можно ли как-то изнутри компонента задать значение переменной в родительском view (в котором прописан тег компонента)? Ну то есть это то, что возможно делать с помощью @yield и @extends.

Поясню. Пусть, например, есть файл layout.blade.php:

<html>
<head>
   <title>@yield('title')</title>
</head>
<body>
    <x-mycomponent param1="value" param2="value"/>
</body>
</html>

И, собственно, шаблон подключаемого компонента:

@section('title', 'Заголовок страницы');

<div>
А здесь какой-то контент компонента
</div>

Я ожидаю, что title будет установлен компонентом, как если бы он наследовал layout через @extends. Но этого не происходит. Как-то можно сделать это с использованием нового синтаксиса компонентов Laravel 7? А то если нет, то это весьма существенное ограничение его использования.

 ,

Novascriptum ()

PHP: Imagick & pcntl_fork

Форум — Development

Всех приветствую! Пишу многопоточный скрипт на php, который анализирует изображения. Он создаёт ресурс изображения (в моём случае это Imagick), потом делится с помощью pcntl_fork(), потом вызывает на этом ресурсе какой-нибудь фильтр (например, despeckle). Так вот странно то, что если используется работа в один поток, то время применения фильтра около 0.14 сек, а на двух потоках - уже 1.14 (внутри каждого). На трёх уже больше 2.5 сек. Не могу понять, что происходит, за какие ресурсы между потоками может происходить конкуренция? Вроде у каждого процесса своя память (общей памяти между процессами в php нет, shmop не в счёт). Диск тоже не задействуется (изображение уже прочитано в память). Видеокарта простаивает. Какие-то взаимные блокировки?

Вот кусок кода для ориентировки:

$sketchFile = '/path/to/file.jpg';

$tmpMagick = new \Imagick();
$tmpMagick->setResolution(300, 300);
$tmpMagick->readImage($sketchFile);

$threads = 3;

$workerPids = array();

for($i = 1; $i < $threads; $i++){ 
    $pid = pcntl_fork();
    if($pid == -1){
        throw new \Exception('Couldn\'t fork()!');
    }elseif($pid > 0){
        //parent
        $workerPids[] = $pid;
    }else{
        //child
        break;
    }
}

$start = microtime(true);
$tmpMagick->despeckleImage();
$duration = round(microtime(true) - $start, 4);
fwrite(\STDERR, 'time: '.$duration.' sec'."\n");

Нелогичность применения одного и того же фильтра в разных потоках на ресурсе одного и того же изображения прошу не озвучивать. :) Это может быть оправдано при нескольких страницах изображений внутри одного Imagick, где каждый поток выполняет фильтр к своей странице. Просто случайно столкнулся вот с такими «тормозами» и не могу понять, откуда у них ноги растут. Буду признателен за любые предположения!

P.S.: физических ядер у меня шесть, если что. Это к тому, что не за процессор идёт конкуренция.

 ,

Novascriptum ()

Передать STDOUT параллельно на два процесса

Форум — General

Всем привет! Хочу, выстроить примерно такую команду:

php parent.php | ( php child.php & php child.php; )

При этом нужно, чтобы standard output, генерируемый parent.php, уходил в оба child.php (одинаковый). И чтобы эти child.php работали параллельно. Пробовал и фигурные скобки писать, и разные комбинации & и ;. Всегда сталкиваюсь с тем, что либо процессы child.php работают последовательно (один после другого), либо standart output из parent.php приходит только в один из них.

То, что я хочу, вообще возможно составить?

 ,

Novascriptum ()

Автозагрузка firewalld ломает DNS (CentOS 7)

Форум — General

Всем здравствуйте! Данный топик является логическим продолжением вот этого Проблема с DNS в docker-контейнере (комментарий), но так как проблему удалось локализовать и конкретизировать, решил оформить её отдельно. В общем, имеется CentOS 7 в докер-контейнере. После того, как добавляю firewalld в автозагрузку:

[root@docker /]# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.

...после ребута прекращает работать преобразование доменных имён в IP (DNS):

[root@docker /]# ping ya.ru
ping: ya.ru: Name or service not known

Стоит отключить автозагрузку и снова ребутнуться, как DNS начинают работать вновь:

[root@docker /]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

[root@docker /]# reboot

[root@docker /]# ping ya.ru
PING ya.ru (87.250.250.242) 56(84) bytes of data.
64 bytes from ya.ru (87.250.250.242): icmp_seq=1 ttl=58 time=15.8 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=2 ttl=58 time=15.8 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=3 ttl=58 time=16.0 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=4 ttl=58 time=16.2 ms

Сам по себе факт запуска firewalld работе DNS не мешает. То есть если в запущенной системе выполнить «systemctl start fiewalld», то firewalld корректно запускается, DNS работает. Проблема где-то в самой автозагрузке, как будто возникает какой-то конфликт и что-то, что связано с DNS, не запускается. Вот содержимое файла службы, на который делаются симв. ссылки при автозагрузке:

[root@docker /]# cat /usr/lib/systemd/system/firewalld.service
[Unit]
Description=firewalld - dynamic firewall daemon
Before=network-pre.target
Wants=network-pre.target
After=dbus.service
After=polkit.service
Conflicts=iptables.service ip6tables.service ebtables.service ipset.service
Documentation=man:firewalld(1)

[Service]
EnvironmentFile=-/etc/sysconfig/firewalld
ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS
ExecReload=/bin/kill -HUP $MAINPID
# supress to log debug and error output also to /var/log/messages
StandardOutput=null
StandardError=null
Type=dbus
BusName=org.fedoraproject.FirewallD1
KillMode=mixed

[Install]
WantedBy=multi-user.target
Alias=dbus-org.fedoraproject.FirewallD1.service

Может, достаточно порядок загрузки firewalld изменить, в конец его как-нибудь переместить? После чего тогда лучше поставить? Уже не знаю, что думать.

 , ,

Novascriptum ()

Проблема с DNS в docker-контейнере

Форум — General

Всем здравствуйте!

Ситуация следующая: есть хост-система (CentOS 7.6), в которой установлен докер. И (среди прочего) есть контейнер, в котором установлен CentOS из вот этого образа https://hub.docker.com/_/centos/ Причём немного «допилен» для поддержки systemd (на той же странице в hub.docker.com есть инструкция под заголовком «Dockerfile for systemd base image»).

Контейнер запускается в приватной сети с примерно вот такими параметрами:

docker run -dit --name="env4" --restart always --privileged --net mynetwork -p 22004:22 --expose 80 --expose 443 local/centos-systemd:my_tag

В «чистом» контейнере в плане DNS всё хорошо работает, можно пропинговать любой сайт по доменному имени.

Дальше я произвожу запуск определённого bash-скрипта (в контейнере), который написан не мной и который устанавливает веб-окружение и кучу-кучу всего (nginx, httpd, mysql, nodejs и мн.мн.др.) Так вот после его установки перестают ресолвиться доменные имена. При этом пинг по IP-адресам проходит:

root# ping ya.ru
ping: ya.ru: Name or service not known
root# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=46 time=4.62 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=46 time=4.67 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=46 time=4.65 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=46 time=4.68 ms

Содержимое файла /etc/resolv.conf до и после установки скрипта одинаковое:

root# cat /etc/resolv.conf
nameserver 127.0.0.11
options ndots:0

Если прописать в этот файл ручками гугловские DNS-серверы (8.8.8.8 и 8.8.4.4), то всё начинает работать (имена ресолвятся), но вариант не подходит из-за того, что тогда теряются алиасы локальных IP-адресов, которые есть в приватной сети docker. Ну и плюс при каждом рестарте контейнера этот файл переписывается на то содержимое, которое я привёл.

Такое ощущение, что этот скрипт ставит какую-то свою службу разрешения доменных имён, которая работает криво. Посмотрел лог установки, по слову «DNS» нашёл следующее:

---> Package perl-Net-DNS.x86_64 0:0.72-6.el7 will be installed
Может, это как-то влияет.

Есть ли идеи, куда копать, чтобы в контейнере доменные имена начали ресолвиться?

 

Novascriptum ()

nginx для передачи запроса без дешифровки (ssl)

Форум — General

Всем здравствуйте! Возникла следующая задача: есть nginx, на который приходит https-запрос по 443 порту. Нужно передать его на другой сервер «как есть» без проверки сертификата (она будет выполняться дальше). Задача этого nginx - распределять запросы по разным серверам. Проверять SSL он не должен.

server {
        listen 443;
        server_name my.server.name; #тут имя нужного мне домена

        proxy_ssl_verify off;
        location / {
        	proxy_pass         https://172.17.0.2;
        }
}

Но nginx выдаёт непонятную ошибку в Access log (в hex-виде, поэтому не могу прочитать). Подозреваю, там что-то про то, что не удалось установить безопасное соединение с сервером (хотя могу ошибаться).

Можно ли как-то это реализовать?

 

Novascriptum ()

PHP: чтение программного канала №3

Форум — Web-development

Всем доброго времени. Использую proc_open для запуска своего php-скрипта:

$cmd = 'php -d mbstring.func_overload=0 "/path/to/script.php';
$procId = proc_open($cmd, array(3 => array('pipe', 'r')), $pipes);
$paramStreamId = $pipes[3];
fwrite($paramStreamId, "Line1\r\n");
fwrite($paramStreamId, "Line2\r\n");
fclose($paramStreamId);
proc_close($procId);

Вроде использовать №3 можно, так как в документации сказано:

Номера дескрипторов не ограничены только 0, 1 и 2 - вы можете назначить любой действительный номер дескриптора и он будет передан дочернему процессу.

Теперь вопрос, как в запускаемом таким образом скрипте обратиться к каналу №3 (в который передаются Line1 и Line2). Стандартный ввод (канал №0) мне не подходит, потому что туда будут идти данные, а в канал №3 хочу передавать служебные параметры (вроде паролей), которые нужны для работы скрипта.

Пробовал вот так:

$streamId = fopen('php://3', 'r');
...но это приводит к ошибке. Есть ли какой-нибудь способ прочитать этот канал?

 , ,

Novascriptum ()

mysqldump при отсутствии дискового пространства

Форум — Development

Здравствуйте! Возник вопрос насчёт выполнения mysqldump в потоковом режиме без записи на диск (через пайпы). Делается дамп и тут же отправляется по FTP. Теоретически он должен выполняться даже в случае, когда закончилось дисковое пространство полностью (но только если сервер остался работоспособен, конечно же). Но возник вопрос насчёт некоторых аргументов:
--single-transaction
--lock-tables

Первый из них позволяет (насколько я понял) применить механизм транзакций InnoDB, чтобы получить согласованные данные. А второй рассчитан на нетранзакционные таблицы, выполняя их блокировку на момент дампа. Но ведь данные о транзакциях/блокировках пишутся на диск? Выполнится ли вообще mysqldump с одной из таких опций при отсутствии свободного места вообще? Заранее спасибо за ответ!

 ,

Novascriptum ()

openssl aes-256-cbc & windows gui

Форум — General

Всем доброго времени! Делаю в CentOS бэкапы, которые шифруются командой:

{какие-то действия по подготовке архива} | openssl enc -e -aes-256-cbc -k {mypass} > file.tar.gz.aes

Эти архивы вполне корректно дешифруются той же командой с ключом -d. Возникла задача найти прогу под windows, которая позволяла бы дешифровать эти файлы. Перепробовал кучу из них, вот некоторые: AES Crypt, AES Crypter LITE 2014 1.2.346, TNTCrypter 2.0.0.0 (понравился больше всех). Везде одно и то же - итоговый файл получается битым. TNTCrypter понравился больше всего, там много настроек. И выбираю-то как раз те, которые соответствуют параметрам созданного архива: AES, 256 бит, режим CBC, пароль 100% верный - http://i.imgur.com/ieyvIKI.png. Соль и вектор, вроде, пустые в моём случае. И, тем не менее, дешифровка выдаёт битый файл, как будто пароль неверный.

Кто-нибудь может подсказать, из-за чего такое вообще возможно? У кого-то, может, получалось создать aes-шифрованный файл, совместимый с какими-то из программ под windows? Заранее спасибо!

 , ,

Novascriptum ()

RSS подписка на новые темы