VSFTPD, 553 Не удалось создать файл. - разрешения?

31

Я настроил VSFTPD на Amazon EC2 с Amazon Linux AMI. Я создал пользователя и теперь могу успешно подключиться через ftp. Однако, если я пытаюсь загрузить что-то, я получаю сообщение об ошибке «553 Не удалось создать файл».

Я предполагаю, что это связано с разрешениями, но я недостаточно знаю об этом, чтобы иметь возможность это исправить. В общем, что я должен сделать, чтобы иметь возможность загружать файлы?

Джефф Шаллер
источник
Проверьте настройки selinux. настроить логическое allow_ftpd_full_access на ON

Ответы:

18

Это может произойти по двум причинам: у вас нет прав на запись и выполнение для каталогов, ведущих к каталогу, в который вы пытаетесь загрузить файл, или vsftpdон настроен так, чтобы не разрешать загрузку.

В первом случае используйте chmodи chownпри необходимости убедитесь, что у вашего пользователя есть эти разрешения для каждого промежуточного каталога. Бит записи позволяет затронутому пользователю создавать, переименовывать или удалять файлы в каталоге и изменять атрибуты каталога, в то время как бит чтения позволяет затронутому пользователю перечислять файлы в каталоге. Поскольку промежуточные каталоги в пути также влияют на это, необходимо правильно установить разрешения, ведущие к конечному месту назначения, в которое вы собираетесь загружать.

В последнем случае посмотрите на свои vsftpd.conf. write_enableдолжно быть true, чтобы разрешить запись (и по умолчанию false). Существует хорошая документация по этому файлу конфигурации на man 5 vsftpd.conf.

Крис Даун
источник
10
Ни один из них, кажется, не является проблемой. Я попытался изменить все на 777 (небезопасно) и в настройках write_enable = YES, но все равно получаю это бесполезное сообщение об ошибке.
Cerin
@Cerin, вы смогли это исправить? Если да, можете ли вы поделиться деталями?
unknownerror
34

Не могли бы вы попробовать это

chown -R ftpusername /var/www/html
Tacettin Özbölük
источник
5
chmod 757 -R / var / www / html
Эрнан Эче,
1
@ HernánEche спасибо за подсказку, я часами охотился, и это, наконец, решило мою проблему.
Tr0yJ
Не могли бы вы уточнить ситуацию, это на сервере или локально?
Эдуард Лопес
1
@ HernánEche Эй, у меня это тоже сработало, но безопасно ли это. Он не работает с 755
Львов
1
@ HernánEche ты должен сделать это отдельным ответом. Ваше предложение сработало для меня, где ничего не получилось.
Шауль говорит, что я поддерживаю Монику
11

Команда ftp put /path/to/local_fileне работает с vsftpd. Попробуйте следующее:

ftp put /path/to/local_file remote_file_name 

Вы можете выбрать любое имя, которое хотите remote_file_name, но вы должны указать его.

Виктор
источник
2
Возможно, вы захотите добавить более подробную информацию к своему ответу (например, некоторую документацию, подтверждающую обоснованность вашего решения).
HalosGhost
Это происходит потому, что (и если) /path/to/не существует (и / или не доступен через сеанс FTP) на сервере. Вот почему ftp put local_file делает работу без явного назначения. (Подсказка: проверьте local: … remote: …линию в FTP-клиенте.)
Скиппи ле Гран Гуру
1
Это сработало для меня! :)
Пауло
3

Домашний каталог FTP (ftp_home_dir), скорее всего, отключен в SeLinux. Чтобы увидеть состояние ваших ftpdуправляющих файлов, введите : getsebool -aи найдите раздел ftpd. Вы можете заметить, что ftp_home_dir выключен. Чтобы включить его, используйте следующую команду:setsebool -P ftp_home_dir=1

Проверьте введенные данные getsebool -a, затем повторите попытку загрузки.

Примечание: игнорировать знаки препинания

Яркий солнечный свет
источник
2

У меня была та же проблема, и я исправил изменение SELinux, чтобы разрешить запись в папку, которую я настроил для использования vsftp = /var/ftp/pub.

Эти ссылки могут быть полезны:

Если вы не хотите идти дальше с вашим SELinux, не меняйте его, поэтому вы увидите по умолчанию /etc/selinux/config

SELINUX=enforcing

затем просто запустите команды от имени пользователя root или с помощью sudo:

sudo setsebool -P ftpd_anon_write 1
sudo setsebool -P ftpd_full_access 1

как уже описано выше в другом комментарии.

Эдуардо Черкейра
источник
1

Проверьте ваши vsftpd.confнастройки:

guest_enable=YES # set it to NO then restart the vsftpd service.

Если он установлен на YES, это также вызовет 553 Could not create file.

От: http://www.vsftpd.beasts.org/vsftpd_conf.html

guest_enable Если включено, все неанонимные логины классифицируются как "гостевые" логины. Гостевой логин переназначается на пользователя, указанного в настройке guest_username.

По умолчанию: НЕТ

Генри Парра
источник
1

Попробуй это

chmod 757 -R /var/www/html
Эрнан Эш
источник
0

Другая возможность: проверить дисковые квоты для пользователя / группы

доб:

repquota -a

XFS:

xfs_quota -x -c 'report' /mount_point
mveroone
источник
0

Следующий параметр даст ftpd доступ для записи куда угодно:

setsebool -P ftpd_full_acess=true 

Не используйте, ftpd_anon_writeесли вы не хотите, чтобы анонимные загрузки были разрешены.

Нил
источник
0

Вероятно, в имени файла содержатся неподдерживаемые символы

Омкар Душане
источник
-1

Для Fedora23 выполните команды:

setsebool -P ftpd_anon_write 1 
setsebool -P ftpd_full_access 1

Это сработало для меня.

Просенджит Пол
источник