
Eu lia documentação da comunidade "RootSudo"e estou interessado nesta linha:
Você devenuncause o sudo normal para iniciar aplicativos gráficos como Root.
Por que? Qual é a diferença? Forneça uma explicação simples, pois sou apenas um usuário normal de desktop.
Responder1
No Ubuntu 19.10 e posterior, a advertência emaquele artigo(e nesta resposta) não se aplica mais. VerResposta do WinEunuuchs2Unixassim comoessa questão.
Os aplicativos gráficos geralmente armazenam configurações e outros dados específicos do usuário em arquivos de configuração escritos dentro do arquivo do usuário.pasta inicial. O principal mecanismo que os aplicativos usam para determinar o que devem usar como pasta pessoal do usuário é oHOME
variável de ambiente. (Você mesmo pode inspecioná-lo com echo $HOME
).
Suponha que você esteja correndogedit
(um editor de texto gráfico) comoroot
. Se você correr sudo gedit
, HOME
continuará apontando paraseudiretório inicial, mesmo que o programa esteja em execuçãocomoroot
. Conseqüentemente, gedit
escreverá arquivos de configuraçãocomoroot
em seu diretório inicial. Esseàs vezes resultarános arquivos de configuração sendocontroladoporroot
e assiminacessível para você(quando você executar o programa posteriormente 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, pertencem ao usuário que os cria (que neste caso é root
, não você).
Essa é a principal razão pela qual você deve executar aplicativos gráficos com um sudo
frontend gráfico em vez de diretamente sudo
. No Ubuntu e na maioria de seus derivados (incluindo Xubuntu e Lubuntu), o frontend gráfico padrão égksu
/gksudo
. No Kubuntu ékdesudo
. (Depende doambiente de área de trabalhosendo usado.)
Se vocêquererpara usar sudo
diretamente para executar um aplicativo gráfico como gedit
, você pode executar:
sudo -H gedit
O -H
sinalizador faz com que sudo
o conjunto HOME
aponte para root
a pasta pessoal do (que é/root
).
Isso ainda não controlará automaticamente a propriedade de.Xauthority
copiando-o para uma pasta temporária (essa é outra coisa que sudo
os frontends gráficos cuidam para você). Mas no caso raro de .Xauthority
inacessibilidade, você receberá um erro informando que sim e poderá corrigir o problema excluindo-o ( sudo rm ~/.Xauthority
), pois ele é regenerado automaticamente. Assim, proteger .Xauthority
a propriedade e as permissões de é menos importante do que proteger a propriedade e as permissões dos arquivos de configuração.
Em contraste com um root
-owned .Xauthority
, quando os arquivos de configuração passam a ser 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 geram erros úteis no console). E às vezes é um incômodo maior para consertar, especialmentese você estiver em uma situação em que deseja que um ou mais arquivos em seu diretório inicial pertençam a alguém que não seja você(porque então você não pode consertar isso simplesmente retornando recursivamente chown
todos os seus arquivos para você mesmo).
Portanto, sudo
(pelo menos sem -H
) não deve ser usado para executar uma aplicação gráficaa menos quevocê está bastante familiarizado com o funcionamento interno do aplicativo e tem certeza de que ele nunca tenta gravar nenhum arquivo de configuração.
Responder2
Simplificando:
Isso evita que os arquivos em seu diretório inicial sejam propriedade do root.
Leia-oaqui. Além disso, possivelmente uma duplicata deQual é a diferença entre “gksudo nautilus” e “sudo nautilus”?
Responder3
Atualização do Ubuntu 19.10
A partir deUbuntu 19.10, digitar sudo some_command
agora tem o mesmo efeito que digitar sudo -H some_command
. Isso significa que o diretório de quaisquer arquivos de configuração tocados estará no /root
diretório e não /home/regular_userID
no diretório (também conhecido como $HOME
).
Isso torna todas essas perguntas e respostas um ponto discutível em grande parte para usuários do Ubuntu 19.10 e superior.
Para ver se sudo
está funcionando sudo -H
em sua distribuição, tente estes pequenos testes:
$ sudo printenv | grep HOME
HOME=/home/rick
$ sudo -H printenv | grep HOME
HOME=/root
Como você pode ver, o desempenho sudo
acima não funciona sudo -H
dessa forma, usar plain sudo
pode danificar os arquivos de configuração do usuário.
Uma alternativa para gksu nautilus
, gksu gedit
ou sudo -H gedit
é usar o nautilus-admin
complemento. Ele permite que você navegue em arquivos e diretórios comNáutiloe abra-os como root (Administrador).
A instalação é simples:
sudo apt install nautilus-admin
Agora, quando estiver no Nautilus, você terá uma opção extra para editar como administrador:
gedit
como root não permite preferências
Ao executar gedit
como root, você não pode usar as preferências configuradas como um usuário normal para paradas de tabulação, conversão de tabulações em espaços, nome da fonte, tamanho da fonte, quebra de linha, etc.
Para resolver isso, escrevi o script sgedit
para herdar as preferências do usuário e aplicá-las ao root:Como posso sincronizar meu gedit root com as preferências do meu usuário gedit?
- Ligue usando
sgedit filename1 filename2 ...
- Obtém as configurações do gedit do usuário para tabulações, fontes, quebra de linha, etc.
- Eleva para
sudo -H
preservar a propriedade do arquivo enquanto obtém poderes de root. - Solicita senha se a última
sudo
tiver expirado. - Obtém as configurações do gedit do sudo
- Compara as diferenças entre as configurações do usuário e do sudo gedit
- Executa gsettings set apenas nas diferenças (reduz 174 comandos set para uma dúzia ou menos. Da próxima vez, talvez seja executado apenas uma ou duas alterações, mas muitas vezes nenhuma alteração.
- Chamadas
gedit
como uma tarefa em segundo plano, de forma que o prompt do terminal reapareça imediatamente.