Почему ejabberd хочет создать файл cookie erlang в /home? #сбой: проблемы с разрешениями

#build #configuration #ejabberd #user-permissions

Вопрос:

в документации они сказали настроить как пользователя ejabberd, т. е., но имеют ли они в виду системного пользователя или обычного пользователя. Я не знаю, почему, но если я это сделаю, он захочет создать файл erlang.cookie иногда в $HOME/.erlang.cookie, а иногда в $HOME/ejabberd/.erlang.cookie, и я не могу понять, почему. Когда я настроил сборку на использование моего имени пользователя, все работало нормально.

(шаги были опробованы с системным пользователем и обычным пользователем ejabberd без домашнего каталога, созданного до шага 3)

 step 1: ./configure  --enable-user=ejabberd --disable-stun --enable-sqlite
step 2: make
step 3: sudo make install
step 4: copy the service file to systemd/system directory and starting the service
step 5: receiving the error that the erlang.cookie can't be created because of no
        permisson for /home/ or because /home/ejabberd does not exist
 

Указав документацию, файл cookie должен быть создан в /var/lib/ejabberd/.erlang.cookie [ Docs ]

Было бы очень хорошо, если бы вы могли мне помочь!

Ответ №1:

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

Обычный пользователь! ejabberd не нуждается в каких-либо привилегиях или корневом доступе для работы (только порт 80 для обновления сертификата ACME, но достаточно переадресации порта).

Указывая на документацию, файл cookie должен быть создан в /var/lib/ejabberd/.erlang.cookie [ Docs ]

В старые времена для HOME было установлено значение SPOOLDIR (в документах до сих пор так говорится), но это было изменено в https://github.com/processone/ejabberd/commit/40ef406ec7412f7a81240d1e7567953ca11ffe43#diff-58efbd248a3f69bc63a62926359bbcb142a2c4b239bd5166e1b9ad5528c47270L108

Итак, Docs и ejabberdctl.template в этой части неверны и нуждаются в обновлении: пользователю, запускающему ejabberd, нужен ДОМ, потому что там хранится файл cookie.

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

Правильно, потому что в вашем личном кабинете есть ДОМ, где эрланг может создать файл cookie.

Это работает для меня:

 ❯ sudo adduser ejacount3
S'està afegint l'usuari «ejacount3»…
S'està afegint el grup nou ejacount3 (1006)…
S'està afegint el nou usuari ejacount3 (1005) amb grup ejacount3…
S'està creant el directori personal «/home/ejacount3»…
...

❯ ./autogen.sh; ./configure --enable-user=ejacount3
allow this system user to start ejabberd: ejacount3
...

❯ make
...

❯ sudo make install
...

❯ sudo su ejacount3 ejabberdctl live
2021-10-06 11:23:53.400422 02:00 [info] ejabberd 21.07.62 is started in the node ejabberd@localhost in 5.35s
...
 

Также можно использовать systemd:

 ❯ vim ejabberd.service
User=ejacount3
Group=ejacount3

❯ sudo cp ejabberd.service /etc/systemd/system/

❯ sudo systemctl daemon-reload 

❯ sudo systemctl enable ejabberd.service

❯ sudo systemctl start ejabberd         

❯ sudo systemctl status ejabberd
● ejabberd.service - XMPP Server
   Loaded: loaded (/etc/systemd/system/ejabberd.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2021-10-06 11:30:31 CEST; 1min 21s ago
...

❯ sudo su ejacount3 ejabberdctl status
The node ejabberd@localhost is started with status: started
ejabberd 21.07.62 is running in that node
 

Комментарии:

1. Спасибо! мне нужно изменить конфигурацию, я использовал ее сейчас с системной учетной записью и домашним каталогом, созданным вручную. почему они не обновляют документацию? -.-

2. В настоящее время документация обновлена.