ubuntu16.04下安装FTP
一、vsftpd
1. 安装
sudo apt-get install vsftpd
安装完成后系统默认自动启动vsftpd服务
2. 运行
- 启动ftpd服务
sudo service vsftpd start
- 停止ftpd服务
sudo service vsftpd stop
- 重启ftpd服务
sudo service vsftpd restart
- 查看21号端口是否打开
sudo netstat -npltu | grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 13072/vsftpd
- 查看当前ftpd运行状态
sudo service vsftpd status
二、/etc/vsftpd.conf 相关配置
1. 基本配置项
# 设置为YES时vsftpd以独立运行方式启动,设置为NO时以xinetd方式启动
#(xinetd是管理守护进程的,将服务集中管理,可以减少大量服务的资源消耗)
listen=YES
# 同上,如果支持ipv6网络则有效
listen_ipv6=NO
# 是否支持匿名用户访问
anonymous_enable=NO
# 是否支持本地用户访问
local_enable=YES
# 是否开放本地用户写权限,即是否允许上传
write_enable=YES
# 本地用户上传文件的权限掩码
local_umask=022
# 是否允许匿名用户上传文件
#anon_upload_enable=YES
# 是否允许匿名用户创建目录
#anon_mkdir_write_enable=YES
# 用户进入目录时是否显示message_file指定的文件内容(需要添加message_file配置项)
#dirmessage_enable=YES
# 强制ftp数据传输使用20端口,默认YES
connect_from_port_20=YES
# 登陆后显示的信息(欢迎信息)
ftpd_banner=Horizon FTP.
# 为YES时,禁止所有用户访问上级目录,只能访问各自的家目录
chroot_local_user=YES
# 如果禁止所有用户访问上级目录,即chroot_local_user=YES,则该项需配置为YES
# 如果没有配置该项,则要求ftp根目录权限不可写,否则登录时报:500 OOPS错误
# vsftp2.3.5之后版本,该配置项需要手动添加
allow_writeable_chroot=YES
# 和前面同名配置项一样
chroot_local_user=YES
# 设置chroot_list_file是否有效
chroot_list_enable=YES
# 当chroot_list_enable=YES时,该文件生效,该文件需要手动添加,存放用户列表
# 如果所有用户被限制只能访问家目录,禁止访问上级目录(即chroot_local_user=YES)
# 那么该文件内的用户为特权用户,可以不被限制地访问家目录之上的目录
# 反之,如果所有用户都不被限制,都可以访问上级目录,即(chroot_local_user=NO)
# 则该文件内部的用户为被限制的用户,只能访问各自家目录,禁止访问上级目录
chroot_list_file=/etc/vsftpd.chroot_list
# 设置vsftpd使用utf8编码的文件系统
utf8_filesystem=YES
以上列出的只是部分配置项,没列出的配置项保持默认即可
2. 相关文件
/etc/ftpusers 文件
该文件内的用户一律禁止ftp连接,默认列表包括了root, daemon, nobody等。需要禁止某个用户,把用户名添加进来即可。userlist_file 文件
该文件需手动创建和指定,一般设置成/etc/vsftpd.user_list,和以下三个配置项相关:
# 是否使userlist_file配置的文件生效
userlist_enable=YES
# 设置为YES时,userlist_file指定文件内的用户被禁止连接,类似于ftpusers
# 设置为NO时,只允许userlist_file指定文件内的用户连接,限制其他一切用户
userlist_deny=YES
# 文件名和路径可自由指定
userlist_file=/etc/vsftpd.user_list
# 新版vsftpd配置文件默认没有这三个配置项,要手动添加,个人认为一般不需要添加
# 需要限制连接使用/etc/ftpusers文件即可
- chroot_list 文件
该文件需要手动创建和指定,文件名和路径可自由指定,相关配置项有chroot_local_user、chroot_list_enable和chroot_list_file,具体配置相关参考上面配置文件注释说明。
三、运行模式和访问控制
1. 运行模式
- stand alone
stand alone指的是一直运行vsftpd,占用资源,提供ftp服务,默认运行就是这种方式
sudo service vsftpd start
- super daemon
super daemon指的是有需要时由xinetd启动vsftpd服务。
需要修改 vsftpd.conf 配置文件
listen=NO
这里若不改成NO,会出现下列错误
500 OOPS: could not bind listening IPv4 socket
安装xinetd
sudo apt-get install xinetd
sudo vi /etc/xinetd.conf
service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
log_on_success += DURATION USERID
log_on_failure += USERID
nice = 10
disable = no
}
停止vsftpd,启动xinetd
sudo service vsftpd stop
sudo service xinetd start
查看端口
$ sudo netstat -npltu | grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 16787/xinetd
2. 访问控制
建议参考:Vsftpd-Ubuntu中文
其中第10、11部分和访问控制相关