В Java, как установить владельца файла как root? - PullRequest
0 голосов
/ 01 октября 2019

Я использую MacOS, и это мой пример кода:

@Component
public class HealthFileSystemServiceImpl {
    public HealthCommonConf saveYml(HealthCommonConf healthCommonConf) throws IOException {
        Files.setOwner(Paths.get(myFilePath), FileSystems.getDefault().getUserPrincipalLookupService().lookupPrincipalByName("root"));
    }
}

И я получаю это сообщение об исключении:

java.nio.file.FileSystemException: /tmp/jmuser/healthService/monitor/Test-Jmsight-id_Test-Health-Name.yml: Operation not permitted

    at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:100)
    at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
    at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
    at java.base/sun.nio.fs.UnixFileAttributeViews$Posix.setOwners(UnixFileAttributeViews.java:268)
    at java.base/sun.nio.fs.UnixFileAttributeViews$Posix.setOwner(UnixFileAttributeViews.java:290)
    at java.base/sun.nio.fs.FileOwnerAttributeViewImpl.setOwner(FileOwnerAttributeViewImpl.java:100)
    at java.base/java.nio.file.Files.setOwner(Files.java:2163)

Как мне решить эту проблему?


Редактировать

Среда :

  1. Я использую IntelliJ и пытаюсь запустить свой JUnitфайл теста.
  2. healthTcpConfRepository.findById(1L) возвращает true.
  3. myFilePath существует.

@Autowired
private HealthFileSystemServiceImpl healthFileSystemService;

@Test
public void saveConf() throws IOException {
    healthFileSystemService.saveYml(healthTcpConfRepository.findById(1L).orElse(null));
}

Ответы [ 2 ]

1 голос
/ 01 октября 2019

Пожалуйста, убедитесь, что ваша IDE, то есть IntelliJ IDEA, работает с привилегиями root во время выполнения приложения.

Если вы запускаете его из командной строки / терминала, то оно также должно выполняться сroot.

0 голосов
/ 01 октября 2019

Спасибо за @ Azeem.

Когда я запускаю как root с терминалом, оно передается.

root# mvn clean test -Dtest={myPackage}.HealthFileSystemServiceImplTest#saveConf
...