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


31

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

Я припускаю, що це має відношення до дозволів, але я не знаю достатньо, щоб можна було це виправити. Отже, що я повинен зробити, щоб мати можливість завантажувати файли?


Перевірте Налаштування selinux. налаштуйте булевий дозвіл дозволу_ftpd_full_access на ВКЛ

Відповіді:


18

Існує дві ймовірні причини, що це може статися - у вас немає дозволів на запис та виконання в каталогах, що ведуть до каталогу, в який ви намагаєтесь завантажити, або vsftpdналаштовано не дозволяти завантажувати.

У першому випадку використовуйте chmodта, chownякщо потрібно, переконайтеся, що ваш користувач має ці дозволи на кожен проміжний каталог. Біт запису дозволяє постраждалому користувачеві створювати, перейменовувати або видаляти файли в каталозі та змінювати атрибути каталогу, тоді як біт читання дозволяє постраждалому користувачеві перелічити файли в каталозі. Оскільки проміжні каталоги на шляху також впливають на це, дозволи повинні бути встановлені відповідним чином, що веде до кінцевого пункту призначення, до якого ви збираєтесь завантажити.

В останньому випадку подивіться на своє vsftpd.conf. write_enableповинно бути істинним, щоб дозволити писати (а воно за замовчуванням помилкове). На цьому файлі конфігурації є хороша документація man 5 vsftpd.conf.


10
Жодне з цього не здається проблемою. Я спробував змінити все до 777 (небезпечно) та налаштувань write_enable = ТАК, але я все одно отримую це марне повідомлення про помилку.
Серін

@Cerin ти зміг це виправити? Якщо так, чи можете ви поділитися деталями?
невідомий

34

Чи можете ви спробувати це

chown -R ftpusername /var/www/html

5
chmod 757 -R / var / www / html
Hernán Eche

1
@ HernánEche дякую за пораду, я полював годинами, і це, нарешті, вирішило мою проблему.
Tr0yJ

Чи можете ви детальніше розглянути ситуацію, це на сервері чи локально?
Едуард Лопес

1
@ HernánEche Гей, це працювало і для мене, але це безпечно. Це не працювало з 755
viv

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.)
Skippy le Grand Gourou

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 Якщо включено, всі неанонімні входи класифікуються як "гостьові" реєстрації. Логін гостя перезавантажується користувачеві, вказаному в налаштуваннях імені гостя.

За замовчуванням: НІ



0

Ще одна можливість: перевірити дискові квоти для користувача / групи

ext:

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.