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 disableusł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_ADDRESSco oznacza użycie systemctl --userbłę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.
sudodla 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 ...
sudodokumentację - sudoers (5) ma wiele przykładów ograniczania argumentów polecenia.