Eu li a documentação da comunidade "RootSudo" e estou interessado nesta linha:
Você nunca deve usar o sudo normal para iniciar aplicativos gráficos como Root.
Por quê? Qual é a diferença? Forneça uma explicação simples, pois sou apenas um usuário de desktop normal.
Respostas:
Os aplicativos gráficos geralmente armazenam configurações e outros dados específicos do usuário em arquivos de configuração gravados na pasta inicial do usuário . Os principais aplicativos de mecanismo usados para determinar o que eles devem usar como pasta pessoal do usuário é a
HOME
variável de ambiente . (Você pode inspecionar você mesmoecho $HOME
).Suponha que você esteja executando
gedit
(um editor de texto gráfico) comoroot
. Se você executarsudo gedit
,HOME
continuará apontando para o diretório inicial, mesmo que o programa esteja sendo executado comoroot
. Consequentemente,gedit
vão escrever arquivos de configuração comoroot
em seu diretório home. Este , por vezes, resultará nos arquivos de configuração a ser detidas porroot
e, portanto, inacessíveis para você (quando posteriormente executar o programa como a si mesmo e não comoroot
). Isso acontece principalmente quando o aplicativo precisa criar um novo arquivo de configuração. Os arquivos criados recentemente, por padrão, pertencem ao usuário que os cria (quem, nesse casoroot
, não é você).Essa é a principal razão pela qual você deve executar aplicativos gráficos com um
sudo
front-end gráfico e não com um straightsudo
. No Ubuntu e na maioria de seus derivados (incluindo Xubuntu e Lubuntu), a interface gráfica padrão égksu
/gksudo
. No Kubuntu ékdesudo
. (Depende do ambiente da área de trabalho que está sendo usado.)Se você deseja usar
sudo
diretamente para executar um aplicativo gráfico comogedit
, pode executar:O
-H
sinalizadorsudo
defineHOME
para apontar pararoot
a pasta pessoal (que é/root
).Isso ainda não resolverá automaticamente a propriedade
.Xauthority
, copiando-a para uma pasta temporária (essa é outra coisa que ossudo
front-end gráficos cuidam de você). Porém, no evento infreqüente que.Xauthority
é inacessível, você receberá um erro dizendo que é e poderá corrigir o problema excluindo-o (sudo rm ~/.Xauthority
), pois ele é regenerado automaticamente. Portanto, proteger.Xauthority
a propriedade e as permissões é menos importante do que proteger a propriedade e as permissões dos arquivos de configuração.Em contraste com a
root
detida.Xauthority
, quando os arquivos de configuração se tornam propriedade comoroot
, nem sempre é tão óbvio qual é o problema (porque programas gráficos, muitas vezes, correr, mas não funciona muito bem, e saída de erros úteis para o console). E, às vezes, é um aborrecimento maior para corrigir, especialmente se você estiver em uma situação em que deseja que um ou mais arquivos em seu diretório pessoal sejam de propriedade de alguém que não seja você (porque você não poderá corrigi-lo simplesmente inserindo recursivamentechown
todos os 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 ele nunca tenta gravar nenhum arquivo de configuração.fonte
sudo chmod -R $USER:$USER ~
Infelizmente, esses critérios nem sempre se aplicam. Se você tiver algum arquivo em que precise preservar o proprietário do grupo, poderá executarsudo chmod -R $USER ~
. Isso geralmente é suficiente. (Se você tiver arquivos precisam ser propriedade de outro usuário em seu diretório home, mesmo que seja um problema.)chmod
Realmente faz isso? Eu sempre pensei que erachown
isso.chmod
nunca fez isso por mim.chown
vez dechmod
nos meus comentários acima. Desculpe por isso - e obrigado por apontar isso!sudo -H echo $HOME
, seu shell - correndo como você, não como root - realiza expansão de parâmetros em$HOME
, obtendo o caminho do seu diretório home, em seguida, passa isso parasudo
, que por sua vez passa o valor já se expandiu paraecho
, que imprime-lo.sudo -H printenv HOME
,,sudo -H bash -c 'echo $HOME'
esudo -H sh -c 'echo $HOME'
todas as impressões/root
. Isso é conceitualmente semelhante - embora por um mecanismo diferente - a comox=a echo "$x"
não é impressoa
(a menos quex
já tenha o valora
).Simplificando:
Leia aqui . Além disso, possivelmente uma duplicata de Qual é a diferença entre "gksudo nautilus" e "sudo nautilus"?
fonte
Uma alternativa para
gksu nautilus
egksu gedit
é usar onautilus-admin
complemento. Ele permite que você navegue em arquivos e diretórios com o Nautilus e depois os abra como root (administrador).A instalação é simples:
Agora, quando você estiver no nautilus, terá uma opção extra para Editar como administrador:
gedit
como root não permite preferênciasAo executar
gedit
como root, não é possível usar as preferências que você configurou como usuário comum para paradas de tabulação, converter guias 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 sincronizar meu root gedit com as preferências do meu usuário gedit?sgedit filename1 filename2 ...
sudo -H
preservar a propriedade do arquivo enquanto obtém poderes de root.sudo
expirou.gedit
como uma tarefa em segundo plano, para que o prompt do terminal reapareça imediatamente.fonte