搭建FTP服务
本人学习linux现在来说还是属于野路子,自学,没有受过专业的培训,所以写的如果有错误的地方,希望各位给指出,加以改正。
ftp服务的登录方式分为三种:
匿名用户
本地用户
虚拟用户
虚拟FTP服务器
前期 准备工作
rpm -qa |grep vsftp --查看机器中是否安装了vsftp
yum install -y vsftpd --安装ftp
systemctl start vsftpd --开启服务
ps -eaf|grep vsftp --查看进程是否起来
netstat -anp|grep :21 --查看ftp的默认端口是否处于监听状态
iptables -F --清空防火墙规则
vim /etc/selinux/config --或者关闭selinux
SELINUX=disabled
systemctl stop firewalld --关闭防火墙
systemctl disable firewalld -- 也可以设置开机不再启动
匿名用户登录
此时登录,是以匿名用户登录的,可以下载文件,不可以上传文件。
修改配置文件,配置文件位于/etc/vsftpd/vsftpd.conf
anonymous_enable=YES --允许匿名用户登录
local_enable=YES --允许本地用户登录
write_enable=YES -- 允许登录的用户拥有写入权限,属于全局设置 anon_upload_enable=YES -- 匿名用户上传文件的权限
anon_mkdir_write_enable=YES --匿名用户创建文件,写入的权限
anon_other_write_enable=YES --需要自己在配置文件中添加 匿名用户能够删除文件的设置
上面的这些选项,将#号都给取消
将配置文件给修改后还需要将赋予权限
在/var/ftp目录中创建目录并加入ftp组中:
mkdir upload
chown ftp:ftp upload
注意每次修改文件后都需要将服务器重启,客户端也需要将窗口关闭再重新打开
本地用户登录:
最简单的办法:
将ftpusers和userlist内的root给注释掉,即将黑白名单中的root去掉,就能够登录了。
也可以再使用创建一个用户的方法:
mkdir /home/ftpsuer --创建一个用户的主目录
useradd -d /home/ftpuser user1 --创建一个user1用户
passwd user1 --修改user1用户的密码
chown user1:ftp /home/ftpuser --将user1用户加入ftp组中
chmod 777 /home/ftpuser --给用户的主目录赋予最大权限
虚拟用户登录:
虚拟用户的配置终于搞完了,其实一开始做的就是对的,原因是使用Windows作为客户端,linux作为服务器,莫名的就是不能登录,今天下午使用linux作为客户端测试了一下,配置成功。至于Windows为什么不行,可能是一个bug吧。各位如果遇到这样的问题,也可以像我这样换做linux当做客户端试一试。
建立虚拟用户目录
useradd -d /ftpuser -s /sbin/nologin vsftpuser
修改ftpuser目录的权限
chmod 777 /ftpuser
建立虚拟用户口令
vim /etc/vsftpd/ftpuserlist
mike
123
john
456
生成口令认证文件
yum install pam* libdb-utils libdb* --skip-broken -y
将创建的文本口令转换为库文件
cd /etc/vsftpd
db_load -T -t hash -f ftpuserlist ftpuserlist.db
选项-T允许应用程序能够将文本文件转译载入数据库。如果指定了选项-T,那么一定要追跟子选项-t。-t追加在-T选项后,用来指定转译载入的数据库类型。扩展介绍:-t可以指定的数据类型有Btree
Hash Queue Recon数据库。-f参数后面包含用户名和密码的文本文件。
建立PAM认证文件
cd /usr/share/doc/vsftpd-x.x.x/EXAMPLE/VIRTUAL_USERS
cp vsftpd.pam /etc/pam.d/ftp.vu
在ftp.vu原文件内容修改为下面的内容:
auth required /lib/security/pam_userdb.so db=/etcvsftpd/ftpuserlist
account required /lib/security/pam_userdb.so db=/etcvsftpd/ftpuserlist
修改vsftpd.conf配置文件
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_umask=022
guest_enable=YES --启用虚拟用户
guest_username=vsftpuser --将虚拟用户映射成本地用户
pam_service_name=ftp.vu --指定由这个pam文件来验证用户
创建单个用户配置文件
首先在vsftpd.conf配置文件中添加一行,用来指定个人配置文件的目录
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vuser
使用以命令创建虚拟用户名为mike和john的配置文件
mkdir /etc/vsftpd/vuser
cd /etc/vsftpd/vuser
touch mike
touch john
然后利用vim编辑器打开文件进行编辑
vim /etc/vsftpd/vuser/mike
anon_upload_enable=YES
anon_mkdir_enable=YES
download_enable=NO
vim /etc/vsftpd/vuser/john
anon_upload_enable=NO
anon_mkdir_enable=YES
download_enable=YES
重启vsftpd服务
systemctl restart vsftpd
注意一定要将客户端和服务器端都重启
测试虚拟用户
如果没有ftp,需要下载
yum install -y ftp*
ftp 192.168.109.132
注意当虚拟用户启用以后,本地用户将无法登录FTP服务器,即虚拟用户和本地用户无法共存。
配置文件解析
anonymous_enable=YES 允许匿名用户登录,默认主目录为/var/pub目录,只有下载并无上传权限
并且不能够给/var/pub目录赋予777权限,赋予后就不能登录了,但是可以给pub目录下新建一个目录,给新建的目录赋予777权限。
local_enable=YES 允许本地用户登录 在文件ftpusers(黑名单)中本地用户不允许登录,在userlist(白名单)中本地用户可以登录(在某些设置后是这样的,一般情况下直接将黑白名单中将本地用户给删除后重启服务,就能都本地登录了)
write_enable=YES 允许登录的用户拥有写入权限,属于全局设置
local_umask=022 本地用户登录后新建文件时的权限掩码
#anon_upload_enable=YES 匿名用户上传文件的权限
#anon_mkdir_write_enable=YES 匿名用户创建文件,写入的权限
dirmessage_enable=YES 第一次进入服务器时的提示消息
xferlog_enable=YES 启用xferlog日志文件
connect_from_port_20=YES 使用20号端口进行传输数据
#chown_uploads=YES 设置匿名用户上传文件(不是目录哦)的属主
#chown_username=whoever 属主名
#xferlog_file=/var/log/xferlog 日志文件的存放位置
xferlog_std_format=YES 日志文件将以“xferlog”格式写入
#idle_session_timeout=600 session超过时间
#data_connection_timeout=120 数据传输超过时间
#nopriv_user=ftpsecure 指定一个用户,当vsftpd要切换到无权限状态时,使用此用户。
#async_abor_enable=YES **一个特定的ftp命令 “async ABOR”
#ascii_upload_enable=YES 是否使用assic码方式上传文件
#ascii_download_enable=YES 是否使用assic码方式下载文件
#ftpd_banner=Welcome to blah FTP service. 定制欢迎信息
#deny_email_enable=YES 禁止匿名用户使用某些邮件地址
#banned_email_file=/etc/vsftpd/banned_emails 禁止邮件地址的文件路径
#chroot_local_user=YES 不允许本地用户切换到上级目录(no是允许,yes是不允许)
#chroot_list_enable=YES 系统用户限制在自己的home目录下、
#chroot_list_file=/etc/vsftpd/chroot_list 列出的是chroot用户列表
#ls_recurse_enable=YES 允许用户使用“ls”命令
listen=NO vsftpd是否以独立的服务启动
`
listen_ipv6=YES
注意:
listen=no和listen_ipv6=yes是不能同时开启的,默认listen=yes开启则listen_ipv6被注释掉,此时vsftpd只能监听到ipv4的请求,不能监听到ipv6的请求
pam_service_name=vsftpd 虚拟用户登录时,需要依据/etc/pam.d/vsftpd中内容进行认证
userlist_enable=YES 是否启用vsftpduserlist文件。
当userlist-deny=no时,只有该列表中的用户可以登录,centos7中默认就是no当userlist-deny=yes时,该列表用户将会在访问前被拒绝
tcp_wrappers=YES 设置vsftpd是否与tcp_wrapper 相结合来进行主机的访问
#如果ftpusers(黑名单)和userlist(白名单)中都有某个用户,则由于ftpusers优先级高的缘故,该用户不能登录
配置虚拟FTP服务器
复制副本
将vsftpd.conf配置文件复制一个副本
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd2.conf
为新的网卡添加新的IP地址
ifconfig ens33: 192.168.109.200 netmask 255.255.255.0
这样一个网卡就拥有两个IP地址
修改配置文件
编辑vsftpd2.conf配置文件,需要修改一下内容
vim /etc/vstpd/vsftpd2.conf
listen_address=192.168.109.200 --设置虚拟FTP服务器监听的IP地址
ftpd_banner=Welcome to virtual FTP --修改虚拟FTP的欢迎信息
anonymous_enable=YES --将虚拟FTP设置为匿名用户
重启vsftpd服务
systemctl restart vsftpd
在原配置文件vsftpd.conf中,添加一下内容
vim /etc/vsftpd/vsftpd.conf
listen_address=192.168.109.132 --旧的IP地址
保存配置文件后再次重启服务
systemctl restart vsftpd
测试
ftp 192.168.109.200