Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse-为什么Android SDK针对普通用户而非root用户出现错误?_Android_Eclipse - Fatal编程技术网

Eclipse-为什么Android SDK针对普通用户而非root用户出现错误?

Eclipse-为什么Android SDK针对普通用户而非root用户出现错误?,android,eclipse,Android,Eclipse,为什么在以普通用户身份启动Eclipse时不会发生此错误,但在以sudo身份启动时不会发生此错误: 我已经检查了所有目录的权限,我可以想象这些目录可能会受到影响,并被发送到我的用户和组id 以下是我熟悉的所有区域的根目录: Folder Specification ------------------------------------------------------------- /opt/android/sdk Android SD

为什么在以普通用户身份启动Eclipse时不会发生此错误,但在以sudo身份启动时不会发生此错误:

我已经检查了所有目录的权限,我可以想象这些目录可能会受到影响,并被发送到我的用户和组id

以下是我熟悉的所有区域的根目录:

Folder                   Specification
-------------------------------------------------------------
/opt/android/sdk          Android SDK
/opt/eclipse/eclipse      Eclipse
~/myeclipse               Eclipse specific configuration area
~/workspace               Source workspace
以下是为确保分配我的用户和组ID而发出的命令:

$ sudo chown -R ljames:ljames /opt/android/sdk
$ sudo chown -R ljames:ljames /opt/eclipse/eclipse
$ sudo chown -R ljames:ljames ~/myeclipse
$ sudo chown -R ljames:ljames ~/workspace
有人能告诉我还有什么可能导致这种情况吗 许可问题

我还对所有子目录执行了这个命令,以查找不属于我的用户ID的任何文件或目录

$ sudo find /opt/android/sdk ! -user ljames 
$ sudo find /opt/eclipse/eclipse ! -user ljames 
$ sudo find ~/myeclipse ! -user ljames 
$ sudo find ~/workspace ! -user ljames 

显然,这是一个权限问题。Root用户没有权限问题;其他的是。实际上,有一个例外:权限字段(di_flags&~(s_IFMT))中的至少一个执行位s_IXUSR | s_IXGRP | s|IXOTH必须打开,用户(甚至ROOT用户)才能执行程序。对于“执行”(即搜索)目录来说,这过去是正确的,但现在不再是。请注意,我在S_IFMT中加了括号,因为在表达式中合并宏时,应该始终采取极端防御措施:它们可能是不明bug的来源


我怀疑问题可能是表面上很微妙,但如果您知道目录权限是如何工作的,则实际上并非如此。我愿意打赌,某个地方的某个目录对您的非根程序员是可搜索的,但不可读。不同之处在于,“搜索”使您能够在目录中查找已知名称的条目,而“读取”使您能够像打开目录一样浏览目录。为了发现整个文件集,例如,*.java,可以顺序扫描给定函数的主体,包含的目录必须可读且可搜索。

谢谢!我用更正更新了我的问题。在键入我执行的命令时,我错误地漏掉了“-R”。当以root用户身份运行时,相当多的文件归root用户所有。运行
chown-R
返回到我的用户ID后,非root用户所有。我的理解是,如果文件是一个执行者文件,那么它的所有者拥有执行它的完全权限。我同意这很可能是许可问题。但是除了我在问题中列出的文件之外,我不知道需要检查哪些文件。好的第一篇文章,只是有点难读。请考虑阅读