Конфигурация файла Acl в Mosquitto - PullRequest
0 голосов
/ 28 января 2020

У меня есть файл acl в моем комаре:

user b
topic read s1#
topic write s1#

topic write s2
topic read s2


pattern write s3_%c#
pattern read s3_%c#

pattern write s4_%c
pattern read s4_%c


pattern  write s5_%u#
pattern  read s5_%u#

pattern  write s6_%u
pattern  read s6_%u

Запрос ниже к topi c s4_abc от идентификатора клиента abc отлично работает:

mosquitto_pub -h servername -t s4_abc -m "test" -p 1883 -u b -P b -i abc -d

Запрос ниже to topi c s3_abcA с идентификатором клиента abc не удается:

mosquitto_pub -h servername -t s3_abcA -m "test" -p 1883 -u b -P b -i abc -d

Почему происходит сбой? Я ожидаю, что шаблон s3 _% c# означает любую фразу в topi c после того, как "s3_ab c" в порядке.

1 Ответ

0 голосов
/ 28 января 2020

Ваши темы и шаблоны в ACL-файле недействительны, им необходимо иметь / между символами подстановки.

Подстановочные знаки соответствуют только целым сегментам topi c.

То же самое относится и к %u и %c

со страницы руководства mosquitto.conf:

Шаблоны, доступные для подстановки:

% c для сопоставления идентификатора клиента клиента% u для сопоставления имени пользователя клиента. Шаблон подстановки должен быть единственным текстом для этого уровня иерархии . Списки ACL применяются ко всем пользователям, даже если ранее было задано ключевое слово "user".

Пример:

датчик записи шаблона /% u / data

Разрешить доступ для моста сообщения о соединении:

запись шаблона $ SYS / брокер / соединение /% c / состояние

...