Я использую загрузку файла Apache Commons для написания короткой jsp-программы, которая позволяет студентам загружать файлы на наш сервер. Сервер представляет собой Linode, работающий с Ubuntu Precise Pangolin. Пожалуйста, простите мою нехватку знаний о администрировании сервера.установить права доступа к файлам с сервлетом
До сих пор мне удалось загрузить файл, только если целевая папка имеет права на 777 (rwx для всех). Мне это кажется неуверенным, поэтому я надеялся, что смогу разместить папку на 755, а затем мгновенно изменить ее на запись (в коде), когда запускается сценарий jsp, и изменить ее сразу после сохранения загруженного файла (также в код).
Я знаю, что файл класса в Java имеет метод setWritable, и я попытался его использовать. Однако этот метод не будет работать, если пользователь не имеет права изменять права доступа к файлам в операционной системе. Таким образом, исключение выдается, поскольку операционная система отказывается от разрешения. Это заставило меня спросить:
Когда запускается сервлет, кто является пользователем? Чьи права проверяются операционной системой?
Я являюсь владельцем файла jsp, который содержит сценарий загрузки файлов, поэтому я бы подумал, что я был пользователем, когда работает сценарий. У меня есть права на изменение прав доступа к файлам. Но сервлет не делает этого. Отсюда моя путаница.
Я ценю вашу помощь.
Будьте предельно осторожны с этим. Убедитесь, что папка не находится под «веб-корнем» - вы не хотите, чтобы ваши ученики могли загружать некоторые неприятные сценарии, а затем запускать ваш сервер. –
@ DavidWallace-- Привет, Дэвид, можете ли вы помочь мне понять, какие права имеет сервлет? Как они определяются? Благодарю. –
@ DavidWallace-- Я согласен быть осторожным. Вот почему я не установил права доступа к файлам 777. Всего есть пять учеников, и у меня будет запись в базе данных с каждой загрузкой. Идея заключается в том, чтобы узнать, как делать веб-программирование, поэтому мне нужно, чтобы они могли загружаться на сервер. –