Удаляется пользователь после перезагрузки роутера

Обсуждаем OpenSource прошивки.
melandr
Сообщения: 2
Зарегистрирован: 05 фев 2020, 14:07

Сообщение melandr » 05 фев 2020, 14:22

Добрый день! Не подскажите по одному вопросу. Имею роутер ASUS RT-AC66U B1. Установил USB-флешку и на ней развернул репозиторий Entware. Установил пакет mosquitto . Выдает при вводе команды mosquitto в консоли

Код: Выделить всё

:/tmp/home/root# mosquitto
1580677707: mosquitto version 1.6.8 starting
1580677707: Using default config.
1580677707: Opening ipv4 listen socket on port 1883.
1580677707: Opening ipv6 listen socket on port 1883.
1580677707: Error: Invalid user 'mosquitto'.


Добавил скрипт автозапуска mosquitto.
/opt/etc/init.d/S50mosquitto

Код: Выделить всё

#!/bin/sh

ENABLED=yes
PROCS=mosquitto
ARGS="-c /opt/etc/mosquitto/mosquitto.conf"
PREARGS=""
DESC=$PROCS
PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

. /opt/etc/init.d/rc.func

3.png

Правда пока автозапуск не работает. Но не по причине неправильного скрипта, а мне так кажется,по причине отсутствия пользователя mosquitto при перезагрузке роутера, а под пользователем admin mosquitto стартовать не хочет. При указании в конфиге брокера пользователя mosquito брокер не запускается. При добавлении вручную пользователя через команду adduser брокер запускается. Все работает. Но после перезагрузки роутера данный пользователь удаляется из файла /opt/etc/passwd и брокер не запускается. При этом пользователи
admin:x:0:0:admin:/root:/bin/sh
nas:x:100:100:nas:/dev/null:/dev/null
nobody:x:65534:65534:nobody:/dev/null:/dev/null
остаются в файле. Подскажите, как можно добавить пользователя mosquitto, чтобы он сохранялся после перезагрузки роутера?
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1912
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 05 фев 2020, 14:29

melandr писал(а):Источник цитаты Но после перезагрузки роутера данный пользователь удаляется из файла /opt/etc/passwd и брокер не запускается.

А почему Вы решили, что пользователь добавляется в /opt/etc/passwd, а не в /etc/passwd.
Добавьте скрипт добавления пользователя в скрипт запуска mosquitto и этим решите проблему.

melandr
Сообщения: 2
Зарегистрирован: 05 фев 2020, 14:07

Сообщение melandr » 05 фев 2020, 15:08

Вот сделал команды в консоли:

Код: Выделить всё

admin@RT-AC66U_B1:/tmp/home/root# cat /etc/passwd
admin:x:0:0:admin:/root:/bin/sh
nas:x:100:100:nas:/dev/null:/dev/null
nobody:x:65534:65534:nobody:/dev/null:/dev/null
mosquitto:x:1000:1000:Linux User,,,:/opt/home/mosquitto:/bin/sh

admin@RT-AC66U_B1:/tmp/home/root# cat /opt/etc/passwd
admin:x:0:0:admin:/root:/bin/sh
nas:x:100:100:nas:/dev/null:/dev/null
nobody:x:65534:65534:nobody:/dev/null:/dev/null
mosquitto:x:1000:1000:Linux User,,,:/opt/home/mosquitto:/bin/sh
admin@RT-AC66U_B1:/tmp/home/root#

Содержимое файлов одинаково.

После перезагрузки роутера

Код: Выделить всё

admin@RT-AC66U_B1:/tmp/home/root# cat /etc/passwd
admin:x:0:0:admin:/root:/bin/sh
nas:x:100:100:nas:/dev/null:/dev/null
nobody:x:65534:65534:nobody:/dev/null:/dev/null

admin@RT-AC66U_B1:/tmp/home/root# cat /opt/etc/passwd
admin:x:0:0:admin:/root:/bin/sh
nas:x:100:100:nas:/dev/null:/dev/null
nobody:x:65534:65534:nobody:/dev/null:/dev/null
admin@RT-AC66U_B1:/tmp/home/root#


Zyxmon писал(а):Источник цитаты Добавьте скрипт добавления пользователя в скрипт запуска mosquitto и этим решите проблему

А без такого костыля других путей нет? А если я захочу сделать парольный доступ к топикам mosquitto, не подскажите как тогда быть? Везде описывают доступ к брокеру по паролю или по ssl при условии, что проблем с пользователем нет.
При создании пользователя вручную командой adduser, я сразу же в командной строке ввожу пароль этого пользователя.
Кстати, после перезагрузки роутера mosquitto не запустился. Мой скрипт на запуск mosquitto

Код: Выделить всё

#!/bin/sh

ENABLED=yes
PROCS=mosquitto
ARGS="-c /opt/etc/mosquitto/mosquitto.conf"
PREARGS=""
DESC=$PROCS
PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

. /opt/etc/init.d/rc.func

При этом, когда я вручную запустил скрипт командой start, то все пошло, при этом mosquitti все равно ругается на отсутствие пользователя
4.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1912
Зарегистрирован: 09 авг 2015, 15:33

Сообщение Zyxmon » 05 фев 2020, 15:50

melandr писал(а):Источник цитаты admin@RT-AC66U_B1:/tmp/home/root# cat /opt/etc/passwd

Я не знаю что у Вас происходит, как Вы поставили Entware, что такое adduser.
По идее /etc/passwd хранится в tmpfs (памяти) и не сохраняется.
По идее /opt/etc/passwd или симлинк на предыдущий файл и не сохраняется или же хранится на флешке (диске) и сохраняется.
adduser из прошивки работает с /etc/passwd, а из Entware с /opt/etc/passwd - но это скорее всего один файл в tmpfs

Как все устроено описано, да Вы и сами можете это исследовать и настроить по желанию.


Вернуться в «Прошивки OpenWrt/DD-WRT/AsusWrt/TomatoUSB/Wive-NG/Padavan/"от Энтузиастов "»

Кто сейчас на конференции

Всего 3 посетителя :: 1 зарегистрированный, 0 скрытых и 2 гостя (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (162) здесь было 16 ноя 2019, 18:33

Сейчас этот форум просматривают: CommonCrawl [Bot] и 2 гостя