Que coisas ruins específicas acontecem quando o gedit é usado com o sudo?

6

Eu li esta resposta explicando que "algumas vezes" root pode possuir algo no diretório /home/$USER .

Alguém pode dar um exemplo de como provar isso? Basta dar um caso de teste quando algo realmente ruim acontece, quando eu corro

sudo gedit /etc/rc.local

edite o arquivo e salve.

Eu tenho muitos downvotes tentando ajudar o OP a sair e comentários cheios de dizer que é crime rodar o gedit com o sudo.

Alguém pode dar um exemplo real?

Eu expliquei claramente por que essa pergunta não é uma duplicata. Não há resposta específica para o gedit à questão vinculada.

E é importante explicar por que o amplamente usado sudo gedit é ruim ou não, etc.

    
por Pilot6 05.06.2015 / 23:21

2 respostas

10

Em relação a sudo gedit , nada terrível, apenas prática ruim, especialmente nos últimos tempos. Quanto mais difícil seria sugerir sudo -H gedit ?

O que faz acontecer?

Você recebe alguns arquivos de propriedade raiz em sua pasta pessoal. Um ( recently-used.xbel ) provavelmente retornará à propriedade do usuário. Isso pode acontecer quando um arquivo é excluído e recriado. Para ver qual sudo gedit foi alterado, execute find ~ -user root -group root e veja o que é retornado. Por padrão, isso deve ser nada.

Com esse comando, você pode ver alguns arquivos de propriedade do root. Um seria um novo .file , .gvfs e, mais cedo ou mais tarde, um ~/.cache/dconf de propriedade da raiz e o recently-used.xbel supracitado.

Então, não há 'o céu está falhando', mas ainda assim. Agora tem havido relatos de que o uso contínuo causa outros problemas, mas não vai reivindicar o que não vejo aqui.

Observe também que a partir de 13.10 a sudo gedit usará a configuração gedit do usuário em vez da configuração gedit do root. Novamente apenas a má prática, então por que continuar a fazê-lo ou sugerir que outros o façam?

    
por doug 06.06.2015 / 01:10
9

Bem, talvez seja uma fantasia, mas há várias pessoas dizendo a mesma coisa:

Por que devo usar o gksudo para Gtk? aplicativos em vez de sudo?

  

Existem outras ocasiões, no entanto, em que os efeitos colaterais podem ser tão leves quanto as extensões do Firefox não se estragarem ou tão extremas quanto a impossibilidade de efetuar login, pois as permissões da autoridade do .ICE foram alteradas.

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

  

Suponha que você esteja executando o gedit (um editor de texto gráfico) como root. Se você executar o sudo gedit, o HOME continuará apontando para o seu diretório pessoal, mesmo que o programa esteja sendo executado como root. Consequentemente, o gedit gravará arquivos de configuração como root em seu diretório inicial. Isso às vezes resultará na configuração dos arquivos pertencentes a root e, portanto, inacessíveis a você (quando você executar o programa posteriormente como você mesmo e não como root).

Como executar uma GUI programar como um usuário diferente (Debian)?

  

Primeiro, não use sudo ou su para mudar os usuários para executar um processo gráfico, ou você está sujeito a ter problemas no final da linha (~ /. O proprietário de mudança de autoridade é um problema notável). Em vez disso, crie um atalho que use o seguinte comando:

Executando o Sudo Graficamente

  

Bem, para ser perfeitamente honesto, a maior parte do tempo não é. Para muitas aplicações, você pode executá-las de maneira inadequada - usando o sudo para aplicações gráficas e não vê efeitos colaterais adversos.

     

...

     

Esses erros ocorrem porque, às vezes, quando sudo inicia um aplicativo, ele é iniciado com privilégios de root, mas usa o arquivo de configuração do usuário.

Este arquivo de mensagens também pode ser do seu interesse.

Então, vamos testá-lo.

2 novas caixas virtuais. Ubuntu 14.04. Nunca corra o firefox neles. O que acontecerá quando eu executar o comando sudo firefox ?

tim@Hairy14CVB:~$ sudo firefox    
(process:4857): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed

...

[email protected]:2192:13

Este é o mesmo (ou pelo menos muito semelhante) para ambas as caixas virtuais. Enquanto o firefox estava rodando, eu instalei uma extensão do youtube - uma em destaque. Então fechei o firefox e verifiquei a saída.

tim@Hairy14CVB:~$ ls -la .ICEauthority 
-rw------- 1 tim tim 1336 Jun  4 21:31 .ICEauthority

Bem, .ICEauthority está bem! No entanto ...

tim@Hairy14CVB:~$ ls -la | grep root
drwxr-xr-x  3 root root 4096 Jun  1 20:49 ..
drwx------  3 root root 4096 Jun  5 22:41 .dbus
drwx------  4 root root 4096 Jun  5 22:41 .mozilla

3 coisas na minha pasta pessoal ( /home/tim/ ) são de propriedade da raiz ( .. , .dbus e .mozilla ). Este é o mesmo (ou pelo menos muito semelhante) para ambas as caixas virtuais.

Então, isso importa. Eu não tinha certeza, então eu corri o firefox, assim:

tim@Hairy14CVB:~$ firefox

(process:4959): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed
Error: Access was denied while trying to open files in your profile directory.

E esse erro desagradável:

Para a saída completa do terminal (incluindo o babble firefox), veja estes dois pastebins, aqui e aqui .

Eu ainda posso rodar o firefox como root pelo caminho. Mas agora mais arquivos foram alterados:

tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x  4 root root  4096 Jun  3 19:46 ..
drwx------  3 root root  4096 Jun  5 22:55 .adobe
drwx------  3 root root  4096 Jun  5 22:40 .dbus
drwx------  3 root root  4096 Jun  5 22:55 .macromedia
drwx------  4 root root  4096 Jun  5 22:40 .mozilla

Foi porque carreguei uma imagem para imgur.com? Não tenho certeza.

Como consertei isso? %código%. Eu não entendo, mas internet disse para fazê-lo, e é uma caixa virtual tão yolo .

sudo chown -R tim:tim /home/tim/

E isso consertou. Agora a saída é apenas o arquivo chown :

tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x  4 root root  4096 Jun  3 19:46 ..

E isso é o mesmo no meu computador real. Ah, e no meu virtualbox do Kubuntu:

tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x  3 root root  4096 May 16 14:10 ..

Que eu nunca executei um comando sudo. Então tudo está bem. Apenas não execute .. em um aplicativo GUI.

Teste final: execute-o com os sinalizadores sudo e -H :

sudo -H firefox

e

sudo -i firefox

E boas notícias! Ainda assim, a única "coisa" de raiz é -i . E posso executar .. sem raiz.

O OP quer que eu fale sobre o Gedit.

eu corri

sudo gedit

Em seguida, instalamos alguns plugins aleatórios. Esta foi a saída:

tim@Hairy14VB:~$ ls -la | grep root
ls: cannot access .gvfs: Permission denied
drwxr-xr-x  4 root root   4096 Jun  3 19:46 ..

Observe que nem consigo ver a propriedade de firefox , então fiz isso:

tim@Hairy14VB:~$ sudo ls -la | grep root
drwxr-xr-x  4 root root   4096 Jun  3 19:46 ..
dr-x------  2 root root      0 Jun  6 10:05 .gvfs

Portanto, a execução de .gvfs altera um arquivo no meu diretório inicial para o root.

Ainda consigo abrir o gedit, mas desta vez recebo algum lixo:

(gedit:7422): Gtk-WARNING **: Attempting to read the recently used resources file at '/home/tim/.local/share/recently-used.xbel', but the parser failed: Failed to open file '/home/tim/.local/share/recently-used.xbel': Permission denied.

E isso sugere que há outro arquivo ( sudo gedit ) que foi alterado. Eu acho que esta é a lista de arquivos usada recentemente e (sorte acho) agora não tenho mais a minha lista de arquivos usados recentemente:

Deve haver um arquivo chamado ~.local/share/recently-used.xbel .

    
por Tim 06.06.2015 / 00:12