Вопрос или проблема
У меня есть 2 сервера, которые одинаково сконфигурированы. Один из них старше на 1 год и имеет более старую версию Ubuntu, в то время как другой – с последней версией.
Когда я вхожу в последний сервер по FTP и пытаюсь создать файл, это не удается, и появляется ответ 550 Permission denied
Я видел этот вопрос и ответ, а также 100 подобных, где ответы всегда “установите правильные права доступа к папке на 777 или 755 и правильное владение”.
Но папка html
, в которой я пытаюсь создать файл, имеет права 777, а владение такое же, как у пользователя, под которым я вошел по FTP, то же самое касается родительской папки www
.
Это ошибка в последней версии?
Какие файлы я должен вам показать?
Я уже много часов борюсь с этим.
Ответ или решение
При работе с FTP на последних версиях Ubuntu могут возникать проблемы с созданием файлов, особенно если вы сталкиваетесь с ошибкой "550 Permission denied". Несмотря на то, что настройки разрешений и владения директориями кажутся корректными, проблема может крыться в нескольких других аспектах. Рассмотрим подробно, что может вызывать данную ошибку и какие шаги можно предпринять для её исправления.
1. Проверка конфигурации FTP сервера
Первым делом вам стоит проверить конфигурацию используемого FTP сервера. Наиболее популярными являются vsftpd, proftpd и Pure-FTPd. Для примера, если вы используете vsftpd, откройте файл конфигурации, обычно находящийся по пути /etc/vsftpd.conf
, и проверьте следующие параметры:
-
write_enable: Убедитесь, что этот параметр установлен в
YES
. Он позволяет пользователям записывать файлы.write_enable=YES
-
local_umask: Убедитесь, что устанавливаемая маска файловых разрешений не блокирует создание файлов.
local_umask=022
-
chroot_local_user: Если эта опция включена, она может ограничивать пользователя в доступе к определённым директориям. Убедитесь, что пользователь имеет право на запись в соответствующей директории.
2. Права доступа на уровне операционной системы
Даже если папка имеет права 777
, стоит проверить другие аспекты:
-
SELinux/AppArmor: В последних версиях Ubuntu по умолчанию используется AppArmor, который может ограничивать действия процессов, даже если права на файл установлены корректно. Проверьте статус AppArmor с помощью команды:
sudo aa-status
Если он активирован, убедитесь, что профиль вашего FTP-сервера настроен правильно или временно отключите AppArmor для тестирования:
sudo systemctl stop apparmor
-
Проверка владельца и группы: Выполните команду
ls -ld /путь/к/www/html
, чтобы убедиться, что владелец и группа указаны верно. Убедитесь, что пользователь FTP входит в группу, которая владеет директориями.
3. Логи FTP сервера
Ключевым этапом в диагностике проблемы может быть анализ логов FTP сервера. Почти все FTP-сервера позволяют включить уровень отладки, что даст возможность получать подробные сообщения о действиях сервера:
-
Для vsftpd логирование может быть включено следующим образом:
xferlog_enable=YES
Логи обычно можно найти в
/var/log/vsftpd.log
или в другом файле, указанном в конфигурации.
4. Тестовые команды
Для диагностирования проблемы можно использовать команды, такие как ls
, mkdir
и touch
через FTP-клиент, чтобы проверить доступность и права на запись в директориях. Начните с проверки прав на создание папок, что может выявить, является ли проблема связанной именно с правами доступа.
5. Обновление программного обеспечения
Если вышеуказанные шаги не помогают, возможно, что на вашем сервере присутствует баг или несовместимость в самой версии Ubuntu или FTP-сервера. Убедитесь, что все обновления установлены. Это можно сделать с помощью:
sudo apt update && sudo apt upgrade
Заключение
Ошибки, связанные с правами доступа и созданием файлов по FTP в Ubuntu, могут быть вызваны множеством факторов, не ограничиваясь лишь разрешениями каталогов. Следуя приведенным рекомендациям, вы сможете выявить и устранить причину проблемы. Если же сложности сохранятся, вы можете предоставить логи и конфигурационные файлы для более детального анализа.