Ho appena finito il processo di installazione e configurazione di systemd sul mio sistema arch-linux (2012.09.07). Ho disinstallato initscripts
(e rimosso i file di configurazione).
Quello che voglio fare è creare un servizio che può essere avviato e arrestato da un utente non root. Il servizio consiste nell'avvio di una sessione di schermo distaccato che esegue rtorrent. Tuttavia, desidero che tutti gli utenti del sistema che hanno impostato questo servizio per l'avvio (abilitato) abbiano una specifica istanza avviata appositamente per loro. Come si potrebbe fare per fare questo?
Ricordo di aver letto che systemd supporta istanze di servizi degli utenti, tuttavia non sono stato in grado di trovare alcuna informazione su come configurarlo o se si riferisce a ciò che sto cercando.
File di servizio che ho usato per il sistema:
[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
AGGIORNAMENTO N. 1 :
Dopo aver letto le pagine man qui e qui , capisco come systemd funzioni un po 'meglio. In particolare, l'utilizzo delle opzioni User=
e WorkingDirectory=
consente l'avvio del servizio nella sessione di un utente. Tuttavia, la questione rimane ancora che l'utente se stessi non può start
, stop
, enable
o disable
il servizio. Un errore di accesso negato è dato da systemctl
.
AGGIORNAMENTO # 2 :
Prima di tutto, per semplificare e utilizzare al meglio la funzione di sessione utente di Systemd (ancora un po 'incompleta), ho usato le unità di sessione utente di Sofar e ho seguito i suoi consigli di configurazione.
Sembra che ci sia un bug nella versione corrente di DBus (1.6.4-1) in cui non imposta il DBUS_SESSION_BUS_ADDRESS
significato della variabile d'ambiente usando gli systemctl --user
errori del comando con:
Failed to get D-Bus connection: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
La variabile dovrebbe apparire così:
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/USERUID/dbus/user_bus_socket"
dove USERUID deve essere l'UID dell'utente specificato.
sudo
gli utenti e farli controllare, come menzionato nel mio commento sopra, il proprio file di servizio. Tuttavia questa soluzione consentirebbe all'utente di controllare anche la maggior parte degli altri servizi ...
sudo
la documentazione - sudoers (5) ha molti esempi sulla limitazione degli argomenti di un comando.