Pode haver duas coisas acontecendo aqui:
-
Propriedade : os arquivos localizados no diretório pessoal do usuário podem pertencer a
root
, quando eles devem pertencer ao usuário. -
Localização : os arquivos podem estar localizados no diretório pessoal de
root
(/root
) quando eles devem estar localizados no diretório pessoal do usuário. (O OP descobriu isso, mas aceitou essa resposta, então eu a acrescentei para incluir isso em benefício de outras pessoas que estão enfrentando esse problema.)
Como fixar a propriedade
sudo eclipse
executa o Eclipse como root
, mas ainda usa o seu (isto é, não root
's) diretório home para salvar seus arquivos. Como ele é executado como root
, os arquivos criados são de propriedade por root
, e os usuários que não sejam root
não podem acessá-los. O resultado é que, se você executar sudo eclipse
uma vez, o Eclipse só poderá ser executado em sudo eclipse
, até que o problema seja corrigido.
Este não é um problema permissões , é um problema propriedade , e a solução é retomar a propriedade dos arquivos e pastas afetados. Geralmente é seguro ser o proprietário de todos os arquivos dentro de sua pasta pessoal. Então, com o Eclipse não em execução, execute este comando:
sudo chown -R $USER:$USER ~
$USER
será expandido pelo shell para seu nome de usuário, para que você possa executá-lo exatamente como está. Como alternativa, se você quiser substituir $USER
pelo seu nome de usuário real (nesse caso, engine
), isso também funcionará.
Como esse comando funciona:
-
chown
é o comando para alterar a propriedade de arquivos e diretórios. li> -
~
é uma abreviação de shell para seu diretório inicial. -
-R
significa que não é apenas alterar a propriedade do seu diretório inicial, mas que a operação é aplicar recursivamente a todos os arquivos contidos em qualquer lugar dentro do seu diretório pessoal. - O primeiro
$USER
significa que você será o proprietário dos arquivos. O segundo$USER
(após o:
) significa que o grupo do usuário (o grupo criado com sua conta de usuário, para ser o proprietário do grupo padrão dos seus arquivos) será o proprietário do grupo.
Para referência futura:
- Se você precisar executar um aplicativo gráfico como
root
, use um gráficosudo
frontend comogksu
/gksudo
oukdesudo
. Isso define a variável de ambiente$HOME
como% home/root
-root
. (Também faz uma cópia de~/.Xauthority
.) - No entanto, é melhor não executar aplicativos complexos como o Eclipse ou o Firefox como
root
, por motivos de segurança. Alguns utilitários gráficos devem ser executados comoroot
para funcionar, mas o Eclipse não é uma ferramenta de administração e você nunca deve precisar executá-lo comoroot
. Se você fizer, algo está errado.
Localização de correção
Como @Engine escreveu:
The problem wasn't the whole directory, but only the folder
/tools
inandroid-sdks
. I copied it from the root folder and then I gave my user the ownerships rights with:chown -R $USER:USER ~
Isso significa que, quando eclipse
foi executado como root
, ele tinha (pelo menos em algum momento) usado o diretório base de root
(não o diretório base do usuário) e o Android SDK foi armazenado dentro do diretório pessoal do root
.
- Ou o SDK do Android pode ter sido instalado manualmente como
root
.
Para o benefício de outras pessoas com este problema:
-
A pasta
tools
pode ser copiada de dentro de/root
com:sudo cp -R /root/android-sdks/tools ~/android-sdks/
-
Ou você pode mover a pasta
tools
(em vez de copiar) com:sudo mv /root/android-sdks/tools ~/android-sdks/
Em seguida, corrija a propriedade conforme descrito acima. Ou apenas para a pasta tools
realocada, com:
sudo chown -R $USER:$USER ~/android-sdks/tools