Por que os usuários nunca devem usar o sudo normal para iniciar aplicativos gráficos?

90

Eu li a documentação do "RootSudo" da comunidade e estou interessado nesta linha:

  

Você deve nunca usar o sudo normal para iniciar aplicativos gráficos como Root.

Por quê? Qual é a diferença? Por favor, forneça uma explicação simples, já que sou apenas um usuário normal de desktop.

    
por Nur 19.03.2013 / 17:35

2 respostas

105

Aplicações gráficas geralmente armazenam configurações e outros dados específicos do usuário em arquivos de configuração escritos dentro da pasta home do usuário. O principal mecanismo que os aplicativos usam para determinar o que devem usar como a pasta base do usuário é a variável de ambiente HOME . (Você pode inspecioná-lo com echo $HOME ).

Suponha que você esteja executando gedit (um editor de texto gráfico) como root . Se você executar sudo gedit , HOME continuará apontando para o seu diretório inicial, mesmo que o programa esteja sendo executado como root . Conseqüentemente, gedit gravará os arquivos de configuração como root em seu diretório inicial. Estas às vezes resultam no arquivos de configuração sendo possuídos por root e, portanto, inaccessible to you (quando você executar mais tarde o programa como você mesmo e não como root ). Isso acontece principalmente quando o aplicativo precisa criar um novo arquivo de configuração. Os arquivos recém-criados, por padrão, são de propriedade do usuário que os cria (quem, nesse caso, é root , não você).

Essa é a principal razão pela qual você deve executar aplicativos gráficos com um frontend gráfico sudo em vez de usar sudo direto. No Ubuntu e na maioria de seus derivados (incluindo o Xubuntu e o Lubuntu), a interface gráfica padrão é gksu / gksudo . No Kubuntu, é kdesudo . (Depende do ambiente de área de trabalho que está sendo usado.)

Se você quiser usar o sudo diretamente para executar um aplicativo gráfico como gedit , poderá executar:

sudo -H gedit

A sinalização -H torna sudo set HOME a apontar para a pasta base de root (que é /root ).

Isso ainda não irá lidar automaticamente com a propriedade de .Xauthority ao copiá-lo para uma pasta temporária pasta (essa é a outra coisa que os frontends gráficos sudo cuidam de você). Mas no evento não frequente em que .Xauthority esteja inacessível, você receberá um erro dizendo que é, e então poderá corrigir o problema excluindo-o ( sudo rm ~/.Xauthority ), pois ele é automaticamente regenerado. Assim, proteger a propriedade e as permissões de .Xauthority é menos importante do que proteger a propriedade e as permissões dos arquivos de configuração.

Em contraste com root -owned .Xauthority , quando os arquivos de configuração são de propriedade de root , nem sempre é tão óbvio qual é o problema (porque os programas gráficos geralmente são executados, mas não funcionam muito bem, e saída quaisquer erros úteis para o console). E às vezes é um incômodo maior para consertar, especialmente se você está em uma situação onde você quer um ou mais arquivos em seu diretório home para ser possuído por alguém que não seja você (porque então você não pode consertá-lo simplesmente recursivamente chown ing todos os seus arquivos de volta para si mesmo).

Portanto, sudo (pelo menos sem -H ) não deve ser usado para executar um aplicativo gráfico a menos que você esteja familiarizado com o funcionamento interno do aplicativo e tenha certeza de que não nunca tente gravar qualquer arquivo de configuração.

    
por Eliah Kagan 19.03.2013 / 17:49
23

Coloque simplesmente:

  

Isso impede que os arquivos em seu diretório pessoal sejam de propriedade do root.

Leia aqui . Além disso, possivelmente uma duplicata de Qual é a diferença entre "gksudo nautilus" e "sudo nautilus"?

    
por carnendil 19.03.2013 / 17:40

Tags