AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 422040
Accepted
lofidevops
lofidevops
Asked: 2018-02-06 06:03:38 +0800 CST2018-02-06 06:03:38 +0800 CST 2018-02-06 06:03:38 +0800 CST

O Wayland suportará o sudo gráfico?

  • 772

Na área de trabalho X, eu ocasionalmente usei gksudoou apenas sudo someguipara iniciar aplicativos GUI como outro usuário, incluindo root. Descobri recentemente que isso não é possível em desktops Wayland contemporâneos (início de 2018). Todos os aplicativos devem ser iniciados como o usuário atual da área de trabalho e são limitados aos privilégios desse usuário.

Esse é um recurso permanente do Wayland (por design) ou o uso do tipo su é um aprimoramento que ainda não foi implementado?

Estou procurando uma declaração documentada (roteiro, página de design...), não preferência ou opinião.

sudo su
  • 5 5 respostas
  • 5079 Views

5 respostas

  • Voted
  1. Best Answer
    mviereck
    2018-02-11T13:33:07+08:002018-02-11T13:33:07+08:00

    Este é um recurso permanente do Wayland (lá por design)

    Não. Isso não tem nada a ver com o protocolo 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_DIRque normalmente é configurado apenas para acesso do usuário. Mas o root também pode acessá-lo. (Alguns aplicativos também consideram XDG_SESSION_TYPEquais podem ter valores waylandou x11para decidir se devem usar X ou Wayland.)

    sudoexclui a maioria das variáveis ​​de ambiente, incluindo XDG_RUNTIME_DIRe WAYLAND_DISPLAY.

    Você pode executar aplicativos wayland como root com:

    sudo env XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR WAYLAND_SOCKET=$WAYLAND_SOCKET waylandapplication
    

    ou menor -EHpara preservar quase todas as variáveis ​​de ambiente (mas definindo HOMEcomo /root). Isso incluirá DISPLAYe XAUTHORITYpara acesso Xwayland também:

    sudo -EH application
    

    No entanto, se o aplicativo executado como root gravar qualquer coisa em XDG_RUNTIME_DIR, isso poderá causar problemas de permissão de arquivo para os aplicativos do usuário.

    No entanto, executar 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
    

    Estou procurando uma declaração documentada (roteiro, página de design...), não preferência ou opinião.

    A documentação de Wayland menciona WAYLAND_DISPLAY, mas não encontro nada sobre XDG_RUNTIME_DIR. No entanto, todos os compositores de wayland, incluindo a implementação de referência weston, dependem do XDG_RUNTIME_DIR.

    Se WAYLAND_DISPLAYestivesse em outro local, não seria um problema executar aplicativos de usuários arbitrários na mesma exibição de wayland. Mas XDG_RUNTIME_DIRé especificado para ser restrito ao usuário logado e deve conter soquetes relacionados ao usuário:

    $XDG_RUNTIME_DIR define o diretório base relativo ao qual os arquivos de tempo de execução não essenciais específicos do usuário e outros objetos de arquivo (como soquetes, pipes nomeados, ...) devem ser armazenados. O diretório DEVE pertencer ao usuário e ele DEVE ser o único com acesso de leitura e gravação a ele. Seu modo de acesso Unix DEVE ser 0700.

    Os problemas com a execução de outro usuário ou root no wayland estão mais relacionados à XDG_RUNTIME_DIRespecificação do que ao próprio wayland. Se você especificar um custom XDG_RUNTIME_DIRcom /tmpacesso arbitrário (quebrando assim sua especificação), todos os usuários poderão usar a exibição do wayland.

    Há alguma esperança para o futuro não precisar XDG_RUNTIME_DIR, mas depende da implementação: Wayland docu cap.4 :

    A partir do Wayland 1.15, as implementações podem, opcionalmente, oferecer suporte a terminais de soquete de servidor localizados em locais arbitrários no sistema de arquivos, definindo WAYLAND_DISPLAY para o caminho absoluto no qual o terminal de servidor escuta.

    • 10
  2. intgr
    2021-04-06T05:49:18+08:002021-04-06T05:49:18+08:00

    Eu escrevi ego(Alter Ego) para este caso de uso. Não é um aplicativo GUI, mas você pode iniciar aplicativos GUI a partir do console como outro usuário, ele lida automaticamente com o compartilhamento de soquete xhost e Wayland e PulseAudio: https://github.com/intgr/ego

    O truque é usar Posix ACLs para conceder acesso aos soquetes Wayland/PulseAudio a outro usuário e definir variáveis ​​de ambiente para que os aplicativos do usuário de destino saibam como se conectar a ele.

    Se você tiver problemas, abra um problema no GitHub.

    • 5
  3. Thomas Guyot-Sionnest
    2020-07-03T22:43:10+08:002020-07-03T22:43:10+08:00

    Existem duas soluções bastante fáceis. Os exemplos abaixo iniciam o synaptic, mas qualquer outro comando deve funcionar.

    1. Usando ssh X-Forwarding para o usuário root (você pode ter que habilitar o login root /etc/ssh/sshd_configou configurar a chave de autenticação):
    $ ssh -Y root@:: synaptic
    
    1. Usando socat & sudo, conforme proposto por bober no RedHat Bug #1274451 . O exemplo abaixo assume que estamos na exibição #0 e #1 é grátis...
    socat UNIX-LISTEN:/tmp/.X11-unix/X1 UNIX-CONNECT:/tmp/.X11-unix/X0 & sudo DISPLAY=:1 synaptic
    

    Acredito que, de qualquer forma, a solução alternativa é ter um processo de propriedade do usuário para se conectar ao soquete X11 e fornecer tunelamento.

    • 2
  4. Alejandro Blasco
    2018-10-10T04:32:23+08:002018-10-10T04:32:23+08:00

    Embora eu não esteja respondendo diretamente à sua pergunta, acho que há pessoas que podem ter vindo parar aqui por causa do mesmo problema.

    Este é um script que eu fiz é uma solução alternativa para pessoas que precisam executar aplicativos gráficos (como Gedit , Synaptic ou GParted ) como root via sudo em uma sessão Wayland :

    https://gist.github.com/wachambo/bd22e12db2d5a46dc109bd0d553733be

    Importado aqui:

    #!/usr/bin/env bash
    
    #
    # Enable root access to x-windows system.
    #
    # Motivation: Trying to run a graphical application as root via su, sudo in a 
    # Wayland session (e.g. GParted or Gedit), will fail. Apps which use polkit to
    # request administrator permissions for just certain operations and only when 
    # needed are not affected (they are not started as root right away). 
    # [1] https://bugzilla.redhat.com/show_bug.cgi?id=1274451
    #
    # Based on a Reddit comment.
    # [2] https://www.reddit.com/r/Fedora/comments/5eb633/solution_running_graphical_app_with_sudo_in/
    
    if (( $# != 1 )); then
        echo "Illegal number of parameters."
        echo
        echo "Usage: wsudo [command]"
        exit 1
    fi
    
    for cmd in sudo xhost; do
        if ! type -P $cmd &>/dev/null; then
            echo "$cmd it's not installed. Aborting." >&2
            exit 1
        fi
    done
    
    xhost +SI:localuser:root
    sudo $1
    #disable root access after application terminates
    xhost -SI:localuser:root
    #print access status to allow verification that root access was removed
    xhost
    
    • 1
  5. MRule
    2022-09-22T00:14:53+08:002022-09-22T00:14:53+08:00

    Isso estende a resposta de Thomas Guyot-Sionnest .

    Sinto que isso merece sua própria resposta, já que resolveu muitos problemas para mim. Crie um script de shell chamado wlsudocom o seguinte conteúdo:

    #!/usr/bin/env bash
    socat UNIX-LISTEN:/tmp/.X11-unix/X1 UNIX-CONNECT:/tmp/.X11-unix/X0 & sudo DISPLAY=:1 "$@"
    

    Salve-o em um diretório no seu $PATHe dê a ele permissões executáveis ​​( chmod +x ./wlsudo). Você deve ser capaz de iniciar aplicativos GUI usando wlsudono lugar de sudoWayland, por exemplo, wlsudo synaptic apenas funciona .

    • 1

relate perguntas

  • O 'zfs send' é um comando somente leitura seguro?

  • Diferença entre sudo nautilus e sudo -E nautilus

  • Execute um único comando como outro usuário; restrições ao sudo

  • Permitir que o usuário execute um comando como root

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve