为什么在以普通用户身份启动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
答案 0 :(得分:1)
显然,这是一个权限问题。 Root不受权限的困扰;其他人。实际上,有一个例外:权限字段中至少有一个执行位S_IXUSR | S_IXGRP | S_IXOTH(di_flags&〜(S_IFMT))必须为用户启用 - 甚至ROOT - 执行程序。这曾经是'#34;执行" (即,搜索)目录,但不再是。请注意,我将S_IFMT括起来,因为在表达式中包含宏时,应该始终保持超级防御:它们可能是隐藏错误的来源。
我怀疑问题可能是表面上微妙的,但如果您知道目录权限的工作方式,那就不是真的。我愿意为你的非根程序员找到某个某个目录可以搜索,但是不可读。区别在于"搜索"使您能够在目录中找到已知名称的条目,而" read"使您可以像打开目录一样浏览目录。为了发现整个文件集,例如* .java,可以顺序扫描,例如,给定函数的主体,包含目录必须是可读的以及SEARCHable。