Is this a permanent feature of Wayland (there by design)
Não. Isso não tem nada a ver com o protocolo do wayland. É mais uma questão de configuração do ambiente.
Wayland usa um soquete, seu nome é armazenado em WAYLAND_DISPLAY
. Ele está localizado em XDG_RUNTIME_DIR
, que normalmente é configurado apenas para acesso do usuário. Mas o root também pode acessá-lo. (Alguns aplicativos também consideram XDG_SESSION_TYPE
, que pode ter valores wayland
ou x11
para decidir se deve usar X ou Wayland.)
sudo
exclui a maioria das variáveis de ambiente, incluindo XDG_RUNTIME_DIR
e WAYLAND_DISPLAY
.
Você pode executar aplicativos de caminhos da cidade como root com:
sudo env XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR WAYLAND_SOCKET=$WAYLAND_SOCKET waylandapplication
ou menor com -EH
para preservar quase todas as variáveis de ambiente (mas configurando HOME
para /root
). Isso incluirá DISPLAY
e XAUTHORITY
para o acesso a Xwayland também:
sudo -EH application
No entanto, se o aplicativo em execução como root gravar alguma coisa em XDG_RUNTIME_DIR
, isso poderá causar problemas de permissão de arquivo para aplicativos do usuário.
No entanto, a execução de aplicativos gráficos como root no wayland é muito menos um problema de segurança do que no X11.
Para evitar o uso acidental do X11, você pode executar sem DISPLAY
:
sudo -EH env DISPLAY= waylandapplication
I'm looking for a documented statement (roadmap, design page...), not preference or opinion.
A documentação do Wayland menciona WAYLAND_DISPLAY
, mas não encontro nada sobre XDG_RUNTIME_DIR
. No entanto, todos os compositores de rotas incluindo a implementação de referência weston
dependem de XDG_RUNTIME_DIR
.
Se WAYLAND_DISPLAY
estivesse em outro local, não seria um problema executar aplicativos de usuários arbitrários na mesma exibição de rota. Mas XDG_RUNTIME_DIR
está especificado para ser restrito ao usuário que efetuou login e deve conter soquetes relacionados ao usuário:
$XDG_RUNTIME_DIR defines the base directory relative to which user-specific non-essential runtime files and other file objects (such as sockets, named pipes, ...) should be stored. The directory MUST be owned by the user, and he MUST be the only one having read and write access to it. Its Unix access mode MUST be 0700.
Os problemas com a execução de outro usuário ou root no wayland estão relacionados à especificação XDG_RUNTIME_DIR
do que ao próprio caminho. Se você especificar um XDG_RUNTIME_DIR
em /tmp
personalizado com acesso arbitrário (assim quebrando sua especificação), todos os usuários poderão usar a exibição da rota.
Há alguma esperança de que o futuro não precise de XDG_RUNTIME_DIR
, mas isso depende da implementação: Wayland docu cap.4 :
Beginning in Wayland 1.15, implementations can optionally support server socket endpoints located at arbitrary locations in the filesystem by setting WAYLAND_DISPLAY to the absolute path at which the server endpoint listens.