vsftpd для локальных пользователей и анонимных входов

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

Я пытаюсь настроить свой FTP-сервер (vsftpd), чтобы предоставить доступ как локальным пользователям, так и анонимным пользователям.

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

Во-первых, это вообще возможно? Или все входы должны иметь либо доступ на чтение, либо доступ на запись, но не комбинацию обоих?

Если это возможно, у меня это не получается. Моя текущая настройка выдает ошибку “Доступ запрещен”, когда я пытаюсь войти анонимно. Доступ для локальных пользователей работает так, как я и хотел.

Может кто-нибудь увидеть, где я ошибаюсь или что я пропускаю в следующей настройке?

Следующее — это настройка директории для FTP-папок. Путь /var/ftp/ (обратите внимание, что локальный пользователь здесь не имеет оболочки или конкретной домашней директории, поэтому он был перемещен в общую FTP-папку):

dr-xr-xr-x  2 ftp         ftp-users 4.0K Apr 17 13:19 anon
drwxr-xr-x  2 localuser   ftp-users 4.0K Apr 17 15:08 localuser

Пользователь anon не имеет доступа на запись в свою домашнюю директорию, но локальный пользователь имеет. Существует группа ftp-users, частью которой являются все пользователи FTP.

Ниже приведен фрагмент из файла /etc/passwd для двух вышеупомянутых пользователей:

ftp:x:109:115:ftp daemon,,,:/var/ftp/anon:/bin/false
localuser:x:1002:1002::/var/ftp/localuser:/bin/false

Следующее — это файл vsftpd.config, который я использую (все комментарии удалены для краткости):

listen=NO
listen_ipv6=YES
anonymous_enable=YES
ftp_username=ftp
no_anon_password=YES
anon_root=/var/ftp/anon
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
anon_max_rate=52000
local_enable=YES
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/vsftpd.allowed_users
write_enable=YES
allow_writeable_chroot=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=ftp
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Все пользователи, которые могут войти, перечислены в userlist_file (включая ftp).

Я смог ответить на свой вопрос после небольших экспериментов. Я подробно изложу ответ для справки.

  1. Да, возможно иметь привилегированных ‘именованных’ пользователей и непривилегированных анонимных пользователей. Фрагмент конфигурационного файла выше позволяет такую настройку.

  2. В конфигурационном файле есть параметры userlist_enable=YES и userlist_file=…, которые контролируют имен пользователей, имеющих возможность использовать FTP. Это предотвращает вход по умолчанию созданных пользователей (например, pi на Raspbian) с паролем по умолчанию, если он не был изменен. (Пароль по умолчанию, очевидно, следует изменить.)

  3. Чтобы использовать вышеприведенные директивы и разрешить анонимные входы, пользователь ‘anonymous’ должен быть указан в файле вместе с одобренными именованными пользователями.

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

Настройка FTP-сервера на базе vsftpd с доступом как для локальных пользователей, так и для анонимных пользователей может представлять определенные трудности. Однако, как вы уже заметили, это вполне возможно. Давайте детально рассмотрим, как правильно организовать такой сервер, а также какие шаги необходимо предпринять для устранения ошибок, с которыми вы столкнулись.

Возможность одновременного доступа локальных и анонимных пользователей

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

Конфигурация vsftpd

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

  1. anonymous_enable=YES – этот параметр позволяет включить доступ анонимных пользователей.

  2. anon_root=/var/ftp/anon – указывает на директорию, к которой будут иметь доступ анонимные пользователи. Убедитесь, что в этой директории выставлены корректные права доступа.

  3. anon_upload_enable=NO и anon_mkdir_write_enable=NO – эти параметры отключают возможность анонимных пользователей загружать файлы и создавать директории, что соответствует вашим целям.

  4. userlist_enable=YES и userlist_file=/etc/vsftpd.allowed_users – позволяет контролировать список аутентифицированных пользователей. Убедитесь, что в этом файле имеется учетная запись anonymous (или ftp), чтобы этот пользователь мог успешно войти.

Проверка прав доступа к директориям

Ваши права доступа к директориям следующие:

  • /var/ftp/anon: dr-xr-xr-x
  • /var/ftp/localuser: drwxr-xr-x

Права dr-xr-xr-x на директории анонимных пользователей означают, что они могут видеть содержимое, но не могут записывать в эту директорию. Это правильная настройка для вашей ситуации. Однако не забудьте проверить, чтобы файлы внутри /var/ftp/anon были доступны для чтения.

Проверка входа и устранение ошибок

Если анонимный вход все еще дает ошибку "Permission denied", стоит обратить внимание на следующие моменты:

  1. Загрузка 파일ов: Убедитесь, что в директории /var/ftp/anon есть хотя бы один файл, который может быть доступен для чтения анонимным пользователям. Если там нет файлов, то доступ может быть закрыт.

  2. Логи: Изучите логи ftp-сервера, которые могут находиться в /var/log/vsftpd.log или аналогичных файлах. Это поможет лучше понять, почему именно происходит ошибка.

  3. Общее правило доступа: Обратите внимание на общие разрешения, которые могут касаться группы ftp-users. Убедитесь, что пользователи этой группы имеют доступ к директориям и файлам.

Заключение

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

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

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

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