Форум русскоязычного сообщества Ubuntu


Автор Тема: Не полностью срабатывает правило udev  (Прочитано 294 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн nchizhov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Ubuntu Server 18.04

Есть правило udev:
ACTION=="add", KERNEL=="sd[a-z][0-9]", SUBSYSTEM=="block", SUBSYSTEMS=="usb", RUN+="/opt/dw/scripts/connect.sh %k %E{ID_SERIAL_SHORT} %E{ID_FS_TYPE}"
Скрипт connect.sh:
#!/bin/bash
echo "$1:$2:$3" > /opt/dw/scripts/log.txt
echo -e -n "connect:$1:$2:$3" > /dev/tcp/127.0.0.1/35000

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

Есть у кого какие идеи?

Аналогичный вариант в Fedora отрабатывает нормально.

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 1976
    • Просмотр профиля
Re: Не полностью срабатывает правило udev
« Ответ #1 : 11 Январь 2019, 00:54:27 »
Добавь после первой строки скрипта (шабанга) следующий код:
exec 2>/здесь_полный/_путь_до_/логаи после срабатывания правила посмотри что будет в логе.

Оффлайн nchizhov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Не полностью срабатывает правило udev
« Ответ #2 : 11 Январь 2019, 09:32:10 »
Добавь после первой строки скрипта (шабанга) следующий код:
exec 2>/здесь_полный/_путь_до_/логаи после срабатывания правила посмотри что будет в логе.

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

/opt/dw/scripts/connect.sh: connect: Connection timed out
/opt/dw/scripts/connect.sh: line 4: /dev/tcp/127.0.0.1/35000: Connection timed out

Если вручную запустить, то таймаута нет. Такое ощущение, что ubuntu блокирует доступ к сокетам, если скрипт запускается из udev.

P.S. SELinux отключен

Оффлайн Dzhoser

  • Активист
  • *
  • Сообщений: 844
    • Просмотр профиля
Re: Не полностью срабатывает правило udev
« Ответ #3 : 11 Январь 2019, 09:46:06 »
А а apparmor?

Оффлайн nchizhov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Не полностью срабатывает правило udev
« Ответ #4 : 11 Январь 2019, 09:55:33 »

Оффлайн Dzhoser

  • Активист
  • *
  • Сообщений: 844
    • Просмотр профиля
Re: Не полностью срабатывает правило udev
« Ответ #5 : 11 Январь 2019, 10:43:45 »
/opt/dw/scripts/connect.sh: line 4: /dev/tcp/127.0.0.1/35000: Connection timed out
А с какими правами демон запускается из udev?

Пользователь добавил сообщение 11 Январь 2019, 10:44:45:
Попробуйте скрипт от root запустить

Оффлайн nchizhov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Не полностью срабатывает правило udev
« Ответ #6 : 11 Январь 2019, 10:51:20 »
А с какими правами демон запускается из udev?

Вставлял в лог, чтобы отображал ещё и uid - пишет 0, т.е. под рутом
А с какими правами демон запускается из udev?
Пользователь добавил сообщение Сегодня в 10:44:45:
Попробуйте скрипт от root запустить

Пробовал в скрипт вставлять получение uid в лог, пишет 0, т.е. root

Скрипт от рута отрабатывает нормально.

Оффлайн Dzhoser

  • Активист
  • *
  • Сообщений: 844
    • Просмотр профиля
Re: Не полностью срабатывает правило udev
« Ответ #7 : 11 Январь 2019, 11:11:22 »
Проблема в правах как скрипт запускается?

Оффлайн nchizhov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Не полностью срабатывает правило udev
« Ответ #8 : 11 Январь 2019, 11:19:35 »
Проблема в правах как скрипт запускается?

Я думаю, если были бы проблемы с правами самого скрипта, то скрипт не пытался бы вообще отрабатывать.


Оффлайн БТР

  • Заслуженный пользователь
  • Модератор форума
  • Старожил
  • *
  • Сообщений: 5157
    • Просмотр профиля
Re: Не полностью срабатывает правило udev
« Ответ #9 : 11 Январь 2019, 13:06:31 »
Добавил в самый конец скрипта

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

Оффлайн nchizhov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Не полностью срабатывает правило udev
« Ответ #10 : 11 Январь 2019, 13:08:28 »
внимательно прочти, что нужно сделать:

Если добавляю в самое начало, то в логе получаю пустоту

Оффлайн БТР

  • Заслуженный пользователь
  • Модератор форума
  • Старожил
  • *
  • Сообщений: 5157
    • Просмотр профиля
Re: Не полностью срабатывает правило udev
« Ответ #11 : 11 Январь 2019, 13:11:48 »
nchizhov, права на запись в лог есть? где он создаётся?

Оффлайн nchizhov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Не полностью срабатывает правило udev
« Ответ #12 : 11 Январь 2019, 13:13:53 »
Да есть
Если не было бы, то следующая строка из скрипта в другой файл лога, в этой же папке не писалась бы

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 1976
    • Просмотр профиля
Re: Не полностью срабатывает правило udev
« Ответ #13 : 11 Январь 2019, 23:44:26 »
nchizhov,
Если не хотите выполнить пару элементарных действий так как Вам написано, то решайте вашу проблему сами.
При exec в конце скрипта, в файл лога ничего не запишется.

Оффлайн nchizhov

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Не полностью срабатывает правило udev
« Ответ #14 : 12 Январь 2019, 08:48:04 »
Проблема была совсем в другом.

Надо было закомментировать в файле systemd-udevd.service строки:
RestrictAddressFamilies=AF_UNIX AF_NETLINK AF_INET AF_INET6
IPAddressDeny=any

Всем спасибо, кто пытался помочь.

 

Страница сгенерирована за 0.068 секунд. Запросов: 24.