Страница 1 из 1

Пользовательский юнит systemd выдает ошибку (а системный работает)?

Добавлено: 12 апр 2024, 00:05
sasha300
:hi2:
Уже выяснил, что в пользовательском юните, трабл кроется в правах на "/usr/bin/sshfs", по идее мой логин надо добавить в группу, которая способна запускать этот /usr/bin/sshfs, но хотелось бы узнать мнение профи, вдруг это плохое решение?

Вот тут: http://www.michurin.net/tools/systemd-sshfs.html нарыл скрипт для монтирования удаленной директории по sshfs, через юнит systemd, который принял вид:

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

[Unit]
Description=sshFS
After=network.target

[Service]
Type=fuse.sshfs
User=sas
ExecStart=/usr/bin/sshfs sas@192.168.0.112:/home/sas/share/ /home/sas/share
ExecStop=/bin/fusermount -u /home/sas/share

[Install]
WantedBy=multi-user.target
затем:

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

systemctl daemon-reload
systemctl start my-sshfs.service
и лицезрею примотируемую директорию, все супер! Выполняю "umount ~/share" и приступаю к созданию пользовательского юнита на основе этой статьи: https://losst.pro/upravlenie-sluzhbami- ... sk-sluzhby (респект Slant! :thumbs: )

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

sudo mv -v /usr/lib/systemd/system/my-sshfs.service /usr/lib/systemd/user/
systemctl --user daemon-reload
systemctl --user start my-sshfs.service
И получаю ошибку, по журналам видно, что юнит нет может получить доступ к sshfs (прикладываю оба журнала, вдруг что-то полезное еще там есть):

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

sas@NB264:~$ systemctl --user status my-sshfs.service
Warning: The unit file, source configuration file or drop-ins of my-sshfs.service changed on disk. Run 'systemctl ->
× my-sshfs.service - sshFS
     Loaded: loaded (/usr/lib/systemd/user/my-sshfs.service; disabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Thu 2024-04-11 23:23:10 MSK; 13s ago
    Process: 36443 ExecStart=/usr/bin/sshfs sas@192.168.0.112:/home/sas/share/ /home/sas/share (code=exited, status>
        CPU: 3ms

апр 11 23:23:10 NB264 systemd[1154]: Starting sshFS...
апр 11 23:23:10 NB264 systemd[36443]: my-sshfs.service: Failed to determine supplementary groups: Operation not per>
апр 11 23:23:10 NB264 systemd[36443]: my-sshfs.service: Failed at step GROUP spawning /usr/bin/sshfs: Operation not>
апр 11 23:23:10 NB264 systemd[1154]: my-sshfs.service: Control process exited, code=exited, status=216/GROUP
апр 11 23:23:10 NB264 systemd[1154]: my-sshfs.service: Failed with result 'exit-code'.
апр 11 23:23:10 NB264 systemd[1154]: Failed to start sshFS.
lines 1-13/13 (END)...skipping...
Warning: The unit file, source configuration file or drop-ins of my-sshfs.service changed on disk. Run 'systemctl --user daemon-rel>
× my-sshfs.service - sshFS
     Loaded: loaded (/usr/lib/systemd/user/my-sshfs.service; disabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Thu 2024-04-11 23:23:10 MSK; 13s ago
    Process: 36443 ExecStart=/usr/bin/sshfs sas@192.168.0.112:/home/sas/share/ /home/sas/share (code=exited, status=216/GROUP)
        CPU: 3ms

апр 11 23:23:10 NB264 systemd[1154]: Starting sshFS...
апр 11 23:23:10 NB264 systemd[36443]: my-sshfs.service: Failed to determine supplementary groups: Operation not permitted
апр 11 23:23:10 NB264 systemd[36443]: my-sshfs.service: Failed at step GROUP spawning /usr/bin/sshfs: Operation not permitted
апр 11 23:23:10 NB264 systemd[1154]: my-sshfs.service: Control process exited, code=exited, status=216/GROUP
апр 11 23:23:10 NB264 systemd[1154]: my-sshfs.service: Failed with result 'exit-code'.
апр 11 23:23:10 NB264 systemd[1154]: Failed to start sshFS.
и

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

sas@NB264:~$ journalctl --user -xeu my-sshfs.service
░░ Subject: Не удалось запустить процесс /usr/bin/sshfs
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░ 
░░ Сбой: не удалось запустить процесс /usr/bin/sshfs.
░░ 
░░ Код ошибки: ERRNO.
апр 11 23:23:10 NB264 systemd[1154]: my-sshfs.service: Control process exited, code=exited, status=216/GROUP
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░ 
░░ An ExecStart= process belonging to unit UNIT has exited.
░░ 
░░ The process' exit code is 'exited' and its exit status is 216.
апр 11 23:23:10 NB264 systemd[1154]: my-sshfs.service: Failed with result 'exit-code'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░ 
░░ The unit UNIT has entered the 'failed' state with result 'exit-code'.
апр 11 23:23:10 NB264 systemd[1154]: Failed to start sshFS.
░░ Subject: Ошибка юнита UNIT
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░ 
░░ Произошел сбой юнита UNIT.
░░ 
░░ Результат: failed.
lines 83-111/111 (END)
░░ Subject: Не удалось запустить процесс /usr/bin/sshfs
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░ 
░░ Сбой: не удалось запустить процесс /usr/bin/sshfs.
░░ 
░░ Код ошибки: ERRNO.
апр 11 23:23:10 NB264 systemd[1154]: my-sshfs.service: Control process exited, code=exited, status=216/GROUP
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░ 
░░ An ExecStart= process belonging to unit UNIT has exited.
░░ 
░░ The process' exit code is 'exited' and its exit status is 216.
Сам пользовательский юнит нужен для того, чтобы не вводить пароль админа, но с другой стороны, он не может запустить /usr/bin/sshfs, почему не может - я не понял, это ведь пользовательские команды. Вобщем я уже второй день .. :dash2: и не могу победить сей трабл :sad:
Прошу подсказки у сообщества! :hshake:

Пользовательский юнит systemd выдает ошибку (а системный работает)?

Добавлено: 12 апр 2024, 07:45
rogoznik
sasha300 писал(а):
12 апр 2024, 00:05
ExecStart=/usr/bin/sshfs sas@192.168.0.112:/home/sas/share/ /home/sas/share
Попробуй изменить эту строку так

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

ExecStart=/usr/bin/sshfs -o uid=xxx,gid=yyy sas@192.168.0.112:/home/sas/share/ /home/sas/share
xxx и yyy заменить на свои UID и GUID

Либо необходимо добавить себя в группу fuse

Пользовательский юнит systemd выдает ошибку (а системный работает)?

Добавлено: 12 апр 2024, 16:40
slant
На вскидку:
1. В пользовательском юните не должно быть строки User=sas - у него нет прав менять владельца, им будет только текущий юзер все равно.
2. Пользовательский юнит обычно должен обитать здесь: ~/.config/systemd/user, причем с владельцем и правами на файл соответствующего юзера, а не в /usr/lib/systemd/user/
sasha300 писал(а):
12 апр 2024, 00:05
трабл кроется в правах на "/usr/bin/sshfs", по идее мой логин надо добавить в группу, которая способна запускать этот /usr/bin/sshfs, но хотелось бы узнать мнение профи, вдруг это плохое решение?
Право на исполнение этого бинарника у вас в любом случае должно быть - иначе как запускать? Другое дело, что по умолчанию оно у вас и так должно быть. Сейчас у себя проверил - право на выполнение у обычного юзера есть. Это на монтирование уже может не хватать (хотя и на это должно прав хватать - если в вашу домашнюю директорию). Но если это не так - в этом случае только писать скрипт с нужной командой, и давать ему возможность запускаться от root без запроса пароля через sudo (в его конфиге есть такая возможность). А потом уже скрипт из юнита дергать.

Пользовательский юнит systemd выдает ошибку (а системный работает)?

Добавлено: 12 апр 2024, 19:06
sasha300
rogoznik писал(а):
12 апр 2024, 07:45
xxx и yyy заменить на свои UID и GUID
Поменял, получилось:

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

  GNU nano 6.2                           /usr/lib/systemd/user/my-sshfs.service                                     
After=network.target

[Service]
Type=fuse.sshfs
User=sas
ExecStart=/usr/bin/sshfs -o uid=1000,gid=1000 sas@192.168.0.112:/home/sas/share/ /home/sas/share
ExecStop=/bin/fusermount -u /home/sas/share

[Install]
WantedBy=multi-user.target
затем

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

systemctl --user daemon-reload 
systemctl --user start my-sshfs.service
но теперь никаких ошибок нет, лезу в status и получаю:

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

sas@NB264:~$ systemctl --user status my-sshfs.service
× my-sshfs.service - sshFS
     Loaded: loaded (/usr/lib/systemd/user/my-sshfs.service; disabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Fri 2024-04-12 19:02:12 MSK; 1min 1s ago
    Process: 49999 ExecStart=/usr/bin/sshfs sas@192.168.0.112:/home/sas/share/ /home/sas/share (code=exited, status>
   Main PID: 49999 (code=exited, status=216/GROUP)
        CPU: 0

апр 12 19:02:12 NB264 systemd[49999]: my-sshfs.service: Failed at step GROUP spawning /usr/bin/sshfs: Operation not>
апр 12 19:02:12 NB264 systemd[1154]: Started sshFS.
апр 12 19:02:12 NB264 systemd[1154]: my-sshfs.service: Main process exited, code=exited, status=216/GROUP
апр 12 19:02:12 NB264 systemd[1154]: my-sshfs.service: Failed with result 'exit-code'.

rogoznik писал(а):
12 апр 2024, 07:45
Либо необходимо добавить себя в группу fuse

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

sas@NB264:~$ sudo usermod -a -G fuse sas
[sudo] пароль для sas:         
usermod: группа «fuse» не существует
slant писал(а):
12 апр 2024, 16:40
1. В пользовательском юните не должно быть строки User=sas - у него нет прав менять владельца, им будет только текущий юзер все равно.
ок, убираю, сейчас выдам результаты

Пользовательский юнит systemd выдает ошибку (а системный работает)?

Добавлено: 12 апр 2024, 19:33
sasha300
slant писал(а):
12 апр 2024, 16:40
1. В пользовательском юните не должно быть строки User=sas - у него нет прав менять владельца, им будет только текущий юзер все равно.
2. Пользовательский юнит обычно должен обитать здесь: ~/.config/systemd/user, причем с владельцем и правами на файл соответствующего юзера, а не в /usr/lib/systemd/user/
закоментировал строку с указанием пользователя, получилось вот так:

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

[Unit]
Description=sshFS
After=network.target

[Service]
Type=fuse.sshfs
#User=sas
#ExecStart=/usr/bin/sshfs -o uid=1000,gid=1000 sas@192.168.0.112:/home/sas/share/ /home/sas/share
ExecStart=/usr/bin/sshfs sas@192.168.0.112:/home/sas/share/ /home/sas/share
ExecStop=/bin/fusermount -u /home/sas/share

[Install]
WantedBy=multi-user.target
затем пришлось создавать обе папки:

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

mkdir .config/systemd
 mkdir .config/systemd/user
ну и перемещаю, меняю права у юнита и ставлю владельцем себя любимого =) до этого владелец был root:

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

sudo mv -v /usr/lib/systemd/user/my-sshfs.service ~/.config/systemd/user/
sudo chmod 775 -v ~/.config/systemd/user/my-sshfs.service 
sudo chown sas:sas -v ~/.config/systemd/user/my-sshfs.service 
затем перечитываю юниты и запускаю:

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

systemctl --user daemon-reload 
systemctl --user start my-sshfs.service 
на выходе ничего не сообщает, лезу в status и обламываюсь:

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

sas@NB264:~$ systemctl --user status my-sshfs.service 
○ my-sshfs.service - sshFS
     Loaded: loaded (/home/sas/.config/systemd/user/my-sshfs.service; disabled; vendor preset: enabled)
     Active: inactive (dead)

апр 12 19:10:49 NB264 systemd[1154]: Started sshFS.
апр 12 19:10:49 NB264 fusermount[51705]: /bin/fusermount: failed to unmount /home/sas/share: Device or resource busy
апр 12 19:10:49 NB264 systemd[1154]: my-sshfs.service: Control process exited, code=exited, status=1/FAILURE
апр 12 19:10:49 NB264 systemd[1154]: my-sshfs.service: Failed with result 'exit-code'.
апр 12 19:17:35 NB264 systemd[1154]: /home/sas/.config/systemd/user/my-sshfs.service:6: Failed to parse service typ>
апр 12 19:18:39 NB264 systemd[1154]: Started sshFS.
апр 12 19:18:40 NB264 fusermount[53443]: /bin/fusermount: failed to unmount /home/sas/share: Device or resource busy
апр 12 19:18:40 NB264 systemd[1154]: my-sshfs.service: Control process exited, code=exited, status=1/FAILURE
апр 12 19:18:40 NB264 systemd[1154]: my-sshfs.service: Failed with result 'exit-code'.
апр 12 19:20:09 NB264 systemd[1154]: Started sshFS.
sas@NB264:~$ 
коментирую строку, на которую ругается юнит:

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

[Unit]
Description=sshFS
After=network.target

[Service]
Type=fuse.sshfs
#User=sas
#ExecStart=/usr/bin/sshfs -o uid=1000,gid=1000 sas@192.168.0.112:/home/sas/share/ /home/sas/share
ExecStart=/usr/bin/sshfs sas@192.168.0.112:/home/sas/share/ /home/sas/share
#ExecStop=/bin/fusermount -u /home/sas/share

[Install]
WantedBy=multi-user.target
затем

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

 systemctl --user daemon-reload 
стартую, ничего не пишет, но если посмотреть статус, то ничего не поменялось :dash2:

Вобщем systemd пишет, что ему не нравится:
/home/sas/.config/systemd/user/my-sshfs.service:6: Failed to parse service type, ignoring: fuse.sshfs
вобщем теперь трабла с fuse.sshfs

Пользовательский юнит systemd выдает ошибку (а системный работает)?

Добавлено: 12 апр 2024, 19:57
sasha300
slant писал(а):
12 апр 2024, 16:40
Но если это не так - в этом случае только писать скрипт с нужной командой, и давать ему возможность запускаться от root без запроса пароля через sudo (в его конфиге есть такая возможность). А потом уже скрипт из юнита дергать.
т.е. через visudo закинуть строку вида NOPASSWORD, в этом направлении копать?

Пользовательский юнит systemd выдает ошибку (а системный работает)?

Добавлено: 12 апр 2024, 21:55
rogoznik
sasha300 писал(а):
12 апр 2024, 19:33
Вобщем systemd пишет, что ему не нравится
Естественно не нравится. Нет такого типа типы служб и еще про типы

Пользовательский юнит systemd выдает ошибку (а системный работает)?

Добавлено: 13 апр 2024, 00:45
sasha300
беру паузу, много новой инфы, нужно время