Отказ от ответственности: это домашнее задание; Мне не нужно решение.
Кроме того, нет доступных библиотек за пределами стандартных библиотек c/c++.
Я ищу толчок в правильном направлении, чтобы понять, что эта часть работы из моего назначенного семестрового проекта (создание виртуального FTP-сервера) даже просит меня сделать:
Сервер позволяет создать виртуальную файловую систему. Под виртуальной файловой системой мы подразумеваем сопоставление обслуживаемого каталога с реальным каталогом в файловой системе. Например, дерево клиентов будет выглядеть так: /home/user1 соответствует /mnt/x/home/user1 /www соответствует /var/cache/www /home/user_list.txt соответствует /var/ftpclient/user_list.txt. Пользователь увидит каталог /home/user1 и каталог /www и файл /home/user_list.txt.
Я задал этот вопрос своему лектору:
Являются ли
/home/user1 -> /mnt/x/home/user1
,/www -> /var/cache/www
и/var/cache/www/home/user_list.txt -> /var/ftpclient/user_list.txt
единственными сопоставлениями каталогов, которые необходимо поддерживать (таким образом, каждый пользователь будет иметь 2 каталога и 1 файл, как показано, автоматически созданный для них)?
на что был дан следующий ответ:
Эти сопоставления являются лишь примерами настроек. Ваше решение должно иметь возможность сопоставлять что угодно с чем угодно подобным образом.
Насколько я понимаю, мне нужно только разрешить пользователям моего FTP-сервера доступ к каталогам и файлам, которые явно сопоставлены (указаны в файле конфигурации). Это, вероятно, будет означать сопоставление чего-то вроде /home -> /home/users
(так что все пользователи увидят, что они находятся в псевдокорневом каталоге для работы с FTP, например, пользователь Боб видит /home/bob/
.
Кроме того, с каким API мне нужно работать для поддержки FTP-команд, таких как ls
, cd
и т. д., которые работают с настоящей безотказной файловой системой?