LinuxService- FTP理论及CentOS7安装使用FTP

引言:FTP,file  transfer  protocol,文件传输协议。用于Windows与Linux系统,Linux系统间的文件传输。


1  文件传输方式

ASCII码传输:传输网页文件              binary二进制传输:传输可执行文件

2  FTP服务器的两种工作模式

FTP服务是基于C/S架构的,端口是TCP的20(数据传输),TCP的21(建立连接)

1)主动模式:客户端开启一个大于1024的随机端口n连接服务器的21号端口,并告知服务器自己的数据传输端口是n+1号端口,服务器使用20号端口连接客户端的n+1号端口进行数据传输。

2)被动模式:客户端开启一个大于1024的随机端口n连接服务器的21号端口,并告知服务器自己的数据传输端口是n+1号端口,服务器通过已经建立的连接告知客户端自己的数据传输端口为大于1024的随机端口m,客户端使用自己的数据端口n,连接服务器端的端口m进行数据传输。

3  配置FTP服务

1) 配置服务器端

第一步 安装软件        yum    install    vsftpd   -y

第二步 启动服务        systemctl   restart   vsftpd

注:查看服务状态   #systemctl  status   vsftpd     // -l参数,显示详情

设置开机自启   #systemctl  enable  vsftpd

查看端口状态   #lsof  -i   21

2) 配置client端

第一步 安装软件        yum    install    ftp   -y

第二步 使用匿名账户访问FTP服务器    ftp   服务器IP/服务器主机名

       匿名账户: 账户名ftp ,密码 随便(随便输任何东西或者不输密码都行)

注1:匿名账户登录进去之后,是客户端在以服务器的账户在登录服务器,所登录的位置默认是服务器的/var/ftp目录下

注2:服务器主机名得能够解析才行

3) FTP里面的内置命令:

切换数据传输模式:ascii(使用ASCII模式传输);binary(使用二进制模式传输)

get   下载                put       上传       

exit   退出               !命令     运行系统命令

delete 删除文件            rmdir   删除目录

mget  文件1  文件2  ……        批量下载

mput  文件1  文件2  ……        批量上传

注:匿名账户的默认权限仅限于下载文件

4 设置FTP匿名账户登录权限

4.1 设置匿名账户上传文件、建立目录权限

1)在服务器端

第一步:编辑vsftpd配置文件   vim  /etc/vsftpd/vsftpd.conf

//vsftpd ——very safe ftpd  非常安全的FTPD

第二步:取消29和33行注释,29  允许匿名账户上传文件 ,33  允许匿名账户创建目录

29  anon_ upload_enable=YES

33  anon_mkdir_write_enable=YES

第三步:修改  /var/ftp/pub 目录的属主和属组  #chown  -R  ftp.ftp  /var/ftp/pub

第四步:重启ftp服务    #systemctl  restart  vsftpd

2)在客户端测试。匿名账户登录的默认位置是 /var/ftp,/var/ftp/pub,也就是服务器与客户端通过该目录进行通信。改完之后,在/var/ftp下只能下载,/var/ftp/pub下能够下载、上传、创建目录

注意:客户端在一定时间后会与服务器断开连接,这时候重新登录即可。

4.2 设置匿名账户删除目录权限(是在4.1的基础上做的)

1)在服务器端

第一步:编辑配置文件   vim    /etc/vsftpd/vsftpd.conf

第二步:添加           anon_other_write_enable=YES

第三步:重启服务       systemctl  restart  vsftpd

2)在客户端测试。delete文件或rmdir 目录 都得在pub下才能进行。

4.3  vsftpd配置文件解读(了解)

#12 开启匿名访问                        #16 允许本地的实体账户登录

#19 允许实体账户具有写权限              #23创建文件的权限为644(实体账户)

#29 允许匿名账户上传文件(不能上传目录)#33匿名创建目录的权限

#37 记录访问的开启                      #40 开启日志记录功能

#43 开启20号端口的数据传输             #48/49改变上传文件的属主

#53 日志所在的路径及文件名              #57 日志记录时是否采用标准格式

#60 会话连接超时600s                   #63 数据传输超时120s

#82 上传数据传输模式                    #90 不允许匿名用户的邮箱地址作为其密码

#92 记录文件的邮箱地址                 #100 只让其在默认登录的位置活动

#101 开启其列表功能                    #103 列表的存放位置及路径

#114 拒绝监听(ipv4)                 #123 ipv6监听 能帮助ipv4

#125 用户认证                         #126 只要在列表中的用户,都不能登录ftp

#127 采用tcp封装

5  使用实体账户登录FTP

1)在服务器端  

创建实体账户   useradd   aa

设置登录密码   passwd    aa

2)在客户端测试

ftp   服务器IP/主机名

账户名    aa

账户密码  账户aa对应的密码

注:实体账户登录到服务器的默认位置为实体账户对应的家目录 /home/某账户,比如/home/aa

3)实体账户的默认权限为:  上传  下载   删除文件   创建/删除目录。用aa账户登录的话,这些操作都只能在/home/aa下进行

6 禁止账户登录

1)通过  /etc/vsftpd/user_list 文件和配置文件来控制用户登录(不推荐)

如果配置文件中 userlist_enable=NO,则此时user_list文件失效,即列表内与列表外用户均可登录;

如果配置文件中 userlist_enable=YES,userlist_deny=NO,此时user_list中的用户只允许列表内的用户登录;

如果配置文件中 userlist_enable=YES,userlist_deny=YES,此时user_list中的用户禁止登录。

2)将不允许登录的实体用户名写入至 /etc/vsftpd/ftpusers 文件即可

例:直接在文件后面添加用户名 aa 

注:安全起见,一般都是不允许root登录的

7 实现对本地实体账户进行chroot

chroot 是更改用户的根目录,实体账户的根目录就是实际根目录,而匿名账户的根被chroot了,所以匿名账户的根就是/var/hup。不被chroot是指不会修改用户主目录位置

对实体账户实现chroot

1)在服务器端

第一步:编辑配置文件  vim  /etc/vsftpd/vstpd.conf ,去掉101,102,104行的注释。

101 对本地实体账户进行chroot

102 使用chroot_list文件控制被chroot 的账户

104 设定chroot_list 文件所在位置

第二步:将不被chroot的本地实体用户写入至 /etc/vsftpd/ chroot_list文件中,如果文件不存在,则创建该文件

第三步:重启服务  systemctl  restart  vsftpd

2)在客户端测试

如果被chroot的账户无法登录服务器,服务器报错为500,则需要在服务器端编辑配置文件  vim   /etc/vsftpd/vstpd.conf  。在最后添加  allow_writeable_chroot=YES。然后重启服务即可。

8 使用虚拟账户登录

    实体账户登录有安全隐患,从而建立虚拟账户,虚拟账户是服务器端没有的账户。实体账户与虚拟账户建立映射关系后,所有实体账户就都不能登录了。

1)配置服务器端

第一步 创建虚拟账户文件  vim  /root/f.txt ,文件内容如下

       虚拟账户名               如  test

       虚拟账户对应密码             123

第二步 通过虚拟账户文件生成虚拟账户验证使用的数据库文件

   db_load   -T   -t  hash   -f   虚拟账户文件    虚拟账户数据文件

例:db_load   -T   -t   hash   -f   /root/f.txt    /etc/vsftpd/xuni.db

//  /etc/vsftpd/xuni.db是所生成的数据库,f.txt与xuni.db放在哪里都行

注:-T 通过文本文件生成数据库文件   ;   -t指定加密算法(hash算法)

-f指定账户文本文件

第三步 生成虚拟账户验证文件

cp   /etc/pam.d/vsftpd    /etc/pam.d/vsftpd.bak         

//认证之前将原有的文件进行备份,  .bak 是备份后缀

cp   /usr/share/doc/vsftpd-*/EXAMPLE/VIRTUAL_USERS/vsftpd.pam    /etc/pam.d/vsftpd//通过PAM验证虚拟账户,将ftp虚拟账户的相关模板文件复制到认证文件中进行认证,copy后的文件只能放在/etc/pam.d下

第四步 修改验证文件  vim   /etc/pam.d/vsftpd,去掉验证模块的路径,修改验证虚拟账户使用的数据库

例:将原有的auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login

account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

改为    auth  required   pam_userdb.so   db=/etc/vsftpd/xuni

account   required  pam_userdb.so   db=/etc/vsftpd/xuni

//将虚拟用户的信息加入到认证文件中(即指定虚拟用户的数据库),在pam中的验证数据库不用加 .db 。db=/etc/vsftpd/xuni这个路径必须与第二步的一致

第五步 配置虚拟账户映射本地实体账户,这样的话,虚拟账户登录之后就会登录到本地实体账户家目录下

修改实体账户家目录权限  chmod  -Rv   555   /home/aa

      编辑配置文件            vim   /etc/vsftpd/vstpd.conf

      在配置文件末尾添加      guest_enable=YES

guest_username=aa

第六步 重启服务               systemctl  restart  vsftpd

2)客户端使用虚拟账户登录测试。ftp  服务器IP/服务器主机名  ,用户名是test,密码是123 。该虚拟账户只有下载权限。


转载请注明出处,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼刺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值