За счет того, что система entware многопользовательская у нас есть возможность настроить vsftpd из прошивки кинетика на работу с локальными пользователями.Здесь показан пример для трех пользователей, которые имеют доступ в разные каталоги и разные права на них. В примере используется файловая система NTFS. Можно и на EXT, но там сложнее разбираться с правами на запись для пользователей. Отключаем ftp сервер в прошивке если он был включен. Создаем структуру каталогов нашего сервера. В моем примере это: /media/DISK_A1/ftp/ В каталоге 'ftp' я создал два подкаталога по именам пользователей. /media/DISK_A1/ftp/user-1 /media/DISK_A1/ftp/user-2 Затем создаем пользователей в entware. Не создавайте пользователя 'ftp' это связано с внутренней работой самого vsftpd. Делается это командой adduser <имя пользователя> В моем примере используются три пользователя с именами user-1 user-2 user-3 Система попросит ввести пароль для пользователя. Вводим и жмем enter. Повторить это нужно столько раз сколько вы хотите завести юзеров на свой сервер. После этого идем в /media/DISK_A1/system/etc Находим там файлы passwd, открываем их и отключаем шелл пользователям фтп сервера. Этот шаг можно пропустить, но тогда эти пользователи смогут заходить по ssh на кинетик под своим паролем. Если шелл отключаем то находим строки с нашими пользователями user-1:$1$t2kiAPb/$Tb0Ahk5kEmtx2uohEA373/:1:1:Linux User,,,:/opt/home/user-1:/opt/bin/ash user-2:$1$Sr50YJz1$BFA0nTrkJ6CuEqYeugNEf0:2:2:Linux User,,,:/opt/home/user-2:/opt/bin/ash user-3:$1$VkKKtjzi$uNITTYi1ckMZLAaRVQ9l51:4:4:Linux User,,,:/opt/home/user-3:/opt/bin/ash и меняем в самом конце строки 'ash' на 'false'. Выглядеть будет так user-1:$1$t2kiAPb/$Tb0Ahk5kEmtx2uohEA373/:1:1:Linux User,,,:/opt/home/user-1:/opt/bin/false user-2:$1$Sr50YJz1$BFA0nTrkJ6CuEqYeugNEf0:2:2:Linux User,,,:/opt/home/user-2:/opt/bin/false user-3:$1$VkKKtjzi$uNITTYi1ckMZLAaRVQ9l51:4:4:Linux User,,,:/opt/home/user-3:/opt/bin/false Ещё раз обращаю внимание, что изменять надо только тех пользователей которые будут для фтп сервера. Устанавливаем chroot командой opkg install coreutils-chroot Затем идем в /opt/etc и создаем там файл 'vsftpd.conf' с содержимым # Общие настройки dirmessage_enable=no download_enable=yes write_enable=yes dirlist_enable=yes hide_ids=yes ftpd_banner=Welcome to FTP service. local_enable=yes local_umask=022 chmod_enable=no chroot_local_user=yes chroot_list_enable=NO check_shell=no userlist_file=/opt/etc/vsftpd/vsftpd.userlist userlist_enable=YES userlist_deny=NO user_config_dir=/opt/etc/vsftpd/ftpuser listen=yes # Слушаем порт listen_port=21 connect_from_port_20=YES max_clients=10 idle_session_timeout=300 #Запрет созданий директорий в корневом каталоге #protect_writable_root=no utf8=yes ascii_upload_enable=YES ascii_download_enable=YES port_enable=yes port_promiscuous=no use_sendfile=no # Отключение анонимного пользователя anonymous_enable=no #anon_allow_writable_root=yes #anon_world_readable_only=yes anon_umask=022 tcp_wrappers=NO tilde_user_enable=yes # Включение пассивного режима pasv_enable=YES pasv_min_port=50000 pasv_max_port=50050 pasv_promiscuous=no # Логирование syslog_enable=yes В данном конфиге анонимный доступ отключен. Здесь же создадим каталог 'vsftpd'. В каталоге /opt/etc/vsftpd Создаем файл 'vsftpd.userlist' и каталог "ftpuser" Приводим файл 'vsftpd.userlist' к виду user-1 user-2 user-3 т.е. мы в нем перечисляем логины тех пользователей которым разрешен доступ к нашему серверу. Далее идем в каталог /opt/etc/vsftpd/ftpuser и создаем там по файлу на каждого пользователя. Данные файлы будут содержать набор параметров, что можно данному пользователю и где находится его домашний каталог. Название файла должно быть равно имени пользователя. Мой пример для трех пользователей. Поэтому я создал три файла user-1 с содержимым local_root=/media/DISK_A1/ftp/user-1 max_per_ip=0 У этого пользователя будет домашняя папка /media/DISK_A1/ftp/user-1 на флешке и в нее он сможет записывать и удалять файлы, т.к. это разрешено в общем конфиге user-2 с содержимым local_root=/media/DISK_A1/ftp/user-2 write_enable=no max_per_ip=0 У этого пользователя будет домашняя папка /media/DISK_A1/ftp/user-2 на флешке и с нее он сможет только скачивать файлы файлы, т.к. в конфиге есть параметр write_enable=no user-3 с содержимым local_root=/media/DISK_A1 max_per_ip=0 У этого пользователя будет домашняя папка /media/DISK_A1 Он будет иметь полный доступ ко все флешке. Т.к. в конфиге присутствует опция chroot_local_user=yes Пользователи user-1 user-2 не смогут перейти выше по структуре каталогов. После того как все это проделано, осталось создать скрипт запуска и запустить наш сервер. Для этого идем в /opt/etc/init.d и создаем скрип запуска с содержимым #!/bin/sh ENABLED=yes PROCS=vsftpd ARGS="/opt/etc/vsftpd.conf" PREARGS="" DESC=$PROCS PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin . /opt/etc/init.d/rc.func Для упрощения процесса я скопировал скрипт S50dropbear Заменил в нем содержимое и переименовал его в S25vsftpd Так же нужно создать правила IPTABLES. Файл лежит в каталоге /opt/etc/init.d/firewall.sh Если его там нет то создаем пустой файл и делаем его исполняемым или копируем любой другой скрипт и меняем в нем содержимое на #!/bin/sh #Для ФТП iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 50000:50050 -j ACCEPT Теперь можно запустить наш сервер командой /opt/etc/init.d/S25vsftpd и проверять работу сервера.