2

Я разрабатываю веб-сайт в Netbeans, где я настроил FTP для загрузки файлов на мой сервер. На сервере - Ubuntu 14.04 LTS - специально для этой задачи я создал пользователя с именем "ftpuser". Я установил vsFTPd для загрузки файлов. Его конфиг это удар:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
file_open_mode=0644
local_umask=022
dirmessage_enable
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
allow_writeable_chroot=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Начальный каталог ftpuser - /var /www:

ftpuser:x:1005:1007:ftp user,,,:/var/www:/bin/bash

Каждый раз, когда я пытаюсь загрузить файл, Netbeans говорит: «Ошибка, файл НЕ отправлен: file.php», и проверка пакетов с помощью wireshark возвращает мне следующие ошибки:

226 - Transfer done (but failed to open directory)
553 - Could not create file. 

Даже при выполнении ftp с операцией PUT выдает ошибку 553. У пользователя FTP нет проблем при входе и смене каталога.

Каталог, все его подкаталоги и файлы имеют права доступа 755 (777 - local_umask).

Я что-то упускаю? Раньше он работал отлично, и я не помню, чтобы что-то менялось в Netbeans или vsFTPd.

ОБНОВЛЕНИЕ

Владелец каталога (и подкаталогов / файлов) имеет значение:

drwxr-xr-x  6 marijn marijn 4096 Sep  1 14:21 noc

Даже подавляя это ftpuser:ftpuser ничего не делает.

3 ответа3

1

Это легко упустить, но проверьте, открыты ли порты, настроенные vsftpd, на вашем брандмауэре.

У меня были подобные проблемы, когда мое соединение с сервером ftp проходило нормально, но я не мог получить списки каталогов для этой папки. Я потратил 6 часов на поиски решения, но это решило мою проблему.

Проверьте файл conf на наличие указанных портов:

vi /etc/vsftpd.conf

Вы ищете эти 2 строки:

pasv_max_port=12100
pasv_min_port=12000

В этом случае я бы открыл порты 12000-12100 для передачи в пассивном режиме:

ufw allow  12000:12100 /tcp

НТН

1

К счастью, у меня была рабочая конфигурация на моем сервере разработки. Иногда мне нужно загрузить некоторые изменения непосредственно на работающий сервер, и я как-то настроил vsftpd.conf по-другому. Также конфигурации FTP в Netbeans были другими.

Вот как теперь выглядит мой vsftpd.conf: (обратите внимание на отсутствие chroot)

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Начальный каталог в Netbeans был установлен на:

/var/www/noc
0

В соответствии с вашими данными, я бы сказал, что у вашего пользователя нет прав на запись в каталог, в который вы пытаетесь загрузить.
Владелец / группа марин. Но только пользователь может писать в каталог, группа и другие пользователи могут только читать и вводить каталог.

Ваш пользователь - ftpuser.
Так что либо вы добавляете ftpuser в группу marijn, и даете право группе marijn на /var/www/noc и subdirs: chmod -R g+w /var/www/noc либо вы должны сделать ftpuser владельцем dir где вы хотите написать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .