LINUX.ORG.RU

systemd - Failed to enable unit: Access denied

 


1

1

Пытаюсь написать системд юнит, который будет просто запускать баш-скрипт.

[Unit]
Description=KB-Layout-Signal-Watcher
After=network.target

[Service]
Type=simple
#Restart=always
#RestartSec=1
#PIDFile=/tmp/kb-layout-signal-watcher.pid
#WorkingDirectory=/tmp/

#User=root
#Group=root

#OOMScoreAdjust=-1000

#Environment=PATH=/bin/

ExecStart=/bin/bash /home/bvn13/develop/kb-layout-caps-led/scripts/kb-layout-signal-watcher.sh
#ExecStop=kill -0 `cat /tmp/kb-layout-signal-watcher.pid`
#ExecReload=kill -0 `cat /tmp/kb-layout-signal-watcher.pid` && /bin/bash /home/bvn13/develop/kb-layout-caps-led/scripts/kb-layout-signal-watcher.sh

#TimeoutSec=300
#TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

Но он не хочет запускаться

# systemctl enable kb-layout-signal-watcher.service
Failed to enable unit: Access denied

Уже все опции поотключал - не пойму. Что ему надо?

★★★★★
ExecStart=/bin/bash /home/bvn13/develop/kb-layout-caps-led/scripts/kb-layout-signal-watcher.sh

А зачем нужно указывать интерпретатор, если он и так прописывается в первой же строчке скрипта?

Я делал проще, вот пример: Почему при обновлении Kubunte портится загрузка Manjaro? (комментарий)

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

root-то?

lrwxrwxrwx. 1 root root   79 мая  3 21:24  kb-layout-signal-watcher.service -> /home/bvn13/develop/kb-layout-caps-led/daemons/kb-layout-signal-watcher.service

я ему в ExecStart уже левый скрипт подсунул, пустой - все равно эта ошибка.

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от bvn13

root-то?

Да, если атрибут разрешающий запуск не установлен то даже под рутом скрипт запускаться не будет.

torvn77 ★★★★★
()
Ответ на: комментарий от torvn77

ну так для этого и стоит ExecStart=/bin/bash ...

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от pfg

мне не нужно от юзера, мне нужно от рута. и включать его пытаюсь от рута

зы. но ты натолкнул меня на мысль. я скопировал файл юнита в /etc/systemd/system и все запустилось. видать, он, действительно, не дает запустить, если файл лежит где-то в хомяке. как победить? мне же в репу гитовую его хочется добавить и держать там

bvn13 ★★★★★
() автор топика
Последнее исправление: bvn13 (всего исправлений: 1)
Ответ на: комментарий от bvn13

пардон пропустил # в команде.

ситемные файлики должный лежать в системном месте юникс-вей же :)

man systemd.unit

  System Unit Search Path
       /etc/systemd/system.control/*
       /run/systemd/system.control/*
       /run/systemd/transient/*
       /run/systemd/generator.early/*
       /etc/systemd/system/*
       /etc/systemd/systemd.attached/*
       /run/systemd/system/*
       /run/systemd/systemd.attached/*
       /run/systemd/generator/*
       ...
       /lib/systemd/system/*
       /run/systemd/generator.late/*

   User Unit Search Path
       ~/.config/systemd/user.control/*
       $XDG_RUNTIME_DIR/systemd/user.control/*
       $XDG_RUNTIME_DIR/systemd/transient/*
       $XDG_RUNTIME_DIR/systemd/generator.early/*
       ~/.config/systemd/user/*
       /etc/systemd/user/*
       $XDG_RUNTIME_DIR/systemd/user/*
       /run/systemd/user/*
       $XDG_RUNTIME_DIR/systemd/generator/*
       ~/.local/share/systemd/user/*
       ...
       /usr/lib/systemd/user/*
       $XDG_RUNTIME_DIR/systemd/generator.late/*
и усё вариантов нет.

сделай хардлинк в хомяк плюс chmod 666 ??

pfg ★★★★★
()
Ответ на: комментарий от pfg

нет же. у меня на серверах с убунтой 16.04 сами файлы-юниты лежат то в хомяке, то еще где, а линки на них - в /etc/systemd/system. и все работает.

мне удалось автоматически создать линк, но демон не запускается

[root@bvn13-book daemons]# systemctl link /home/bvn13/develop/kb-layout-caps-led/daemons/kb-layout-signal-watcher.service
Created symlink /etc/systemd/system/kb-layout-signal-watcher.service → /home/bvn13/develop/kb-layout-caps-led/daemons/kb-layout-signal-watcher.service.
[root@bvn13-book daemons]# systemctl enable kb-layout-signal-watcher.service
Failed to enable unit: Access denied

bvn13 ★★★★★
() автор топика
Последнее исправление: bvn13 (всего исправлений: 1)
Ответ на: комментарий от pfg

ситемные файлики должный лежать в системном месте юникс-вей же :)
и усё вариантов нет.

читай ман внимательнее - варианты есть, и даже не один.

1) К этим путям можно добавлять свои собственные, выставляя переменную окружения $SYSTEMD_UNIT_PATH

2) Можно вызвать systemctl link /path/to/your_unit.service, и затем уже запускать этот юнит стандартным способом

anonymous
()
Ответ на: комментарий от Deleted

тред не читай, поскорее отвечай

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от bvn13

мне удалось автоматически создать линк, но демон не запускается

Ты бы хоть ман почитал прежде чем на системд жаловаться. «systemctl enablre» *не* запускает твой сервис.

anonymous
()
Ответ на: комментарий от vasily_pupkin

С чего бы это?

$ ls /etc/systemd/system -l | grep jircbot
lrwxrwxrwx 1 root root   28 Jun 18  2018 jircbot.service -> /srv/daemons/jircbot.service

$ ls /srv/daemons -l | grep jircbot
-rw-r--r-- 1 bvn13 bvn13 285 Mar 16 00:02 jircbot.service

$ uname -r
4.4.0-130-generic

$ systemctl --version
systemd 229
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN

И это все на моей ВПСке с убунтой 16.04 на борту.

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от bvn13

Ровно то, что сказал. «systemctl start» запускает сервис, а «systemctl enable» — *разрешает* запускать его автоматически. При «systemctl enable» в /etc/systemd/system/multi-user.target.wants/ создаётся ссылка на твой юнит. Systemctl, видимо, эту ссылку создать не может. Ищи почему: настоящий ли ты рут, не мешает ли тебе селинукс или что-то подобное и т. д.

anonymous
()
Ответ на: комментарий от anonymous

Systemctl, видимо, эту ссылку создать не может.

ну так я с этого и начал тред

Ищи почему: настоящий ли ты рут,

да

не мешает ли тебе селинукс или что-то подобное и т. д.

хм. Я, конечно, проверю еще раз селинукс… а что еще может мешать? не нашел я доков по этому поводу.

bvn13 ★★★★★
() автор топика
Последнее исправление: bvn13 (всего исправлений: 2)
Ответ на: комментарий от bvn13

ну так я с этого и начал тред

Ты начал тред с того, что заявил: «Но он не хочет *запускаться*», потом добавил: «Уже все опции поотключал - не пойму. Что ему надо?» Что ты называешь «опциями»? Те закоменнтаренные строчки в твоём юните? Твоя жалоба и вот эта строчка

#ExecStop=kill -0 `cat /tmp/kb-layout-signal-watcher.pid`

ясно показывают что ты вообще не парился чтобы изучать вопрос. Так, наговнокодил херни какой-то.

Сходи в /etc/systemd/system, проверь есть ли там каталог multi-user.target.wanted, какие на него права, попробуй ручками создать там файл, попробуй сделать systemctl enable для какого-нибудь другого сервиса (желательно, у которого WantedBy такой же, как у твоего), сделай restorecon -Fv *, наконец посмотри логи, особенно логи аудита… Проблема решается, скорее всего, тривиально.

anonymous
()
Ответ на: комментарий от anonymous

Ещё я бы положил свой юнит в /etc/systemd/system с последующим chmod go-w && restorecon -Fv — не исключено, что твой юнит файл открыт на запись кому угодно, а системд это не нравится.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.