Я хочу настроить vsftpd, чтобы пользователь (пользователь) мог загружать и создавать каталоги в / var / www / с намерением разрешить загрузку целых веб-сайтов.
Текущие разрешения:
Уже предпринятые шаги:
Созданный пользователь: foouser
useradd foouser
Добавлен пользователь foo в группу www-data.
usermod -a -G www-data foouser
Установите / var / www / в качестве домашнего адреса пользователя:
usermod -d /var/www/
Вот мой файл vsftpd.conf:
root@c9e0266eb8c8:/var# cat /etc/vsftpd.conf | grep -v ^#
listen=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=www-data
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
Но я все еще не могу загрузить файл:
Command: USER foouser
Response: 331 Please specify the password.
Command: PASS ******
Response: 230 Login successful.
Status: Server does not support non-ASCII characters.
Status: Connected
Status: Starting upload of /home/michael/settings.json
Command: CWD /var/www
Response: 250 Directory successfully changed.
Command: TYPE I
Response: 200 Switching to Binary mode.
Command: PASV
Response: 227 Entering Passive Mode (172,17,0,2,174,22).
Command: STOR settings.json
Response: 553 Could not create file.
Error: Critical file transfer error
СЕЙЧАС ... если я изменю права доступа к каталогу с www-data на foouser: foouser, я могу загрузить все в порядке, но это (конечно) сломает apache.
Что я делаю не так?
Редактировать: Также можно разрешить анонимную загрузку файла в / var / www /. Это док-контейнер, поэтому подобная небезопасная практика вполне подойдет, поскольку она будет использоваться для разработки, а не для производства.
Я думаю, вам нужно добавить конфигурации пассивного режима в ваш файл '/ etc / vsftpd.conf`, поскольку ваше соединение переходит в пассивный режим. Ниже представлены конфиги.
# Additional configuration
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=xx.xx.xx.xx #Public IP of your server
local_root=/var/www
Вы можете установить pasv_min_port
и pasv_max_port
в соответствии с вашими потребностями. но убедитесь, что вы разрешили им проникнуть в ваш брандмауэр.