为什么使用 PosixFilePermission 设置目录权限不起作用

2023-12-11

下面是我的代码:

String DirectoryPath = "/Users/xxx/uploads/image";
Path newDirectoryPath = Paths.get(DirecotryPath);

if (!Files.exists(newDirectoryPath)) {
    Set<PosixFilePermission> permissions = PosixFilePermissions.fromString("rwxrwxrwx");
    FileAttribute<Set<PosixFilePermission>> fileAttributes = PosixFilePermissions.asFileAttribute(permissions);
    Files.createDirectories(newDirectoryPath, fileAttributes);
}

创建目录后,该目录的权限不是777。


正是因为实际umask执行用户的设置。

From Posix文件属性视图

当在文件创建时设置访问权限时,权限的实际值可能与属性对象的值不同。其原因是特定于实现的。例如,在 UNIX 系统上,进程具有影响新创建文件的权限位的 umask。如果实现支持访问权限设置,并且底层文件系统支持访问权限,则要求实际访问权限的值等于或小于提供给 createFile 或 createDirectory 方法的属性值。换句话说,该文件可能比所要求的更安全。

example

POSIX.java

// add the omitted import statements
public class Posix {

    public static void main(String[] args) throws IOException {
        Path newDirectoryPath = Paths.get("/tmp/image");
        Files.deleteIfExists(newDirectoryPath);
        Set<PosixFilePermission> permissions
                = PosixFilePermissions.fromString("rwxrwxrwx");
        FileAttribute<Set<PosixFilePermission>> fileAttributes
                = PosixFilePermissions.asFileAttribute(permissions);
        Files.createDirectories(newDirectoryPath, fileAttributes);
    }
}

在外壳中执行

$ cd /tmp
$ javac Posix.java

$ umask 001
$ java Posix
$ ls -ld image/

drwxrwxrw-. 2 suboptimal suboptimal 6 Jul  5 12:38 image/

$ umask 002
$ java Posix
$ ls -ld image/

drwxrwxr-x. 2 suboptimal suboptimal 6 Jul  5 12:38 image/

$ umask 004
$ java Posix
$ ls -ld image/

drwxrwx-wx. 2 suboptimal suboptimal 6 Jul  5 12:38 image/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么使用 PosixFilePermission 设置目录权限不起作用 的相关文章

随机推荐

  • 使用 objshell.run 时找不到文件 -- vbscript

    当我尝试运行脚本时 它会抛出文件不存在的错误 在脚本上它确实回显文件存在 曾尝试过 objshell run apppath 但没有运气 请帮忙 Set objFSO CreateObject Scripting FileSystemObj
  • PySide 将信号从 QThread 传递到另一个 QThread 中的槽

    我通过移动解决了我的问题mySubQThread run 进入myQThread run 也就是说 我仍然想知道为什么我之前尝试的方法不起作用 我对线程很陌生 我遇到了这个问题 我认为我可能处理问题的方式是错误的 无论如何 我对不同的方法持
  • 安装 psycopg2 时,在 venv 上使用 pip 时,“错误:--plat-name 必须是 ('win32'、'win-amd64'、'win-arm32'、'win-arm64') 之一”

    点版本 23 1 1 Python版本 3 9 11 操作系统 Windows 11 我的python项目已创建 并使用env作为虚拟环境 psycopg2 安装失败 根据日志 psycopg2 构建轮子失败 并且还显示 不推荐使用许可证文
  • MGO:无法规范化查询:BadValue 未知运算符:$meta

    我正在使用 MGO 与 mongodb 进行通信 我想在集合中搜索 并按搜索分数对结果进行排序 collection Find bson M text bson M search mysearch score bson M meta tex
  • 当位置发生变化时如何获取位置

    我想知道有没有一种方法可以在位置发生变化时获取位置 我知道android提供了这个http developer android com training location receive location updates html获取位置更
  • Oracle - 修改现有表以自动增加列

    我有一个包含以下列的表 NOTEID NUMBER NOT NULL 出于所有意图和目的 此列是主键 该表有几千行 每行都有一个唯一的 ID 以前 应用程序会从表中 SELECT MAX 值 加一 然后将其用作下一个值 这是一个可怕的解决方
  • Android Studio ActionBar 宽度/图标位置

    I have a problem with my ActionBar that results in my menu icon being pressed up against the edge of the screen 下面是我调整过的
  • 从价格中删除无效字符

    我有一个场景 我必须使用 C 从价格字符串中删除某些字符 我正在寻找一个正则表达式来删除这些字符或比这更好的东西 例如 如果价格字符串是 3 950 000 Ex TAX 我想删除 Ex TAX 从字符串中 基本上我必须从字符串中删除除数字
  • v-for prop 值未通过引导模式更新

    我有以下代码片段 div class list group item media div
  • 计算在 Apple 地图中完成旅程所需的时间

    我正在 MKMapView 上工作以获取两个位置之间的方向 有什么方法可以获取完成此旅程所需的时间 是否有任何内置属性MKRoute or MKDirection可以为我提供时间来完成这段旅程的课程吗 任何帮助 将不胜感激 谢谢 维卡斯 Y
  • 将 2D 数组复制到已知可变宽度的 GPU

    我正在研究如何将每行可变宽度的 2D 数组复制到 GPU 中 int rows 1000 int cols int host matrix malloc sizeof int rows int d array int length Each
  • Apache:如何在 Alias 中使用重写引擎

    我有这个别名配置 Alias test D WWW Test
  • 从经过身份验证的站点获取文件(使用 python urllib、urllib2)

    我正在尝试从网站获取查询的 Excel 文件 当我输入直接链接时 它将进入登录页面 输入用户名和密码后 它将自动下载 Excel 文件 我试图避免安装不属于标准 python 的附加模块 该脚本将在 标准化机器 上运行 如果未安装该模块 它
  • C/C++ 中的“@”和“$”代表什么? [复制]

    这个问题在这里已经有答案了 到目前为止 在 MinGW 中 似乎只是一个基本字符 如 a 可以在名称 变量 函数等 中使用 但它看起来并不像一个 使用 作为我缺少的名称的一部分是否有一些隐藏功能 int m 2 printf m i m 控
  • 三指针数组的 C# 包装器

    我目前正在开发一个 C 包装器 以便与 Dallmeier Common API light 一起使用 请参阅之前的帖子 C 包装器和回调 我几乎已经 包装 了所有内容 但我坚持包装一个回调 其中包含一个由三个指针组成的数组和一个数组整数
  • 更新文件或文件夹修改日期

    当文件和文件夹从一个位置复制到另一个位置时 我需要更新文件和文件夹的 修改日期 属性 以便 修改日期 当前系统时间 我有一台装有 Windows 7 的电脑 但我没有管理权限 因此无法安装任何自定义实用程序 我当前的bat文件使用XCOPY
  • EF4 生成数据库

    我正在尽最大努力寻找最简单的方法来创建基本的 模型优先 实体框架示例 然而 我正在努力解决数据库的实际生成问题 特别是针对数据库运行 SQL Tools 视觉工作室2010 SQL Server 2008 Express Process 创
  • 如何在 dart 构建中启用 --enable-experimental-mirrors?

    我的项目构建失败了 因为它们依赖于镜像 而 dart build out put 告诉我使用 enable experimental mirrors尝试在 dart2js 代码中按原样使用镜像 所以如果我跑pub build enable
  • 通过线性布局移动图像

    我正在开发一个 Android 2 2 应用程序 我想将图像从屏幕左侧移动到屏幕右侧 我怎样才能做到这一点 我读到我必须将此图像添加到 ListView 或 GridView 才能设置此动画 UPDATE我创建了以下文件 动画 transl
  • 为什么使用 PosixFilePermission 设置目录权限不起作用

    下面是我的代码 String DirectoryPath Users xxx uploads image Path newDirectoryPath Paths get DirecotryPath if Files exists newDi