本文简单介绍一些vsftpd的配置完成相应的需求

(前提是防火墙放行,SELINUX关闭,后面会提开启情况)

1.匿名用户下载FTP服务器里的文件

       vsftpd安装好之后,默认是匿名可以下载的,故不许要做任何配置修改,只需要将服务启动即可。实际上因为配置文件里已经帮你做好了,它依赖的选项是:anonymous_enable=YES,另外注意自己的供下载的目录的权限。

2.匿名用户上传文件的功能

      默认情况匿名是不能上传文件的。将下面两行的注释打开就可以了。

anon_upload_enable=YES
anon_mkdir_write_enable=YES

但是会发现匿名用户上传的权限是属于ftp用户,并且只有ftp用户可读写。更改匿名用户上传的默认权限通过在配置文件里加入anon_umask=022实现任何人可读(默认077).

匿名用户不能创建文件,目录,通过:

anon_other_write_enable=YES

3.对本地用户进行chroot,也就是不允许本地用户切到根目录下去,将本地用户锁在自己的家目录

    通常使用本地用户登录FTP服务器时候,默认是可以切到根目录下的,这样对系统造成了安全隐患。打开下面几个注释

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

然后创建/etc/vsftpd/chroot_list文件,里面的用户就是允许切根目录的用户,没有填写也就意味着不允许切换到根目录下。

4.建立一个禁止登录的用户名单

  其实有两个档案,一个是 PAM 模块管的,一个是 vsftpd 主动提供的,在预设的情况下这两个档案分别是:

  • /etc/vsftpd/ftpusers:就是 /etc/pam.d/vsftpd 这个档案的设定所影响的;

  • /etc/vsftpd/user_list:由 vsftpd.conf 的 userlist_file 所设定。

如果是第一个,保证这一句存在 pam_service_name=vsftpd,然后将禁止登录的用户加入到/etc/vsftpd/ftpusers这个文件就可以了。

如果是第二个,稍微麻烦点,有两种功能,默认是在/etc/vsftpd/user_list列表的用户禁止登录的,但是若想只允许这个文件列表内的用户登录的话,要在配置文件里加入userlist_deny=NO

例如你想只允许本机的一个叫test用户登录ftp服务器的话,就在/etc/vsftpd/user_list写入test即可。

5.SELINUX的一些问题

 如果环境存在selinux的话,在匿名用户上传的时候需要修改bool值。

[root@instructor vsftpd]# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_use_passive_mode --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off

将第一个allow_ftpd_anon_write --> off 改为on就可以了。

setsebool -P allow_ftpd_anon_write=on

在chroot的时候也会受到selinux的影响,将ftp_home_dir --> off改为on就可以了

setsebool -P ftp_home_dir=on