Как автоматически запустить сервис после расшифровки вручную / домашнего раздела

Проблема: у меня есть сервис, seafile.service, который автоматически запускает сервер Seafile после загрузки. Однако эта служба не запускается на моем сервере Ubuntu, который имеет зашифрованный /home раздел. Сервис требует доступа к /home/sfadmin/seafile/seafile-server-latest/seafile.sh как показано в этом руководстве.

Службе не удается автоматически запустить сервер Seafile даже после расшифровки вручную /home раздел. Когда я вручную запускаю сервис, выполнив sudo systemctl start seafile.service, это работает, однако, я прошу пароль для расшифровки /home раздел, даже если раздел уже расшифрован и смонтирован. Даже если я введу неправильную фразу-пароль, служба запустится без проблем.

Фон:

  1. Я работаю на сервере Ubuntu 16.04.4 LTS с зашифрованным /home раздел. /home раздел зашифрован с использованием DMCrypt (cryptsetup). Я использовал это руководство для шифрования моего /home раздел.
  2. мой /etc/fstab настроен с nofail директива для моего /home разделить следующим образом: /dev/mapper/data-home /home ext4 defaults,nofail 0 2
  3. мой /etc/crypttab настроен следующим образом: data UUID=myuuidhere none luks,discard,noearly,nofail
  4. Расшифровка моего /home раздел делается вручную. После каждой загрузки я удаленно расшифровываю /home раздел с использованием SSH с командой sudo cryptsetup luksOpen /dev/sda3 data,
  5. После расшифровки Ubuntu автоматически монтирует /home раздел.

Попытка решения

С сервисом Seafile (/etc/systemd/system/seafile.service) требуется доступ к /home раздел, я использовал следующие директивы для моей конфигурации сервиса: ConditionPathExists, Requires, а также After, Ниже мое точное определение сервиса.

[Unit]
Description=Seafile
ConditionPathExists=/home/sfadmin
Requires=home.mount
# add mysql.service or postgresql.service depending on your database to the line below
After=network.target mysql.service home.mount

[Service]
Type=forking
ExecStart=/home/sfadmin/seafile/seafile-server-latest/seafile.sh start
ExecStop=/home/sfadmin/seafile/seafile-server-latest/seafile.sh stop
User=sfadmin
Group=sfadmin

[Install]
WantedBy=multi-user.target

Выпуск:

После перезагрузки сервера Ubuntu я удаленно авторизируюсь по SSH и расшифрую вручную /home раздел. Я подтвердил, что /home раздел автоматически монтируется, однако seafile.service все еще не запускается из-за зависимостей.

Когда я вручную пытаюсь запустить seafile.service с помощью команды sudo systemctl start seafile.service Мне предлагают пароль для расшифровки /home раздел, даже если он уже расшифрован. Когда меня спрашивают о парольной фразе, я оставляю ее пустой и нажимаю ввод, и я не получаю еще один запрос. Когда я проверяю статус seafile.service Сейчас он запущен и активен.

Я думаю, что возможный виновник seafile.service невозможность запуска может быть связана с тем, что система запрашивает пароль для расшифровки /home раздел, даже если он уже расшифрован.

Почему система запрашивает пароль при запуске seafile.service вручную, когда /home раздел уже расшифрован?

Смотрите шаги ниже:

$ sudo cryptsetup luksOpen /dev/sda3 data
Enter passphrase for /dev/sda3:
$ sudo systemctl status seafile.service
● seafile.service - Seafile
   Loaded: loaded (/etc/systemd/system/seafile.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

Mar 10 04:14:02 VM-SERVER systemd[1]: Dependency failed for Seafile.
Mar 10 04:14:02 VM-SERVER systemd[1]: seafile.service: Job seafile.service/start failed with result 'dependency'.
$ sudo systemctl start seafile.service
Please enter passphrase for disk data!
$ sudo systemctl status seafile.service
● seafile.service - Seafile
   Loaded: loaded (/etc/systemd/system/seafile.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-03-10 04:36:46 EST; 11s ago
  Process: 1589 ExecStart=/home/sfadmin/seafile/seafile-server-latest/seafile.sh start (code=exited, status=0/SUCCESS)
    Tasks: 15
   Memory: 21.2M
      CPU: 528ms
   CGroup: /system.slice/seafile.service
           ├─1614 /home/sfadmin/seafile/seafile-server-6.2.5/seafile/bin/seafile-controller -c /home/sfadmin/seafile/ccnet -d /home/sfadmin/seafile/seafile-data -F /home/sfadmin/seafile/conf
           ├─1616 ccnet-server -F /home/sfadmin/seafile/conf -c /home/sfadmin/seafile/ccnet -f /home/sfadmin/seafile/logs/ccnet.log -d -P /home/sfadmin/seafile/pids/ccnet.pid
           └─1618 seaf-server -F /home/sfadmin/seafile/conf -c /home/sfadmin/seafile/ccnet -d /home/sfadmin/seafile/seafile-data -l /home/sfadmin/seafile/logs/seafile.log -P /home/sfadmin/seafile/pids/seaf-server.pid

Mar 10 04:36:42 VM-SERVER systemd[1]: Starting Seafile...
Mar 10 04:36:43 VM-SERVER seafile.sh[1589]: [03/10/18 04:36:43] ../common/session.c(132): using config file /home/sfadmin/seafile/conf/ccnet.conf
Mar 10 04:36:43 VM-SERVER seafile.sh[1589]: Starting seafile server, please wait ...
Mar 10 04:36:46 VM-SERVER systemd[1]: Started Seafile.

0 ответов

Другие вопросы по тегам