Я щойно закінчив процес встановлення та налаштування systemd в моїй системі arch-linux (2012.09.07). Я видалив initscripts
(і видалив файли конфігурації).
Що я хочу зробити - це створити службу, яку може запускати та зупиняти користувач, що не має права доступу. Послуга полягає у запуску окремого сеансу на екрані під керуванням rtorrent. Однак я хочу, щоб кожен користувач у системі, який встановив цю послугу, запускався (увімкнено), щоб певний екземпляр запускався саме для них. Як би можна було робити це?
Я пам'ятаю, як читав, що systemd підтримує користувацькі екземпляри сервісів, проте мені не вдалося знайти будь-якої інформації про те, як це налаштувати, чи стосується він того, що я шукаю.
Файл служби, який я використовував для системи:
[Unit]
Description=rTorrent
[Service]
Type=forking
ExecStart=/usr/bin/screen -d -m -S rtorrent /usr/bin/rtorrent
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent
ОНОВЛЕННЯ №1 :
Прочитавши сторінки людини тут і тут , я зрозумів, як systemd працює трохи краще. Зокрема, використання параметрів User=
та WorkingDirectory=
параметрів дозволяє запускати послугу в сеансі користувача. Однак це питання до сих пір залишається те , що самі по собі користувач не може start
, stop
, enable
або disable
послуги. У доступі відмовлено, помилка надається користувачем systemctl
.
ОНОВЛЕННЯ №2 :
По-перше, для спрощення та кращого використання функції користувальницької сесії користувача systemd (все ще дещо неповної) я використав одиниці сеансу користувача sofar та дотримувався його порад щодо налаштування.
Здається, що в поточній версії DBus (1.6.4-1) є помилка, в якій він не встановлює DBUS_SESSION_BUS_ADDRESS
значення змінної середовища, використовуючи systemctl --user
помилки команди з:
Failed to get D-Bus connection: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Змінна повинна виглядати так:
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/USERUID/dbus/user_bus_socket"
де USERUID повинен бути UID даного користувача.
sudo
для користувачів і, як було зазначено в моєму коментарі вище, керувати їх власним файлом обслуговування. Однак це рішення дозволить користувачеві контролювати і більшість інших сервісів ...
sudo
документацію - sudoers (5) має багато прикладів обмеження аргументів команди.