You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

目录权限非777时Java程序读取文件触发AccessDeniedException问题

问题原因与解决方法

核心问题:目录缺少执行权限

Linux系统中,要访问目录内的文件,目录本身必须具备执行权限(x)——这个权限的作用是允许用户进入目录并访问其中的文件/子目录,和文件的执行权限意义完全不同。

看你给出的目录权限:

drw-r----- 2 wfadmin   wfgroup   4096 Dec 16 15:31 ignite

drw-r-----对应的权限数值是640,所有者wfadmin对该目录只有读(r)和写(w)权限,缺少关键的执行(x)权限,所以即便你是文件所有者,也无法访问目录内的truststore.jks文件。

而当你把目录改成777时,相当于给所有用户都开了rwx权限,自然能绕过这个限制,但这会带来严重的安全风险。

正确的权限设置

给ignite目录添加所有者的执行权限,同时保持安全的权限范围,执行以下命令:

chmod u+x /usr/WF/WF_PPRB/SSL/certs/ignite

修改后目录权限会变成drwxr-----(数值750),这样:

  • 所有者wfadmin拥有读、写、执行权限,能正常访问目录内的文件
  • 同组用户wfgroup拥有读和执行权限(按需调整)
  • 其他用户无任何权限,保持安全性

验证

修改权限后,再执行你的Java代码Files.readAllBytes(Paths.get("/usr/WF/WF_PPRB/SSL/certs/ignite/truststore.jks")),就能正常读取文件,不会再触发AccessDeniedException。

内容的提问来源于stack exchange,提问作者vladimir vyatkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:50:22