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
Пользователь сможет создавать файлы в этом каталоге.