vsftpd: виртуальный пользователь не может загрузить файл или создать директорию

Вопрос или проблема

Я создал 2 виртуальных пользователя для ftp (vsftpd): bholu1 и bholu2.
Я хотел, чтобы bholu1 имел права на запись, возможность создания каталога и разрешение на загрузку. Для этого я настроил пользователя bholu1 следующим образом, но он все равно не может загрузить файл или создать каталог.
(Я следовал этой ссылке чтобы достичь этого)

Смотрите ниже: я установил настройку для каждого пользователя для обоих пользователей: bholu1 и bholu3.

ravbholua@ravi:/etc/vsftpd_user_conf$ pwd
/etc/vsftpd_user_conf
ravbholua@ravi:/etc/vsftpd_user_conf$ cat bholu1
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
ravbholua@ravi:/etc/vsftpd_user_conf$ cat bholu3
anon_world_readable_only=NO
ravbholua@ravi:/etc/vsftpd_user_conf$

Оба могут читать каталог входа. Но согласно конфигурации для bholu1, он должен иметь возможность загружать файлы и создавать новый каталог, но он не может этого сделать.

Пожалуйста, посмотрите ниже конф. файл:

ravbholua@ravi:/etc$ cat vsftpd.conf
pam_service_name=/etc/pam.d/vsftpd.virtual
user_config_dir=/etc/vsftpd_user_conf
anonymous_enable=NO
local_enable=YES

#write_enable=NO
#anon_upload_enable=NO
#anon_mkdir_write_enable=NO
#anon_other_write_enable=NO
anon_world_readable_only=YES

chroot_local_user=YES

guest_enable=YES
guest_username=virtual

listen=YES
listen_port=10021

pasv_min_port=30000
pasv_max_port=30999

ravbholua@ravi:/etc$

Не имеет значения, если я раскомментирую все строки, которые закомментированы, как показано выше в конф. файле.

Также посмотрите ниже, что происходит, когда bholu1 входит в ftp сервер:

ravbholua@ravbholua-Aspire-5315:~$ ftp -p rs 10021
Connected to ravi.com.
220 (vsFTPd 3.0.2)
Name (rs:ravbholua): bholu1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put soul.txt
local: soul.txt remote: soul.txt
227 Entering Passive Mode (109,202,101,166,117,249).
553 Could not create file.
ftp> mkdir a
550 Permission denied.
ftp> 

Могу я попросить вас сказать, что я пропустил в своей конфигурации.

Попробуйте следующее для виртуальных пользователей, чтобы включить права на запись:

virtual_use_local_privs=YES

Ответ или решение

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

Шаги по устраиванию проблем с правами доступа

  1. Параметр virtual_use_local_privs:
    В вашем файле конфигурации vsftpd.conf отсутствует параметр virtual_use_local_privs=YES. Этот параметр позволяет виртуальным пользователям использовать локальные права, которые могут быть необходимы для функции записи (write access). Добавьте этот параметр в ваш файл конфигурации:

    virtual_use_local_privs=YES
  2. Проверка пользователя:
    Убедитесь, что пользователь bholu1 действительно настроен как виртуальный пользователь. При этом в файле /etc/pam.d/vsftpd.virtual должны быть указаны правильные настройки для PAM, которые позволяют аутентифицировать и назначать права виртуальным пользователям.

  3. Права на каталог:
    Проверьте права доступа к корневому каталогу, в который bholu1 пытается загружать файлы. Важно, чтобы этот каталог имел необходимые разрешения на запись для пользователя, под которого виртуальный пользователь аутентифицирован (в данном случае это virtual). Используйте команду ls -ld /path/to/ftp для проверки прав доступа на директорию. Если прав недостаточно, измените их:

    sudo chmod 755 /path/to/ftp
    sudo chown -R virtual:virtual /path/to/ftp
  4. Логи сервера:
    Просмотрите логи сервера FTP, которые могут дать вам дополнительную информацию о том, почему происходит ошибка. Логи могут находиться в /var/log/vsftpd.log или аналогичном файле, в зависимости от вашей конфигурации. Ошибки и предупреждения помогут выявить корень проблемы.

  5. Удаление лишних настроек:
    Попробуйте убрать или закомментировать строки, которые могут конфликтовать с заданной вами политикой доступа, например:

    #anon_upload_enable=NO
    #anon_mkdir_write_enable=NO

    Эти параметры относятся к анонимным пользователям, но в вашей конфигурации они могут влиять на разрешения виртуальных пользователей.

Итоговое изменение конфигурации

После внесения изменений, ваша конфигурация может выглядеть следующим образом:

pam_service_name=/etc/pam.d/vsftpd.virtual
user_config_dir=/etc/vsftpd_user_conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
virtual_use_local_privs=YES
chroot_local_user=YES
guest_enable=YES
guest_username=virtual
listen=YES
listen_port=10021
pasv_min_port=30000
pasv_max_port=30999

Заключение

После всех вышеперечисленных изменений перезапустите сервис vsftpd, чтобы применить новые настройки:

sudo systemctl restart vsftpd

Если все сделано правильно, пользователь bholu1 должен теперь иметь возможность загружать файлы и создавать директории. Следуйте данным рекомендациям и проверяйте каждую настройку на наличие возможных ошибок. Если проблема не решится, я рекомендую провести дополнительное тестирование с помощью других FTP-клиентов или проверить конфигурацию на наличие других ограничений.

Оцените материал
Добавить комментарий

Капча загружается...