Модель хранения данных, заливаемых на сервер, выглядит следующим образом:
пользователи FTP будут делиться на две группы: одна имеет доступ только в раздел documents_for_all, а другая, более привилегированная группа, должна иметь доступ к secure_documents и в первую - documents_for_all.
При этом пользователей будет около 100, причем о существовании друг друга они не должны знать, а тем более лазить по папкам друг друга.
В моем понимании я представил себе это так:
допустим все FTP данные хранятся в /var/ftp. там создаем следующие директории: documents_for_all, secure_documents, users.
После чего заливаем данные в зависимости от степени важности в соответствующую папку. Папка users служит местом хранения домашних папок юзеров ($USER), авторизованных на серваке, где они могут творить что хотят, заливать свои данные и тд.
Далее, когда все данные залиты в две ключевые папки, заходим в папку юзера и, в зависимости от его привилегированности, создаем ему ссылки на документы хранящиеся в наших ключевых папках. В таком случае все хорошо, но как быть тогда с chroot? ведь если юзеры ограничены песочницей, то и "мягкие" ссылки не будут работать. А если наоборот, то совершенно пропадает приватность.
Всю эту схему я поднимал на vsftpd c авторизацией через berkeley db и pam_userdb, который до этого вполне успешно работал в качестве анонимного сервака.
Примеры конфигов:
/etc/vsftpd.conf
Код:
anonymous_enable=NO
local_enable=YES
write_enable=YES
user_config_dir=/home/ftp/conf/
local_root=/home/ftp/data/
anon_upload_enable=YES
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=ftp
virtual_use_local_privs=YES
chmod_enable=YES
chown_uploads=YES
chown_username=ftp
local_umask=0022
anon_umask=0007
file_open_mode=0777
listen=YES
listen_port=21
pasv_min_port=30000
pasv_max_port=30999
xferlog_std_format=YES
xferlog_file=/var/log/vsftpd.log
tcp_wrappers=YES
dirmessage_enable=YES
ftpd_banner=Welcome to our FTP!
pam_service_name=ftp
/etc/pam.d/ftp - для авторизации
/etc/vsftpd_login.db - та самая db, созданная из файлика с юзерами, паролями.
Код:
auth required /lib/security/pam_userdb.so crypt=none db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so crypt=none db=/etc/vsftpd_login
/home/ftp/conf/test_user - файлик личной конфигурации для каждого пользователя
Код:
chroot_local_user=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/ftp/users/test_user/
Прошу прошения за столь сумбурный текст, но проще описать ситуацию не могу.
Основная задача такая: можно ли через настройки FTP сервера управлять виртуальными пользователями: создавать группы, настраивать определенный доступ для этих групп и тд?..
Спасибо.