Ubuntu Tomcat CIFS: разрешить пользователю tomcat писать файл с помощью сервлета

1

У меня есть следующая настройка среды.

Server: Ubuntu    
App Server: Tomcat7
Java: JDK 7

Сервлету необходимо записать файл в папку монтирования. Tomcat работает с использованием пользователя tomcat7 а CIFS привязан к /mntt/mydir/ с другим пользователем, называемым coder.

Разрешение установлено на 777 для /mntt/mydir

Служба создаст папку и попытается загрузить/записать файл в эту папку.

Когда папка создана, она имеет разрешение 755 а файл имеет разрешение 644, владельцем файла и папки является coder а не tomcat7

Итак, когда моя программа пытается что-то записать в файл, она выдает исключение, Permission denined.

Код создания файла UPDATE

//Create directory
File uploadFile = new File(dirpath);
uploadFile.mkdirs();

//Create and Write to File
OutputStream stream = new FileOutputStream(new File(dirPath+"/upload"));

Пожалуйста, направляйте. Также, пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

благодаря

  • 0
    Я не так часто использую linux, но думаю, что установка флага gid в / mntt / mydir приведет к тому, что новые каталоги унаследуют пользователя / группу от родительского каталога. en.wikipedia.org/wiki/Setuid#setgid_on_directories
  • 1
    Что это за сервис, который создает файлы / каталоги как пользовательский coder ? Есть что-то, что вы можете контролировать / изменить?
Показать ещё 1 комментарий
Теги:
tomcat
cifs

2 ответа

0
Лучший ответ

Наконец я решил проблему !!

Я запускаю службу tomcat как пользователь coder, изменяя /etc/defaults/tomcat7.

Кроме того, мне нужно изменить разрешения нескольких каталогов tomcat.

0

Вы можете изменить службу Java следующим образом, чтобы созданный файл получил разрешение 777, и другой пользователь сможет написать ему:

    Path path = FileSystems.getDefault().getPath(
            file.getAbsolutePath());
    Files.setPosixFilePermissions(path,
            EnumSet.allOf(PosixFilePermission.class));

где file - объект java.io.File который представляет файл. Вы можете сделать то же самое в каталоге, который содержит файл, если вы хотите, чтобы пользователь tomcat мог создавать файлы в этом каталоге.

  • 0
    Я пытался это, но он говорит, что у меня нет разрешения изменить разрешение файла
  • 0
    Если вы перейдете в этот каталог, используя командную строку в качестве пользователя coder и выполните chmod 777 file произойдет ли ошибка? Это странно, в linux владелец файла может изменить права доступа к этому файлу ...
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню