修复所有权

修复所有权

当我开始从 Unity 启动器我收到此消息:

Could not find the folder 'tools' inside SDK '/home/engine/android-sdks/'

但是当我在终端中输入

sudo eclipse

它工作正常,运行后

sudo chown -R $USER:$USER ~

我懂了:

/home/engine/.gvfs : Permission denied

之后我尝试过:

engine@Engine:~$ ls -al /home/engine/android-sdks/

我得到了这个:

total 36
drwxrwxr-x  5 engine engine  4096 Jul 31 22:17 .
drwx------ 57 engine engine 20480 Aug 11 10:26 ..
drwxrwxr-x  2 engine engine  4096 Jul 31 22:17 add-ons
drwxrwxr-x  2 engine engine  4096 Jul 31 22:17 platforms
drwxrwxr-x  2 engine engine  4096 Jul 31 22:17 temp

谢谢 伊莱亚·卡根

这有什么原因吗?

答案1

这里可能发生了两件事:

  • 所有权:位于用户主目录中的文件可能归所有root,但实际上它们应该归用户所有。

  • 地点:文件可能位于root的主目录 ( /root) 中,但它们应该位于用户的主目录中。(OP 已经弄清楚了这一点,但接受了这个答案,因此我对其进行了扩充,以包括此内容,以便其他遇到此问题的人受益。)

修复所有权

sudo eclipse以 Eclipse 形式运行root,但仍使用你的(即不是root的)主目录来保存其文件。由于它以 的身份运行root,因此它创建的文件是拥有,而root除 之外的用户则root无法访问它们。结果是,如果您运行sudo eclipse一次,Eclipse 可以仅有的sudo eclipse之后通过直到问题解决。

这实际上并不是权限问题,这是一个所有权问题,解决方案是重新获得受影响文件和文件夹的所有权。通常情况下,成为全部主文件夹中的文件。因此,使用 Eclipse不是正在运行,运行此命令:

sudo chown -R $USER:$USER ~

$USERshell 会将 扩展为您的用户名,因此您可以按原样运行该命令。或者,如果您想$USER用实际用户名(在本例中为engine)替换 ,也可以这样做。

该命令的工作原理:

  • chown是更改文件和目录所有权的命令。
  • ~是 shell 对你的主目录的简写。
  • -R意味着它不仅仅是改变你的主目录的所有权,而且该操作是应用递归地,包含于您的主目录中任何位置的所有文件。
  • 第一个$USER表示您将成为文件的所有者。第二个$USER(在 之后:)表示您的用户组(使用您的用户帐户创建的组,将成为您文件的默认组所有者)将成为组所有者。

备查:

  • 如果你必须运行图形应用程序root,你应该使用图形sudo前端喜欢gksu/gksudo或者kdesudo。这会将$HOME环境变量设置为/root--root的主目录。(它还会复制~/.Xauthority
  • 但是,出于安全原因,最好不要以 身份运行复杂的应用程序,例如 Eclipse 或 Firefox。root某些图形实用程序必须以 身份运行才能root工作,但 Eclipse 不是管理工具,您永远不需要以 身份运行它root。如果您这样做,那就出问题了。

固定位置

正如@Engine所写:

问题不在于整个目录,而只是文件夹/toolsandroid-sdks。我从根文件夹复制了它,然后我使用以下命令授予我的用户所有权:

chown -R $USER:USER ~

也就是说,当eclipse作为运行时root,它(至少在某个时候)使用了root的主目录(而不是用户的主目录),并且 Android SDK 存储在的root主目录中。

  • 要么这样,要么可以像root之前一样手动安装 Android SDK。

为了其他有同样问题的人的利益:

  • tools可以使用以下命令从内部复制该文件夹/root

    sudo cp -R /root/android-sdks/tools ~/android-sdks/
    
  • 或者你可以移动文件tools夹(而不是复制):

    sudo mv /root/android-sdks/tools ~/android-sdks/
    

然后如上所述修复所有权。或者,仅针对重新定位的tools文件夹,使用:

sudo chown -R $USER:$USER ~/android-sdks/tools

答案2

是的,我知道这个问题。

检查/更改文件夹的权限。(使用 755。)

相关内容