vsftpd用于本地用户和匿名login

我试图设置我的ftp服务器(vsftpd)给本地用户和匿名用户访问。

我希望本地用户对他们的主目录拥有写权限,但是匿名login只能读取一个目录,我可以把文件放到更广阔的世界去下载。

首先,这甚至有可能吗? 或者所有的login都必须是读取访问权限或写入访问权限,而不是两者的组合?

如果可能的话,我不能得到这个工作。 我目前的设置是当我尝试匿名login时给我“权限被拒绝”的错误。 本地用户访问正在按照我的要求工作。

任何人都可以发现我要去哪里错了,或者在下面的设置中失踪?

以下是为ftp文件夹设置的目录。 path是/ 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用户组,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 

所有可以login的用户都列在userlist_file(包括ftp)中。

我已经设法回答我自己的问题,玩一下。 我会详细回答供参考。

  1. 是的,有可能拥有特权“命名”的用户和非特权匿名用户。 上面的configuration文件提取允许此设置。

  2. 在configuration文件中有userlist_enable = YES和userlist_file = …来控制可以使用FTP的用户名。 这样可以防止默认创build的用户(如Raspbian上的pi)使用默认密码login,假定它尚未更改。 (显然,默认的密码应该改变。)

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