linux(centos、ubuntu)搭建ftp服务器以及vsftp配置
1、安装vsftpd
1.1 ubuntu系统下安装
sudo apt-get install vsftpd
1.2 centos系统下安装
yum install vsftpd
2. 启动以及关闭命令
systemctl start vsftpd.service # 开启
systemctl stop vsftpd.service # 关闭
systemctl restart vsftpd.service # 重启
systemctl enable vsftpd.service # 开机自启动
3. 配置
配置文件路径
/etc/vsftpd/vsftpd.conf # unbuntu系统默认路径可能是 /etc/vsftpd.conf
配置详解 可根据自身要求进行配置
# 是否允许匿名访问
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 启用ftp写命令
write_enable=YES
# 设置文件或目录上传至服务器的权限; 022 表示文件权限644 目录权限755
local_umask=022
# 允许为目录配置显示信息,显示每个目录下面的message_file文件的内容
dirmessage_enable=YES
# 开启维护记录服务器上传和下载情况的日志文件
xferlog_enable=YES
# 使用wu-ftp日志格式 日志文件 /var/log/vsftpd.log
xferlog_std_format=YES
# 主动模式下,使用默认的20端口监听
connect_from_port_20=YES
# 以独立服务器监听ftp; 如果设置为No,表示以非独立服务器运行
# 所谓非独立服务,指的就是使用xinetd服务代替FTP服务来监听21端口,当有用户访问FTP服务的时候,xinetd服务就会自动启动FTP服务,并提供给用户访问
listen=YES
# PAM 服务名称,这里的设置决定PAM将为vsftpd使用配置文件
pam_service_name=vsftpd
# 设置vsftpd是否与tcp wrapper相结合来进行主机的访问控制。默认值为YES。如果启用,则vsftpd服务器会检查 /etc/hosts.allow 和 /etc/hosts.deny 中的设置,来决定请求连接的主机,是否允许访问该FTP服务器。这两个文件可以起到简易的防火墙功能。
# 比如:若要仅允许192.168.0.1—192.168.0.254的用户可以连接FTP服务器,则在/etc/hosts.allow文件中添加以下内容:
# vsftpd:192.168.0. :allow
# all:all :deny
tcp_wrappers=YES
#启动userlist 文件
userlist_enable=YES
# 决定vsftpd.user_list文件中的用户是否能够访问FTP服务器。若设置为YES,则vsftpd.user_list文件中的用户不允许访问FTP,若设置为NO,则只有vsftpd.user_list文件中的用户才能访问FTP。
userlist_deny=NO
#vsftpd.user_list文件路径 需要手动建立
userlist_file=/etc/vsftpd/user_list
# 指定用户列表文件(chroot_list)中的用户是否允许切换到上级目录
chroot_local_user=YES
# 启用chroot_list_file配置项指定的用户列表文件
chroot_list_enable=YES
#vsftpd.chroot_list 文件路径,需要手动建立
chroot_list_file=/etc/vsftpd/chroot_list
#允许文本模式下载
ascii_download_enable=YES
#允许文本模式上传
ascii_upload_enable=YES
#允许文本模式下载
ascii_download_enable=YES
#允许文本模式上传
ascii_upload_enable=YES
#启用被动模式
pasv_enable=YES
pasv_promiscuous=YES
pasv_min_port=60000
pasv_max_port=60020
# 允许家目录有写权限
allow_writeable_chroot=YES
3、控制用户访问
对于用户的访问控制可以通过/etc目录下的 vsftpd.user_list和ftpusers文件来实现。
3.1 vsftpd.user_list
vsftpd.user_list可以用通过配置文件中的userlist_enable
来指定是否开启,配置文件中的userlist_file
来指定vsftpd.user_list文件位置,通常需要手动建立。
vsftpd.user_list 文件中,里面写着用户名称,一个用户名称一行。
配置文件中userlist_deny
的设置,决定vsftpd.user_list文件中的用户是否能够访问FTP服务器。若设置为YES,则vsftpd.user_list文件中的用户不允许访问FTP,若设置为NO,则只有vsftpd.user_list文件中的用户才能访问FTP。
3.2 ftpusers
/etc/vsftpd/ftpusers文件专门用于定义不允许访问FTP服务器的用户列表
如果userlist_enable=YES
,userlist_deny=NO
,此时如果在vsftpd.user_list和ftpusers中都有某个用户时,那么这个用户是不能够访问FTP的,即ftpusers的优先级要高。
默认情况下vsftpd.user_list和ftpusers,这两个文件已经预设置了一些不允许访问FTP服务器的系统内部账户。如果系统没有这两个文件,那么新建这两个文件,将用户添加进去即可。
4、控制用户是否允许切换到上级目录
在默认配置下,本地用户登入FTP后可以使用cd命令切换到其他目录,这样会对系统带来安全隐患。可以通过以下三条配置来控制用户切换目录。
chroot_local_user=YES/NO # 指定用户列表文件(chroot_list)中的用户是否允许切换到上级目录
chroot_list_enable=YES # 启用chroot_list_file配置项指定的用户列表文件
chroot_list_file=/etc/vsftpd/chroot_list # vsftpd.chroot_list 文件路径,需要手动建立
通过搭配能实现以下几种效果:
① 当chroot_list_enable=YES
,chroot_local_user=YES
时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
② 当chroot_list_enable=YES
,chroot_local_user=NO
时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
③ 当chroot_list_enable=NO
,chroot_local_user=YES
时,所有的用户均不能切换到其他目录。
④ 当chroot_list_enable=NO
,chroot_local_user=NO
时,所有的用户均可以切换到其他目录。
5、设置只允许访问家目录
这个只有控制用户不允许访问上级用户目录即可,配置如下
chroot_list_enable=YES
chroot_local_user=YES
chroot_list_file=/etc/my_chroot_file
这样的意思是,只要不是在/etc/my_chroot_file
列出的用户,都被限制在了家目录
需要注意的是,从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!可能会出现如下错误
500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
这个时候,只要在配置文件中增加一条即可
allow_writeable_chroot=YES
这样用户就具有其家目录的写权限了
当然,最后修改完配置,记得重启ftp服务
6、客户端连接
ftp的客户端工具非常多,可以使用资源管理器连接,可以使用软件FileZilla
,sublime编辑器可使用FTPSync
插件。