Właśnie skończyłem proces instalacji i konfiguracji systemd na moim systemie arch-linux (2012.09.07). Odinstalowałem initscripts
(i usunąłem pliki konfiguracyjne).
Chcę utworzyć usługę, która może być uruchamiana i zatrzymywana przez użytkownika innego niż root. Usługa polega na uruchomieniu odłączonej sesji ekranowej z uruchomionym programem rtorrent. Chcę jednak, aby każdy użytkownik w systemie, który skonfigurował tę usługę do uruchomienia (włączony), miał konkretną instancję uruchomioną specjalnie dla nich. Jak można to zrobić?
Pamiętam, że przeczytałem, że systemd obsługuje instancje usług użytkowników, jednak nie byłem w stanie znaleźć żadnych informacji o tym, jak to skonfigurować, ani czy dotyczy to tego, czego szukam.
Plik usługi, którego użyłem dla systemu:
[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
AKTUALIZACJA # 1 :
Po przeczytaniu stron podręcznika tu i tutaj rozumiem, jak systemd działa nieco lepiej. W szczególności korzystanie z opcji User=
i WorkingDirectory=
pozwala na uruchomienie usługi w sesji użytkownika. Jednak problem nadal pozostaje, że użytkownik nie może sami start
, stop
, enable
, lub disable
usługa. Odmowa dostępu Błąd jest przez systemctl
.
AKTUALIZACJA # 2 :
Po pierwsze, dla uproszczenia i lepszego wykorzystania sesji użytkownika systemd (wciąż nieco niekompletnej) użyłem jednostek sesji użytkownika sofara i postępowałem zgodnie z jego radą konfiguracji.
Wygląda na to, że w obecnej wersji DBus (1.6.4-1) występuje błąd, w którym nie ustawia zmiennej środowiskowej, DBUS_SESSION_BUS_ADDRESS
co oznacza użycie systemctl --user
błędów poleceń za pomocą:
Failed to get D-Bus connection: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Zmienna powinna wyglądać następująco:
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/USERUID/dbus/user_bus_socket"
gdzie USERUID musi być UID danego użytkownika.
sudo
dla użytkowników i umożliwić im, jak wspomniano w moim komentarzu powyżej, kontrolowanie własnego pliku usługi. Jednak to rozwiązanie pozwoliłoby użytkownikowi kontrolować również większość innych usług ...
sudo
dokumentację - sudoers (5) ma wiele przykładów ograniczania argumentów polecenia.