为啥在 Java 7 中未正确设置文件写入权限?
Posted
技术标签:
【中文标题】为啥在 Java 7 中未正确设置文件写入权限?【英文标题】:Why file writing permission is not set correctly in Java 7?为什么在 Java 7 中未正确设置文件写入权限? 【发布时间】:2013-06-08 21:30:28 【问题描述】:有人可以解释一下,为什么在 Ubuntu 13.04 和 java 1.7(OpenJDK 64 位)上的以下代码 sn-p 没有为其他人设置写入权限。其他所有权限都设置正确,除了写给别人,我认为这是可疑的。
public void testCreateFileWithPermissions() throws IOException
Path target = Paths.get(TEST_FILE);
cadf.createFileWithPermissions(target, "rwxrwxrwx");
Set<PosixFilePermission> perms = Files.getPosixFilePermissions(target);
for (PosixFilePermission perm : perms)
System.out.println(perm.toString());
public void createFileWithPermissions(Path target, String permissions)
throws IOException
Set<PosixFilePermission> perms = PosixFilePermissions
.fromString(permissions);
FileAttribute<Set<PosixFilePermission>> attr = PosixFilePermissions
.asFileAttribute(perms);
Files.createFile(target, attr);
我得到以下输出:
OWNER_WRITE
OTHERS_EXECUTE
GROUP_READ
OWNER_READ
GROUP_EXECUTE
GROUP_WRITE
OWNER_EXECUTE
OTHERS_READ
【问题讨论】:
可能是 umask ?...您的环境中的 umask 是什么。 谢谢!你是对的,我的 umask 是0002
。我不知道 umask
和它的功能。
【参考方案1】:
根据 CPU 100 的评论,我快速搜索了umask
,结果发现我使用的是默认值,即0002
。因此,我无法为其他用户创建任何具有写入权限的文件。
这是umask的一个很好的解释。
【讨论】:
【参考方案2】:由于我无法更改 umask,因此我在创建文件后使用 Files.setPosixFilePermissions(Path, Set<PosixFilePermission>)
。
【讨论】:
在ubuntu上换了umask还是不行以上是关于为啥在 Java 7 中未正确设置文件写入权限?的主要内容,如果未能解决你的问题,请参考以下文章
Linux主机安装网站系统时目录写入权限已经设置为777为啥还显示不可写呢?
为啥在 LibreOffice Calc 中未正确检测到单元格增量