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.