Создание папки работает, но разрешение не наследуется - PullRequest
1 голос
/ 09 июля 2011

У меня есть часть Java, которая создает папки на сетевом диске (Z :) Сценарий выполняется на сервере A (Windows 2008 R2, работает под учетной записью пользователя «serviceUser») и создает папки на сервере B (Windows 2003)

Корневая папка на сервере B (которая отображается как Z :) имеет специальное разрешение и позволяет «serviceUser» создавать, изменять, удалять, записывать и т. Д. Разрешения устанавливаются для наследования дочернего объекта, поэтому папка создается в Z : должен получить те же разрешения, что и Z: сам.

Мой код создает 2 папки внутри Z: например:

File destination = new File("z:\\folder_1\\");
File destination = new File("z:\\folder_1\\subfolder_1\\");

Папка «folder_1» получает правильные разрешения, а «subfolder_1» - нет. После создания этих папок мне нужно создать файл, но, поскольку «subfolder_1» не получает разрешений, консоль сообщает "Access is denied" при выполнении File fileName = new File("z:\\folder_1\\subfolder_1\\filename.png");

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

Ответы [ 3 ]

1 голос
/ 09 июля 2011

Попробуйте использовать: setReadable () и / или setWritable () в вашей папке2.Это единственный портативный Java-способ контроля прав доступа к файлам.

1 голос
/ 09 июля 2011

Вы пробовали команду mkdirs?Он делегирует ОС для создания всех необходимых каталогов в вашем общем пути.

File destination = new File("z:\\folder_1\\subfolder_1");
destination.mkdirs();
0 голосов
/ 11 июля 2011

Единственный успешный способ, который я нашел для этой работы, - это установить учетную запись пользователя в качестве администратора Сервера B. с полным контролем.

...