Я пытаюсь настроить свой 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
Анонимный пользователь не имеет права записи в свой домашний каталог, но локальный пользователь имеет. Существует группа 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).
Мне удалось ответить на свой вопрос, немного поиграв. Я подробно отвечу для справки.
Да, можно иметь привилегированных «именованных» пользователей и непривилегированных анонимных пользователей. Приведенный выше отрывок из конфигурационного файла позволяет такую настройку.
В файле конфигурации есть userlist_enable = YES и userlist_file = ... для управления именами пользователей, которые могут использовать FTP. Это не позволяет созданным по умолчанию пользователям (таким как pi в Raspbian) входить в систему с паролем по умолчанию, при условии, что он не был изменен. (Однако пароль по умолчанию, очевидно, следует изменить.)
Чтобы использовать приведенные выше директивы и разрешить анонимный вход в систему, пользователь «анонимный» должен быть назван в файле вместе с утвержденными именованными пользователями.