Qual é a diferença entre "gksudo nautilus" e "sudo nautilus"?

100

Eu tenho usado gksudo nautiluse sudo nautilusatravés de Alt+ F2.

Qual é a diferença? Eles parecem muito semelhantes!

DrKenobi
fonte
um muito útil explicação / discussão incluindo muitos screenshots: psychocats.net/ubuntu/graphicalsudo
noz sobre natty

Respostas:

113

Retirado daqui :

Você nunca deve usar o normal sudopara iniciar aplicativos gráficos como raiz. Você deve usar gksudo( kdesudono Kubuntu) para executar esses programas. gksudodefine HOME=/roote copia .Xauthoritypara um tmpdiretório. Isso evita que os arquivos no diretório inicial sejam de propriedade da raiz.

Observe que isso é principalmente sobre arquivos de configuração . Se você executar o Nautilus como root, mesmo com gksu/ gksudo, e criar um arquivo ou pasta em qualquer lugar (incluindo no diretório inicial), esse arquivo ou pasta pertencerá root. Mas se você executar Nautilus (ou a maioria dos outros aplicativos gráficos) como rootcom sudo, eles podem salvar seus arquivos de configuração em seu diretório home (em vez de root'diretório home s). Esses arquivos de configuração podem ser de propriedade roote inacessíveis quando você não está executando como root, o que pode atrapalhar gravemente suas configurações e pode até impedir que alguns aplicativos funcionem completamente.

A solução, depois de cometer esse erro, é encontrar os arquivos de configuração e excluí-los ou chownvoltar a pertencer ao seu não rootusuário. Muitos desses arquivos começam com a .ou estão contidos em um diretório que começa com a .. Alguns estão localizados dentro da .configpasta no seu diretório pessoal. Para ver arquivos e pastas que começam com um .no Nautilus, pressione Ctrl+ H(isso mostra os arquivos ocultos .) Para vê-los ls, use o sinalizador -a(ou -A).

Para descobrir se há arquivos que não pertencem a você em seu diretório pessoal, você pode usar o seguinte comando em um terminal:

find $HOME -not -user $USER -exec ls -lad {} \;

que listará todos os arquivos no diretório inicial não pertencentes ao usuário.

Rmano
fonte
1
Eu já usei 'sudo nautilus'. Isso significa que meu diretório pessoal agora pertence à raiz? (PS: meu inglês não é perfeito)
DrKenobi
22
Não, significa que enquanto você executava o Nautilus como root, todos os arquivos que ele criou no diretório inicial serão de propriedade do root. Isso pode incluir miniaturas e outros arquivos de suporte que o Nautilus cria automaticamente.
Ryan Thompson
1
. O segemnet citado que você usou me intrigou desde que o li pela primeira vez; especificamente onde diz: "Isso evita que os arquivos no diretório inicial sejam de propriedade da raiz". .. Testei isso hoje criando alguns arquivos de teste nas versões 10.04, 10.04 (VM), 10.10 (VM) e não importa como iniciei o sudo / gksudo (Terminal-> Nautilus, Terminal-> gedit, Alt + F2 .. .) ... todos os casos fizeram com que o meu recém-criado pertencesse ao "root", com o grupo "root". Talvez eu tenha perdido alguma coisa, mas acho que parte do segmento mencionado é enganosa.
Peter. O
Hmm, eu estava apenas citando a página wiki. Eu realmente não tenho um entendimento profundo da diferença entre as duas ferramentas. Talvez alguém no unix.stakexchange.com possa ajudar?
2
@ Peter.O Expandi esta resposta para responder a essa pergunta e explicar exatamente com quais arquivos os tratados são diferentes sudo, via gksu/ gksudo. (@ChrisWilson Sinta-se livre para reverter ou diminuir esta edição se você sentir que não é totalmente no âmbito da sua resposta ... parece-me que é, mas que é inteiramente sua chamada.)
Elias Kagan
9

Você sabia que existe um complemento do Nautilus chamado nautilus-gksuInstale o nautilus-gksu que adiciona um "abrir como administrador" ao menu de clique direito do nautilus?

Nota: Não disponível no Ubuntu 12.04 em diante.

robin0800
fonte
1
nautilus-gksunão está mais disponível no Ubuntu 12.04 em diante.
IQAndreas
E o seu link mostra apenas que ele está disponível até às 11h10 ...
Wilf
5

Se você iniciar um aplicativo gráfico com o sudo, você pode atrapalhar a propriedade dos seus arquivos, o que pode causar a quebra de seus aplicativos. Nunca faça isso. Verifique a Ajuda da comunidade :

Você nunca deve usar o sudo normal para iniciar aplicativos gráficos como Root . Você deve usar o gksudo (kdesudo no Kubuntu) para executar esses programas. O gksudo define HOME = ~ root e copia .Xauthority para um diretório tmp. Isso evita que os arquivos em seu diretório pessoal sejam de propriedade do Root. (AFAICT, isso é tudo o que há de especial no ambiente do processo iniciado com gksudo vs. sudo).

desgua
fonte
3

Por padrão, o sudo preserva sua variável $ HOME. Por exemplo, se você executar, sudo firefoxvocê terá privilégios de root, mas sua configuração. Se você alterar as configurações nessa situação, você terminará com partes de sua configuração pertencentes à raiz, em vez do seu ID do usuário.

Mark Russell
fonte
Eu gosto da assertividade desta resposta.
Andre Figueiredo
2

sudo -H GUI-application-program

No Ubuntu (17.10) 17.10.1 e, provavelmente, as futuras versões do Ubuntu, gksue gksudoestão obsoletos. Eles trabalham em Xorg, mas não em Wayland. Mas você pode usar sudo -Hpara executar programas aplicativos GUI sem danificar seus arquivos de configuração. Você não usar planície sudo.

Se você estiver executando o Wayland (o novo sistema gráfico que substitui o Xorg), também precisará de um comando xhost.

xhost +si:localuser:root       # if Wayland
sudo -H nautilus --no-desktop

Veja o link a seguir para mais detalhes,

Por que o gksu / gksudo ou o lançamento de um aplicativo gráfico com sudo não funciona com Wayland?

sudodus
fonte
-2

Encontrado no arquivo gerado pelo comando do terminal 'info gksudo':

gksu é um front-end para su e gksudo é um front-end para sudo. Seu objetivo principal é executar comandos gráficos que precisam de raiz sem a necessidade de executar um emulador de terminal X e usar su diretamente.

Descobri que, em muitos casos, os arquivos 'info' têm descrições úteis e informações úteis sobre opções. Eu sugiro fortemente que o aprendizado sobre qualquer comando comece com o acesso ao arquivo 'info' nesse comando.

Para o iniciante, no terminal, digite ou cole as informações do comando com o nome do comando no qual você está interessado como parâmetro. O formato é info [command_name](lembre-se de não incluir o prompt de comando ou os colchetes). As entradas de terminal sugeridas para o iniciante são:

$ info
$ info info
James
fonte
-3

Se você escolher gksudo nautilus, solicite sua senha graficamente. Com o sudo, você pergunta em um terminal

winniemiel05
fonte
6
Essa não é a única diferença, e muitas vezes não é a diferença mais importante. (Veja algumas das outras respostas aqui.)
Elias Kagan