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

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
no avatar

Автор темы
sasha300
Сообщения: 155
Зарегистрирован: 31 мар 2023, 08:56
Решено: 6
Благодарил (а): 107 раз
Поблагодарили: 7 раз
Контактная информация:

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

#1

12 апр 2024, 00:05

: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:

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

Перейти к ответу ➙

Аватара пользователя

rogoznik
Сообщения: 10436
Зарегистрирован: 27 июн 2017, 13:36
Решено: 135
Откуда: Нижний Тагил
Благодарил (а): 792 раза
Поблагодарили: 2051 раз
Контактная информация:

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

#2

12 апр 2024, 07:45

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
ИзображениеИзображение

Аватара пользователя

slant
Сообщения: 4859
Зарегистрирован: 21 июн 2017, 18:09
Решено: 111
Благодарил (а): 53 раза
Поблагодарили: 2177 раз
Контактная информация:

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

#3

12 апр 2024, 16:40

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

no avatar

Автор темы
sasha300
Сообщения: 155
Зарегистрирован: 31 мар 2023, 08:56
Решено: 6
Благодарил (а): 107 раз
Поблагодарили: 7 раз
Контактная информация:

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

#4

12 апр 2024, 19:06

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 - у него нет прав менять владельца, им будет только текущий юзер все равно.
ок, убираю, сейчас выдам результаты

no avatar

Автор темы
sasha300
Сообщения: 155
Зарегистрирован: 31 мар 2023, 08:56
Решено: 6
Благодарил (а): 107 раз
Поблагодарили: 7 раз
Контактная информация:

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

#5

12 апр 2024, 19:33

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

no avatar

Автор темы
sasha300
Сообщения: 155
Зарегистрирован: 31 мар 2023, 08:56
Решено: 6
Благодарил (а): 107 раз
Поблагодарили: 7 раз
Контактная информация:

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

#6

12 апр 2024, 19:57

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

Аватара пользователя

rogoznik
Сообщения: 10436
Зарегистрирован: 27 июн 2017, 13:36
Решено: 135
Откуда: Нижний Тагил
Благодарил (а): 792 раза
Поблагодарили: 2051 раз
Контактная информация:

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

#7

12 апр 2024, 21:55

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

no avatar

Автор темы
sasha300
Сообщения: 155
Зарегистрирован: 31 мар 2023, 08:56
Решено: 6
Благодарил (а): 107 раз
Поблагодарили: 7 раз
Контактная информация:

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

#8

13 апр 2024, 00:45

беру паузу, много новой инфы, нужно время

Ответить

Вернуться в «Программирование, скриптинг, виртуализация»

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость