Ubuntu16.04搭建FTP服务器
最近工作需要,要在Ubuntu系统下搭建ftp服务器,安装过程中也遇到了很多的问题,特此记录一下
注:本文为博主原创文章,未经博主允许不得转载。 如需转载请注明出处,否则必定追究法律责任
https://blog.csdn.net/weixin_44232093/article/details/97760997
1. 安装vsftpd
sudo apt-get install vsftpd
1.1 安装后打开ftp配置文件
vim /etc/vsftpd.conf
2. 配置文件
- 原配置文件内容和解释
#ftp服务器是否处于独立启动模式
listen=NO
listen_ipv6=YES
#是否允许匿名访问,NO为不允许
anonymous_enable=NO
#是否允许本地用户访问
local_enable=YES
#是否允许写操作
write_enable=YES
#新建文件权限,新建后的文件的权限就是777-022=755 文件所有者可读可写可执行
local_umask=022
#允许为目录配置显示信息,显示每个目录下面的message_file文件的内容
dirmessage_enable=YES
use_localtime=YES
#开启日志记录
xferlog_enable=YES
#绑定端口号20
connect_from_port_20=YES
#日志记录的路径
xferlog_file=/var/log/vsftpd.log
#设置日志格式为标准输出
xferlog_std_format=YES
#欢迎语句,在使用shell时可以看到
ftpd_banner=Welcome to FTP service.
#是否限制本地所有用户切换根目录的权限,YES为开启限制,即登录后的用户不能访问ftp根目录以外的目录,当然要限制啦
chroot_local_user=YES
#是否启动限制用户的名单list为允许模式,上面的YES限制了所有用户,可以用这个名单作为白名单,作为例外允许访问ftp根目录以外
chroot_list_enable=YES
#设置哪个文件是list文件,里面的用户将不受限制的去访问ftp根目录以外的目录
chroot_list_file=/etc/vsftpd.chroot_list
secure_chroot_dir=/var/run/vsftpd/empty
#原配置中为vsftpd,ubuntu用户需要更改成ftp
pam_service_name=ftp
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
#上传的文件不乱码
utf8_filesystem=YES
3. 配置内容
- ftp配置文件,可以完全替代原配置文件,复制粘贴即可
#这些设置系统默认是开启的,可以不管
listen=NO
listen_ipv6=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
#下面的就要自定义设置了,建议系统默认的不管,然后复制下面的
#是否允许匿名访问,NO为不允许
anonymous_enable=NO
#是否允许本地用户访问,就是linux本机中存在的用户,YES允许
local_enable=YES
#是否开启写模式,YES为开启
write_enable=YES
#新建文件权限,一般设置为022,那么新建后的文件的权限就是777-022=755
local_umask=022
#是否启动userlist为通过模式,YES的话只有存在于userlist文件中的用户才能登录ftp(可以理解为userlist是一个白名单),NO的话,白名单失效,和下面一个参数配合使用
userlist_enable=YES
#是否启动userlist为禁止模式,YES表示在userlist中的用户禁止登录ftp(黑名单),NO表示黑名单失效,我们已经让userlist作为一个白名单,所以无需使用黑名单功能
userlist_deny=NO
#指定哪个文件作为userlist文件,我们稍后编辑这个文件
userlist_file=/etc/vsftpd.user_list
#是否限制本地所有用户切换根目录的权限,YES为开启限制,即登录后的用户不能访问ftp根目录以外的目录,当然要限制啦
chroot_local_user=YES
#是否启动限制用户的名单list为允许模式,上面的YES限制了所有用户,可以用这个名单作为白名单,作为例外允许访问ftp根目录以外
chroot_list_enable=YES
#设置哪个文件是list文件,里面的用户将不受限制的去访问ftp根目录以外的目录
chroot_list_file=/etc/vsftpd.chroot_list
#是否开启写模式,开启后可以进行创建文件夹等写入操作
allow_writeable_chroot=YES
#设置ftp根目录的位置,这个文件我们稍后自己创建
local_root=/var/myftp
# ftp服务器被动模式端口范围,如果不关闭防火墙的话只需要开放一个30000端口即可访问ftp了
pasv_enable=YES
pasv_max_port=30000
pasv_min_port=30000
3.1 创建用户+配置ftp
// 1. 保存退出后重启vsftpd
sudo /etc/init.d/vsftpd restart
// 2. 添加用户 ftpuser是用户名
sudo useradd -d /var/myftp ftpuser
// 3. 设置密码,这里密码属于不可见,输入后回车再次确认即可
// ftpuser是上面设定的用户名
sudo passwd ftpuser
// 4. 添加ftpuser到白名单
vim /etc/vsftpd.user_list
// 5. 不写或者添加ftpuser使用户能访问ftp根目录以外目录
vim /etc/vsftpd.chroot_list
// 6. 创建文件夹,使用下面命令设置权限
mkdir /var/myftp
4. 创建文件夹设置权限
chmod 555 /var/myftp
cd /var/myftp
mkdir upload
chmod 755 upload
mkdir download
chmod 555 download
上述命令可以看自己的具体需求,我这里在根目录下禁止此用户写,然后下面建两个文件夹,一个download只允许读取,upload允许写和读
5. ftp登录出现530错误
- 在命令行输入
ftp XXX.XXX.XXX.XXX
后面为你的ip地址,输入用户名密码 - 如果登录出现530错误:
// 1. 配置 vsftpd
vim /etc/pam.d/vsftpd
// 2. 注释掉 auth required pam_shells.so
- ls一下,如果失败
passive mode
切换为被动模式 - 可以在浏览器输入同样的ftp XXX.XXX.XXX.XXX查看ftp目录
6. 550 create directory operation failed问题解决
- 出现这个问题主要是系统中的selinx开启了保护模式,只需要把文件保护关掉就可以了
// 1. 查看 SELinux 的状态
sestatus -b | grep ftp
// 2. 设置其中之一为on即可
setsebool -P ftpd_disable_trans on
setsebool -P ftp_home_dir on
// 3. 重启ftp
/etc/init.d/vsftpd restart
7. ftp服务器上传/下载文件
7.1 上传文件
- 在ubuntu系统中登录你的ftp服务器用户
- 登录成功后在命令行输入上传命令
put
(local-file) /var/myftp/1.jpg
出现(local-file前缀)意思为:本地上传文件的路径,回车确认(remote-file) upload/2.jpg
出现(remote-file前缀)意思为:上传到ftp服务器的目录路径,回车确认- 上传成功后可以通过目录查看,也可以通过浏览器输入
ftp XXX.XXX.XXX.XXX
查看 - 注意:上传的原文件要写到文件后缀,不然上传不上去,也就是必须确认文件格式
7.2 下载文件
- 下载就比较简单了,登录成功后在命令行输入
get
命令 (remote-file) upload/2.jpg
,输入下载文件的目录路径,回车确认(local-file) /var/myftp/3.jpg
输入下载后文件保存的位置,回车确认- 上传成功后可以通过目录查看,也可以通过浏览器输入ftp XXX.XXX.XXX.XXX查看
- 注意:上传的原文件要写到文件后缀,不然上传不上去,也就是必须确认文件格式
借鉴链接为:https://www.cnblogs.com/dupengcheng/p/6790143.html
借鉴链接为:https://blog.csdn.net/qq_33279781/article/details/73607466