У меня есть пользователь с именем «ftp3», который принадлежит к группе «ftpusers-temp».
Дом этого пользователя - home / FTP-shared / temp
В proftpd.conf у меня есть 2 следующие директивы:
DefaultRoot /home/FTP-shared
DefaultRoot ~ ftpusers-temp
Я ожидал, что пользователь ftp3 может видеть только каталог «temp»; но происходит то, что каталог "temp" выбирается по умолчанию при входе в систему, но пользователь может вернуться и получить доступ к корню ftp-сервера.
Разве пользователь ftp3 не должен быть заключен в тюрьму в «/ home / FTP-shared / temp» и не может получить доступ к «/ home / FTP-shared»?
В DefaultRoot
строка должна быть в конце файла конфигурации.
Я считаю, что проблема может заключаться в том, что у вас указано несколько DefaultRoot (ов). Как документация ProFTPd объясняет:
Если две директивы DefaultRoot применяются к одному и тому же пользователю, ProFTPD произвольно выбирает одну (в зависимости от того, как был проанализирован файл конфигурации)
Вы можете попробовать закомментировать первую директиву DefaultRoot и посмотреть, поможет ли это решить проблему.
Думаю, что лучшим вариантом в вашем случае будут пользователи тюрьмы в своих каталогах. Вы можете использовать малоизвестные %u
переменная. Документация моря:
Во время обработки FTP-сеанса оно будет заменено именем пользователя, который вошел в систему.
редактировать
Это метод помещения пользователей в тюрьму в их собственном домашнем каталоге.
(Давайте быстро объясним строку выше. DefaultRoot - это параметр, используемый proftpd для включения функциональности тюрьмы. Someuser - это основная группа всех пользователей, для которых выполняется chrooot (по умолчанию это то же самое, что и имя пользователя). / Home / someuser - это каталог где пользователь будет заключен в тюрьму.)