vsftpd 适用于本地用户和匿名登录

vsftpd 适用于本地用户和匿名登录

我正在尝试设置我的 ftp 服务器(vsftpd)以允许本地用户和匿名用户访问。

我希望本地用户对其主目录具有写权限,但匿名登录只能对目录具有读权限,我可以将文件放入该目录以供更广泛的世界下载。

首先,这可能吗?还是所有登录都必须具有读取权限或写入权限,而不是两者的组合?

如果可能的话,我无法让它工作。当我尝试匿名登录时,我当前的设置会给我“权限被拒绝”错误。本地用户的访问工作正常,正如我所希望的那样。

有人能发现我哪里做错了,或者在以下设置中遗漏了什么吗?

以下是为 ftp 文件夹设置的目录。路径为 /var/ftp/(请注意,此处的本地用户没有 shell 或特定的主目录,因此将其移动到通用 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)。

答案1

我玩了一下之后终于回答了自己的问题。我将详细说明答案以供参考。

  1. 是的,可以有特权的“指定”用户和无特权的匿名用户。上面的配置文件摘录允许此设置。

  2. 在配置文件中有 userlist_enable=YES 和 userlist_file=... 来控制可以使用 FTP 的用户名称。这可以防止默认创建的用户(例如 Raspbian 上的 pi)使用默认密码登录,假设该密码尚未更改。(当然,默认密码应该更改。)

  3. 要使用上述指令并允许匿名登录,需要在文件中将用户“匿名”与批准的指定用户一起命名。

相关内容