java-如何在更改文件权限之前以编程方式将用户更改为root用户?

时间:2018-10-09 22:19:30

标签: java file-permissions

在Java中,我想动态更改Linux文件的文件许可权。我尝试按照其他来源How do I programmatically change file permissions?的建议使用Files.setPosixFilePermissions进行设置,但出现错误

  

java.nio.file.FileSystemException::不允许操作

我发现我无法以用户身份设置文件权限,因为该文件由root拥有。我的问题是:是否可以通过在Java中从用户切换为root来执行Files.setPosixFilePermissions?然后在完成后再切换回用户?

这是我的大部分代码:

String path = "/usr/local/bin/driver";
try {
  Utility.setAsExecutable(path);
} catch (IOException e) {
  logger.error("Unable to set driver as executable.");
  e.printStackTrace();
}

  public static void setAsExecutable(String filePath) throws IOException {

    // using PosixFilePermission to set file permissions 755
    Set<PosixFilePermission> perms = new HashSet<PosixFilePermission>();
    perms.add(PosixFilePermission.OWNER_READ);
    perms.add(PosixFilePermission.OWNER_WRITE);
    perms.add(PosixFilePermission.OWNER_EXECUTE);

    perms.add(PosixFilePermission.GROUP_READ);
    perms.add(PosixFilePermission.GROUP_EXECUTE);

    perms.add(PosixFilePermission.OTHERS_READ);
    perms.add(PosixFilePermission.OTHERS_EXECUTE);

    Files.setPosixFilePermissions(Paths.get(filePath), perms);
    logger.info("Modified as executable " + filePath);

  }

1 个答案:

答案 0 :(得分:2)

无法更改正在运行的进程(无论是JVM还是其他任何东西)的所有者。

但是,您可以生成一个新的特权进程来执行“脏”工作。