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

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.

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



0

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

доб:

repquota -a

XFS:

xfs_quota -x -c 'report' /mount_point

0

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

setsebool -P ftpd_full_acess=true 

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



Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.