【发布时间】:2017-04-12 07:33:04
【问题描述】:
我在一个目录中有文件。有些人将 root 作为所有者和组,而某些用户(我)作为所有者和组(但是发生了这种情况)。我跑了sudo chmod 755 -R /usr/casloader,我所有的目录都在/usr/casloader下。所有文件都是-rwxr-xr-x。
我正在尝试编译一个 java 类(作为我的用户) - 如果在所有者/组为 root 的文件上运行 javac,我可以编译得很好。编译类的所有者/组成为我。 (它将编译的类写入同一个文件夹)。
但是如果我尝试编译一个所有者组是我的类,它会给出file write error: Permission Denied。
我该如何解决这个问题?一切都必须是根吗?
【问题讨论】:
-
那不是因为你是群主。可能是因为类文件已经以 root 作为所有者存在。但是您没有提供足够的信息来确定。在任何情况下,使用
chown以root 身份将所有*.java 文件设为您的,然后删除所有*.class 文件,然后重试。 -
该消息清楚地表明这是一个写入问题,因此正在读取的文件的所有权无关紧要。由于您显然对目标目录具有写入权限,因此您可以删除所有现有的类文件,而不管它们的所有者如何,然后再次编译。
-
@Erwin @Holger 我试图创建的类文件不存在,所以现在没有覆盖情况(将来我重新编译时可能会发生)。我
chown.java 文件到root 并且能够编译(该组仍然是我)。当我尝试重新编译时出错,删除了 .class 文件。现在尝试重新编译,但现在我得到同样的旧写权限错误。文件的所有者是根组 me。 -
我的子目录也都是rwxr-xr-x root root
-
所以你的子目录都只能由 root 写。我不确定您为什么希望能够将非 root 用户创建的文件写入仅由 root 拥有和可写的目录中。
标签: java java-8 ubuntu-14.04 file-permissions