2016-11-28 127 views
0

我在一个目录中有文件。一些人拥有作为所有者和群体的根,以及一些用户(我)作为所有者和群体(但是发生了这种情况)。我跑了sudo chmod 755 -R /usr/casloader,我所有的目录都在/usr/casloader之下。所有文件都是-rwxr-xr-x文件权限问题javac

我想编译一个java类(如我的用户) - 如果在所有者/组为root的文件上运行javac,我可以很好地编译。编译后的类的所有者/组成为我。 (它将编译后的类写入同一个文件夹)。

但是,如果我尝试编译所有者组是我的类,它会给出file write error: Permission Denied

我该如何解决这个问题?一切都必须是根?

+0

这不是因为您是集团所有者。可能是因为类文件已经以root身份作为所有者存在。但是你没有提供足够的信息来确定。在任何情况下,使用'chown'作为root用来创建所有* .java文件,然后删除所有* .class文件,然后重试。 –

+0

明确指出这是一个写入问题,因此正在读取的文件的所有权是不相关的。由于您显然拥有目标目录的写入权限,因此可以删除所有现有的类文件,而不管其所有者,然后再次编译。 – Holger

+0

@Erwin @Holger我想创建的类文件不存在,所以现在没有覆盖情况(将来可能会发生在我重新编译时)。我把.java文件放到根目录下,并且能够编译(该组仍然是我)。当我尝试重新编译出错时,删除了.class文件。试着现在重新编译,但现在我得到相同的旧的写权限错误。文件的所有者是root用户组。 –

回答

0

我刚刚做了g + w,o + w和-R。所以我有rwxrwxrwx - 所以问题解决了。 (不知道这是否是最理想的解决方案。)