温馨提示×

linux java如何设置权限

小樊
41
2026-10-24 09:01:49
栏目: 编程语言

在 Linux 下使用 Java 设置文件/目录权限,常见有 三种方式,取决于你使用的 Java 版本和需求。


一、Java 7+(推荐):使用 Files.setPosixFilePermissions

适用于 Linux / Unix 系统(需要支持 POSIX)。

示例:设置文件为 755

import java.nio.file.*;
import java.nio.file.attribute.*;
import java.util.Set;

public class ChmodExample {
    public static void main(String[] args) throws Exception {
        Path path = Paths.get("/opt/app/test.sh");

        Set<PosixFilePermission> perms = Set.of(
            PosixFilePermission.OWNER_READ,
            PosixFilePermission.OWNER_WRITE,
            PosixFilePermission.OWNER_EXECUTE,
            PosixFilePermission.GROUP_READ,
            PosixFilePermission.GROUP_EXECUTE,
            PosixFilePermission.OTHERS_READ,
            PosixFilePermission.OTHERS_EXECUTE
        );

        Files.setPosixFilePermissions(path, perms);
    }
}

常见权限对照

权限 含义
644 rw-r–r–
755 rwxr-xr-x
600 rw-------

二、兼容方式:调用 Linux chmod 命令

适合 老版本 Java 或快速实现。

Runtime.getRuntime().exec("chmod 755 /opt/app/test.sh");

或更推荐:

new ProcessBuilder("chmod", "755", "/opt/app/test.sh").start();

⚠ 注意:

  • 依赖系统命令
  • 需要运行用户有 chmod 权限

三、Java 6 及以前(不推荐)

只能设置 只读 / 可写,不能设置执行权限:

file.setReadable(true);
file.setWritable(true);
file.setExecutable(true);

❌ 不支持 755 / 644 等完整权限


四、设置文件所有者(可选)

UserPrincipal owner = Files.getFileAttributeView(
        path, UserPrincipalLookupService.class)
    .lookupPrincipalByName("appuser");

Files.setOwner(path, owner);

五、常见错误

  1. 权限不足
    • 当前用户不是文件 owner 或不是 root
  2. Windows 上不支持 POSIX
    • setPosixFilePermissions 会抛异常
  3. 路径不存在
    • 先 Files.exists(path) 判断

六、总结建议

✅ Linux + Java 7+:用 Files.setPosixFilePermissions
✅ 简单脚本场景:ProcessBuilder 调 chmod
❌ 不要用 File.setExecutable 做精确权限控制

如果你有 具体场景(如 Spring Boot、Shell 脚本、Docker),可以告诉我,我给你更贴合的示例。

0 踩