铭哥和佩佩的博客

铭哥和佩佩的博客分享Python、PHP、JavaScript、HTML5、CSS3等各种知识

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=YESchroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
② 当chroot_list_enable=YESchroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
③ 当chroot_list_enable=NOchroot_local_user=YES时,所有的用户均不能切换到其他目录。
④ 当chroot_list_enable=NOchroot_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插件。

none

添加新评论