Acabei de terminar o processo de instalação e configuração do systemd no meu sistema arch-linux (2012.09.07). Eu desinstalei initscripts
(e removi os arquivos de configuração).
O que eu quero fazer é criar um serviço que possa ser iniciado e interrompido por um usuário não raiz. O serviço é iniciar uma sessão de tela desanexada executando o rtorrent. No entanto, eu quero que todos os usuários do sistema que configuraram esse serviço iniciem (ativados) tenham uma instância específica iniciada especificamente para eles. Como alguém faria isso?
Lembro-me de ler que o systemd suporta instâncias de serviços do usuário, no entanto, não consegui encontrar nenhuma informação sobre como configurá-lo ou se ele está relacionado ao que estou procurando.
Arquivo de serviço que eu usei para o 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
ATUALIZAÇÃO # 1 :
Depois de ler as páginas de manual aqui e aqui , entendo como o systemd funciona um pouco melhor. Especificamente, o uso das opções User=
e WorkingDirectory=
permite que o serviço seja iniciado na sessão de um usuário. No entanto, a questão ainda permanece que o usuário em si não pode start
, stop
, enable
, ou disable
o serviço. Um erro de acesso negado é dado por systemctl
.
ATUALIZAÇÃO # 2 :
Primeiramente, para simplificação e para melhor uso do recurso de sessão do usuário do systemd (ainda um pouco incompleto), usei as unidades de sessão do usuário do sofar e segui seu conselho de configuração.
Parece que há um erro na versão atual do DBus (1.6.4-1) na qual ele não define o DBUS_SESSION_BUS_ADDRESS
significado da variável de ambiente usando os systemctl --user
erros de comando com:
Failed to get D-Bus connection: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
A variável deve ficar assim:
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/USERUID/dbus/user_bus_socket"
onde USERUID precisa ser o UID do usuário especificado.
sudo
os usuários e tê-los, como mencionado no meu comentário acima, controlar seu próprio arquivo de serviço. Contudo, esta solução permitiria ao usuário controlar a maioria dos outros serviços, bem ...
sudo
a documentação - sudoers (5) tem muitos exemplos para restringir os argumentos de um comando.