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

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

Server: Ubuntu    
App Server: Tomcat7
Java: JDK 7

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

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

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

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

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

ОБНОВЛЕНИЕ Код создания файла

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

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

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

Спасибо

2 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам