【问题标题】:java- How do programmatically change user to root before changing file permissions?java-如何在更改文件权限之前以编程方式将用户更改为root?
【发布时间】:2019-03-14 18:25:38
【问题描述】:

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

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

我发现我无法将文件权限设置为用户,因为该文件归根用户所有。我的问题是:是否可以通过在 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);

  }

【问题讨论】:

    标签: java file-permissions


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-20
      • 1970-01-01
      • 2014-10-13
      • 2015-10-17
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      相关资源
      最近更新 更多