本文简单介绍一些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=YESchroot_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 --> offallow_ftpd_full_access --> offallow_ftpd_use_cifs --> offallow_ftpd_use_nfs --> offftp_home_dir --> offftpd_connect_db --> offftpd_use_passive_mode --> offhttpd_enable_ftp_server --> offtftp_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