Executa o segundo servidor X a partir do X como um serviço systemd

4

Eu quero iniciar um segundo servidor X a partir de uma sessão X já em execução.

Até o debian 8, posso editar /etc/X11/Xwrapper.config e alterar a linha allowed_users=console para allowed_users=anybody . Isso me permite, como um usuário sem privilégios, executar o X de dentro do X. X é um wrapper setuid para o Xorg.

As coisas mudaram no debian 9, o X não é mais um wrapper setuid, em vez disso, os privilégios necessários ao X são regidos pelo systemd. O arquivo /etc/X11/Xwrapper.config não existe mais.

É possível restaurar o comportamento herdado com o pacote xserver-xorg-legacy . Então /etc/X11/Xwrapper.config tem que conter as linhas

allowed_users=anybody
needs_root_rights=yes

Outra possibilidade é mudar para um dos tipos tty1 ... tty6 e rodar o X com xinit xterm -- :1 vt1 , enquanto o vt1 ... vt6 deve estar de acordo com o tty1 ... tty6. (tty8 ... tty12 / vt8 ... vt12 não está mais disponível.)

Eu quero evitar o uso de configurações herdadas e evitar a mudança para o console. Eu quero voltar a possibilidade de xinit xterm -- :1 vt8 .

Como posso configurar o systemd para permitir que usuários sem privilégios iniciem um segundo servidor X a partir de um X já em execução?

    
por mviereck 20.02.2017 / 20:27

1 resposta

0

Como root:

systemd-run --property PAMName=login \
            --property User=my-user \
            --property StandardInput=tty \
            --property TTYPath=/dev/tty8 \
            xinit xterm -- :1

A mágica está em definir PAMName= , abrir uma sessão PAM e associar essa sessão ao TTY específico. Isso faz com que o pam_systemd faça o que você deseja. Eu falsifiquei login - embora, tecnicamente, você deva definir um novo "nome de serviço" do PAM, caso precise de algum tratamento especial.

Então você pode escrever um script que execute o comando desejado. Em seguida, conceda acesso para executar esse script como root, usando sudo .

Se você usa o SELinux, você terá que lutar contra isso também.

    
por 03.10.2018 / 18:52