linux上搭建ftp

使用的linux系统 centos7
主机IP 192.168.100.10
搭建目的 能够利用ftp上传或下载文件
学习内容 (1)ftp的搭建(2)ftp常见的协议码(3)ftp的黑白名单

ftp的搭建

1.使用yum安装vsftpd,创建vsftpd使用的系统用户,主目录为/home/vsftpd。创建之后所有虚拟用户使用这个系统用户访问文件。

[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# useradd vsftpd -d /home/vsftpd -s /sbin/nologin

2.创建虚拟用户主目录,比如虚拟用户叫aqiang

[root@localhost ~]# mkdir -p /home/vsftpd/aqiang
[root@localhost ~]# vi /etc/vsftpd/users.conf  #创建虚拟用户
aqiang
123456

3.根据这个文件创建数据库文件:(这一步主要为了将验证口令转换成系统识别的口令验证文件)

[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/users /etc/vsftpd/users.db     # 将用户信息文件转换为数据库并使用hash加密
[root@localhost ~]# chmod 600 /etc/vsftpd/users.db
[root@localhost ~]# chmod 600 /etc/vsftpd/users

4.启用数据库文件,编辑PAM认证文件:

[root@localhost ~]# vi /etc/pam.d/vsftpd
#增加下面内容,不能加在auth文末,建议加载文件最前面
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users

注意:如果是本地用户登录ftp,就不需要添加这两行pam认证,如果是虚拟用户需要加。因为虚拟用户用到了.db认证

5.创建虚拟用户配置文件:

[root@localhost ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@localhost ~]# vi /etc/vsftpd/vsftpd_user_conf/aqiang
local_root=/home/vsftpd/aqiang    # 当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。 
anon_upload_enable=YES  #允许登录用户有上传权限
write_enable=YES            # 是否允许登陆用户有写权限。

6.修改主配置文件:

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO        #禁止匿名用户登录
增加下面配置参数:
chroot_local_user=YES        #禁止用户访问除主目录以外的目录
guest_enable=YES           #启用虚拟用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf    #虚拟用户使用的配置文件目录
allow_writeable_chroot=YES        # 允许写入用户主目录

7.重启服务生效配置文件:

[root@localhost ~]# systemctl restart vsftpd

8、测试
(1)创建一个文件测试是否能够使用

[root@localhost aqiang]# touch /home/vsftpd/aqiang/test.txt 

(2)在windows上安装FileZilla软件
(3)测试是否能够上传和下载文件
上传:
linux上搭建ftp_第1张图片
下载:
linux上搭建ftp_第2张图片

ftp协议码

大致分类如:

1开头:表示服务器信息    
2开头:正确响应的信息   
3开头:正常响应,但某一操作尚未完成,需进一步补充完成
4开头:表示客户端错误   
5开头:表示服务器端错误
120	服务在nnn分钟内准备好	
125	数据连接已打开,准备传送
150	文件状态良好,打开数据连接	
200	命令成功
202	命令未实现	
211	系统状态或系统帮助响应
212	目录状态	
213	文件状态
214	帮助信息,信息仅对人类用户有用	
215	名字系统类型
220	对新用户服务准备好	
221	服务关闭控制连接,可以退出登录
225	数据连接打开,无传输正在进行	
226	关闭数据连接,请求的文件操作成功
227	进入被动模式	
230	用户登录
250	请求的文件操作完成	
257	创建"PATHNAME" 
331	用户名正确,需要口令	
332	登录时需要帐户信息
350	请求的文件操作需要进一步命令	
421	连接用户过多
425	不能打开数据连接	
426	关闭连接,中止传输
450	请求的文件操作未执行	
451	中止请求的操作:有本地错误
452	未执行请求的操作:系统存储空间不足	
500	格式错误,命令不可识别
501	参数语法错误	
502	命令未实现
503	命令顺序错误	
504	此参数下的命令功能未实现
530	账号或密码错误	
532	存储文件需要帐户信息
550	未执行请求的操作	
551	请求操作中止:页类型未知
552	请求的文件操作中止,存储分配溢出	
553	未执行请求的操作:文件名不合法

设置ftp黑白名单:

一、
ftpusers和user_list两个文件用途和区别:
ftpusers它不受任何配置项影响,总是有效,是黑名单!
user_list 则是和vsftpd.conf中的userlist_enable和userlist_deny两个配置项紧密相关的,它可以有效,也可以无效,有效时它可以是一个黑名单,也可以是一个白名单!

二、userlist_enable和userlist_deny两个选项联合起来针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在在user_list文件中的用户这三类用户集合进行的设置。
1、 当且仅当userlist_enable=YES时:userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,本地全体用户(除去ftpusers中的用户)都可以登入FTP
2、 当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;
当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous

测试一、
当userlist_enable=YES时,userlist_deny=YES时,测试user_list是否成为黑名单

执行以下命令新建两个用户,并设置密码

# useradd test1
# useradd test2
# passwd test1
# passwd test2

打开user_list_enable并添加Userlist_deny=YES
linux上搭建ftp_第3张图片
将test1用户加入名单
linux上搭建ftp_第4张图片
测试test1是否能够登入
linux上搭建ftp_第5张图片

测试二、
当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单:
测试test1是否能正常登录,而test2是否因为不在白名单内而被拒绝登录linux上搭建ftp_第6张图片
在user_list里加入test1用户linux上搭建ftp_第7张图片
测试登录test1能否正常登入linux上搭建ftp_第8张图片
测试test2是否被拒绝登入linux上搭建ftp_第9张图片

你可能感兴趣的:(linux上搭建ftp)