引用一个其他大佬对vsftpd的描述:
vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。 vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。 比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。 vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。
安装只需要一句命令就可以:
yum install vsftpd -y
vsftpd默认安装目录
# which vsftpd
/usr/sbin/vsftpd
安装目录中跟配置相关的文件
---ftpusers // 指定哪些用户不能访问FTP服务器
---user_list // 指定是否可以访问ftp服务器的用户列表,具体是否可以访问由vsfpd.conf这种的userlist_deny决定
---vsftpd.conf // 主配置文件
ftpusers中的名单配置默认是生效的。一般ftpusers中已经定义好一些系统中重要的用户,这些用户不允许访问FTP服务器。
vsftpd.conf是主配置之文件,其中文件底部的userlist_enable决定user_list文件是否起作用userlist_file的值指的是当userlist_enable=YES时具体起作用的user_list路径。当userlist_enable=YES开启时user_list中的用户是可以访问FTP还是不可以访问FTP由userlist_deny的值决定。如:
1.user_enable=YES、userlist_deny=NO表示user_list文件中的用户允许访问FTP
2.user_enable=YES、userlist_deny=YES表示user_list文件中的用户不允许访问FTP
至此就可以基本配置哪些用户可以连接FTP服务器,基本可以使用。
默认情况下所有允许连接到FTP的用户登录服务器时都是可以*切换目录甚至是切换到根目录的。如果需要限制某些用户连接FTP的时候只能限制在自己的主目录则需要配置vsftpd.conf文件中的chroot_系列参数:
---chroot_list_enable //设置是否启用chroot_系列参数 YES-开启 NO-关闭
---chroot_local_user //是否将用户限制在主目录中 YES-指定名单中的用户可以任意切换目录 NO-指定名单中的用户不可以任意切换目录
---chroot_list_file //要限制的用户列表文件所在的路径,这个文件默认是没有的,需要自己创建
service vsftpd start //启动服务 service vsftpd stop //停止服务 service vsftpd restart //重启服务
另外vsftpd配置好chroot_系列的数据后也有可能有链接不上或者其他切换不到目录的问题。这可能是因为SELinux开启了的原因。这个东西具体没有深入研究,据说是为了加强Linux系统的访问控制的。
SELinux的配置文件在/etc/selinux/config。
# vi /etc/selinux/config //编辑配置 # This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=1 #selinux是否开启 1-开启 enable-开启 0-关闭 disabled-关闭
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
# getsebool -a| grep ftp #查看selinux中关于ftp的配置值
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off #这个设置影响了ftp正常配置的启用状况
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off
#setsebool allow_ftpd_full_access on # 设置ftpd获取全部权限,将ftpd_full_access设置为启用
关于selinux的设置,每设置一次都需要重启系统才可以生效。
至此VSFTPD已经可以正常使用!
相关链接: