Я получаю "(файловая система только для чтения)" при попытке записать файл на HD - PullRequest
0 голосов
/ 03 июля 2019

Я хотел бы написать файл по этому пути, используя сервлет Springboot, который работает на Tomcat9

/mnt/data-new/data/USERPROFILE/607/file.txt 

Когда я пытаюсь записать этот файл, я получаю эту ошибку:

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Wed Jul 03 14:11:39 UTC 2019
There was an unexpected error (type=Internal Server Error, status=500).
/mnt/data-new/data/USERPROFILE/607/file.txt (Read-only file system)

Я уже установил разрешения для этого пути с 777, но ничего не изменилось.

Код сервлета довольно прост:

    @GetMapping("/")
    public String index() throws IOException {
         FileWriter fw = new FileWriter("/mnt/data-new/data/USERPROFILE/607/file.txt");
         fw.write("File wrote");
         fw.close();
         return "OK";
    }

Я создал файл с именем «file2.txt», который я могу прочитать с помощью этого примера кода:

    @ResponseBody
    @GetMapping("/read")
    public String read() throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("/mnt/data-new/data/USERPROFILE/607/file2.txt"));

        String st;
        while ((st = br.readLine()) != null) return st;
        return null;
    }

Я думал, что это была политика Каталины, но она, похоже, отключена:

root@devel-spring:/etc/tomcat9# echo $CATALINA_OPTS
-Djava.security.debug=all

и, даже с этой опцией, я не получаю журналы администратора безопасности в "/ var / log / syslog"

Что я должен сделать, чтобы записать файлы по этому абсолютному пути?

Edit: Файловая система смонтирована RW, я могу создать этот файл с помощью bash.

1 Ответ

0 голосов
/ 03 июля 2019

Благодаря Эммануэлю Буру в debian bugs.debian.org ссылка я обнаружил, что Tomcat9

"песочница для записи только в свой собственный каталог. Вам придется настроить конфигурацию systemd, чтобы Tomcat мог писать в ... » [тот] "... каталог".

так что я nano'ed /etc/systemd/system/multi-user.target.wants/tomcat9.service добавление

ReadWritePaths=/mnt/data-new/data/

1012 * тогда *

systemctl daemon-reload
service tomcat9 restart

Теперь

с кодом выше, мне удалось успешно написать свой тестовый файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...