ftp 服务

前言

FTP 是File Transfer Protocol(文件传输协议),
  用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。
用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,
并将执行的结果返回到客户机。例如,用户发出一条命令,要求服务器向用户
传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机
器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。

FTP一般应用于上传和下载
下载文件就是从远程主机拷贝文件至自己的计算机上;
上传文件就是将文件从自己的计算机中拷贝至远程主机上

vsftpd # 服务端软件
lftp   # 客户端软件,提供登陆环境
1.部署ftp服务的服务端
[root@localhost Desktop]# yum install -y vsftpd
[root@localhost Desktop]# yum install -y lftp
[root@localhost Desktop]# systemctl start vsftpd
[root@localhost Desktop]# systemctl enable vsftpd
[root@localhost Desktop]# netstat -antlp | grep vsftpd  # 查看到端口说明服务开启成功

在这里插入图片描述

[root@localhost Desktop]# firewall-cmd --permanent  --add-service=ftp
success
[root@localhost Desktop]#  firewall-cmd --reload
success
[root@localhost Desktop]# firewall-cmd --list-all	

在这里插入图片描述

[root@localhost Desktop]# vim /etc/sysconfig/selinux 
7 SELINUX=disabled
[root@localhost Desktop]# getenforce  # 查看到更改不生效,必须重启
Enforcing     # 开启内核加强型火墙
[root@localhost Desktop]# reboot
[root@localhost Desktop]# getenforce  # 重启之后再次查看
Disabled	 # 禁止服务
2.ftp服务的参数配置
ftp服务的基本信息:

vsftpd                        # 服务端软件安装包
/var/ftp                      # 默认发布目录
21/tcp                        # 协议接口
/etc/vsftpd/vsftpd.conf       # 服务配置文件

[root@localhost Desktop]# rpm -qc vsftpd  # 查看ftp服务的配置文件
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
[root@localhost Desktop]# cd /var/ftp/    # 这是ftp服务的默认发布目录
[root@localhost ftp]# ls
pub

在客户端测试
[root@foundation78 Desktop]# yum install -y lftp  # 如果客户端没有这个软件,就下载一个

(1)匿名用户访问(默认允许)

[root@foundation78 Desktop]# lftp 172.25.254.138  # 这是服务端IP
lftp 172.25.254.138:~> ls   # 查看到pub目录说明成功登陆
drwxr-xr-x    2 0        0               6 Aug 03  2015 pub

在这里插入图片描述

注:匿名用户登陆进去查看到的是默认发布目录里的内容,而且ftp服务对匿名用户的所有权限都禁止,除了可登陆权限和可读权限

(2)本地用户的访问

# 服务端(先建立本机用户)

[root@localhost Desktop]# useradd westos
[root@localhost Desktop]# passwd westos
[root@localhost Desktop]# useradd linux
[root@localhost Desktop]# passwd linux  

# 客户端测试
[kiosk@foundation78 Desktop]$ lftp 172.25.254.138 -u westos  # 指定本机用户登陆,默认的增删改查的功能都开启 
Password: 
lftp [email protected]:~> ls         
lftp [email protected]:~> mkdir file
mkdir ok, `file' created
lftp [email protected]:~> ls
drwxr-xr-x    2 1001     1001            6 Oct 28 06:39 file
lftp [email protected]:~> rm -fr file/
rm ok, `file/' removed
lftp [email protected]:~> ls
注:ftp服务对本地用户所有权限都开启,而且本地用户登陆进去的都是自己的本地家目录
3.对所有用户的权限进行管理
报错id的解析:
500   # 文件系统权限过大
530   # 用户认证失败
550   # 服务本身功能未开放
553   # 本地文件系统权限过小

(1)匿名用户

anonymous_enable=YES|NO                # 匿名用户是否可以登陆
anon_upload_enable=YES|NO              # 匿名用户是否可以上传
anon_world_readable_only=YES|NO        # 匿名用户是否可以下载,NO表示可以下载
anon_other_write_enable=YES|NO         # 匿名用户是否可以删除
anon_umask=022                         # 匿名用户上传的文件的权限
anon_max_rate=102400                   # 限制匿名用户下载的速度100k/s
anon_root=/directory                   # 匿名用户家目录的修改
max_clients=1                          # 匿名用户最大连接数 
chown_uploads=YES                      # 指定上传文件的所属用户 
chown_username=westos 
上传文件
lftp 172.25.254.138:/> put /etc/passwd    # 默认对匿名用户不可上传
put: Access failed: 550 Permission denied. (passwd)   

# 在服务端

[root@localhost Desktop]# cd /var/ftp
/[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf 
29 anon_upload_enable=YES    # 打开上传权限
[root@localhost ftp]# systemctl restart vsftpd.service 

# 在客户端
lftp 172.25.254.138:/> put /etc/passwd    # 再次上传,发现还是不能上传,报553错误
put: Access failed: 553 Could not create file. (passwd)

# 在服务端
[root@localhost ftp]# ls -l /var/ftp/     # 发现默认发布目录的只有对root用户可写
total 0
drwxr-xr-x. 2 root root 6 Aug  3  2015 pub
[root@localhost ftp]# chgrp ftp /var/ftp/pub/  # 把默认发布目录的组改为ftp组,匿名用户依赖的是ftp组
[root@localhost ftp]# chmod g+w /var/ftp/pub/  # 给ftp服务加可写权限
[root@localhost ftp]# ll -d /var/ftp/pub/
drwxrwxr-x. 2 root ftp 6 Aug  3  2015 /var/ftp/pub/        

在这里插入图片描述

# 在客户端

lftp 172.25.254.138:/pub> put /etc/passwd
2281 bytes transferred
lftp 172.25.254.138:/pub> ls
-rw-------    1 14       50           2281 Oct 29 11:48 passwd

在这里插入图片描述

可以发现上传的文件默认权限位600
更改上传文件权限
# 在服务端
[root@localhost ftp]# vim  /etc/vsftpd/vsftpd.conf    # 更改上传文件的默认权限
30 anon_umask=022
[root@localhost ftp]# systemctl restart vsftpd.service

# 在客户端
lftp 172.25.254.138:/pub> put /etc/group
970 bytes transferred
lftp 172.25.254.138:/pub> ls
-rw-r--r--    1 14       50            970 Oct 29 11:56 group
-rw-------    1 14       50           2281 Oct 29 11:48 passwd

在这里插入图片描述

开启匿名用户的下载权限

# 在服务端

[root@localhost ftp]# vim  /etc/vsftpd/vsftpd.conf 
31 anon_world_readable_only=YES
[root@localhost ftp]# systemctl restart vsftpd.service

# 在客户端

lftp 172.25.254.138:/pub> get group     # 下载成功
970 bytes transferred

在这里插入图片描述

开启匿名用户的删除权限

# 在服务端
[root@localhost ftp]# vim  /etc/vsftpd/vsftpd.conf
32 anon_other_write_enable=YES
[root@localhost ftp]# systemctl restart vsftpd.service

# 在客户端
lftp 172.25.254.138:/pub> ls
-rw-r--r--    1 14       50            970 Oct 29 11:56 group
-rw-------    1 14       50           2281 Oct 29 11:48 passwd
lftp 172.25.254.138:/pub> rm -fr passwd
 rm ok, `passwd' removed
lftp 172.25.254.138:/pub> ls-
rw-r--r--    1 14       50            970 Oct 29 11:56 group

在这里插入图片描述
限制上传文件的最大速度

# 在服务端
[root@localhost ftp]# vim  /etc/vsftpd/vsftpd.conf
34 anon_max_rate=102400
[root@localhost ftp]# systemctl restart vsftpd.service 

# 在客户端
lftp 172.25.254.138:/pub> put /tmp/file
 464519168 bytes transferred in 9 seconds (48.38M/s)  # 没限速之前



家目录的修改

# 在服务端
[root@localhost ftp]# mkdir  /westos
[root@localhost ftp]# touch /westos/westosfile{1..5}  # 建立文件是为了测试
[root@localhost ftp]# ll /westos/
total 0-
rw-r--r-- 1 root root 0 Oct 30 13:04 westosfile1
-rw-r--r-- 1 root root 0 Oct 30 13:04 westosfile2
-rw-r--r-- 1 root root 0 Oct 30 13:04 westosfile3
-rw-r--r-- 1 root root 0 Oct 30 13:04 westosfile4
-rw-r--r-- 1 root root 0 Oct 30 13:04 westosfile5
[root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf 
33 anon_root=/westos
[root@localhost ftp]# systemctl restart vsftpd.service

# 在客户端
[kiosk@foundation42 Desktop]$ lftp 172.25.254.242
lftp 172.25.254.242:~> ls
-rw-r--r--    1 0        0               0 Oct 28 08:18 westosfile1
-rw-r--r--    1 0        0               0 Oct 28 08:18 westosfile2
-rw-r--r--    1 0        0               0 Oct 28 08:18 westosfile3
-rw-r--r--    1 0        0               0 Oct 28 08:18 westosfile4
-rw-r--r--    1 0        0               0 Oct 28 08:18 westosfile5

在这里插入图片描述
(2)本地用户

write_enable=YES|NO                     # 是否对登陆用户可写
local_enable=YES|NO                     # 本地用户是否可以登陆
chroot_local_user=YES                   # 限制本地用户浏览(所有用户被锁定到自己的家目录之中)
local_umask=077                         # 本地用户上传文件权限
local_root=/directory                       # 本地用户家目录修改
限制本地用户登陆
# 在服务端
[root@localhost ftp]# vim  /etc/vsftpd/vsftpd.conf
16 local_enable=NO 
[root@localhost ftp]# systemctl restart vsftpd

# 在客户端
[kiosk@foundation78 Desktop]$ lftp 172.25.254.138 -u westos
Password: 
lftp [email protected]:~> ls       # 没有权限查看,说明没有登陆成功
ls: Login failed: 530 This FTP server is anonymous only.
关闭本地用户的可写权限
# 在服务端
[root@localhost ftp]# vim  /etc/vsftpd/vsftpd.conf
19 write_enable=NO
[root@localhost ftp]#systemctl restart vsftpd.service

 # 在客户端
 [kiosk@foundation78 Desktop]$ lftp 172.25.254.138 -u westos
 Password: 
 lftp [email protected]:~> ls       
 lftp [email protected]:~> mkdir file
 mkdir: Access failed: 550 Permission denied. (file)

在这里插入图片描述
更改本地用户上传文件权限

# 在服务端
[root@localhost ftp]#vim  /etc/vsftpd/vsftpd.conf    # 先要打开可写权限
23 local_umask=077            # 把默认权限改为600
[root@localhost ftp]# systemctl restart vsftpd.service 

# 在客户端
lftp [email protected]:~> put /etc/passwd
2281 bytes transferred
lftp [email protected]:~> ls  # 可以看到默认权限为644
-rw-r--r--    1 1001     1001         2281 Oct 30 11:52 passwd
lftp [email protected]:~> put /etc/group
970 bytes transferred                             
lftp [email protected]:~> ls   # 修改完之后,再次查看权限已经改变
-rw-------    1 1001     1001          970 Oct 30 11:54 group
-rw-r--r--    1 1001     1001         2281 Oct 30 11:52 passwd

在这里插入图片描述
本地用户家目录修改

 # 在服务端
 [root@localhost ftp]# vim /etc/vsftpd/vsftpd.conf 
 17 local_root=/westos
 [root@localhost ftp]# systemctl restart vsftpd
 [root@localhost ftp]# ls /westos/
 westosfile1  westosfile2  westosfile3  westosfile4  westosfile5

  # 在客户端
  [kiosk@foundation78 Desktop]$ lftp 172.25.254.138 -u westos
  Password: 
  lftp [email protected]:~> ls       
  -rw-r--r--    1 0        0               0 Oct 30 05:04 westosfile1
  -rw-r--r--    1 0        0               0 Oct 30 05:04 westosfile2
  -rw-r--r--    1 0        0               0 Oct 30 05:04 westosfile3
  -rw-r--r--    1 0        0               0 Oct 30 05:04 westosfile4
  -rw-r--r--    1 0        0               0 Oct 30 05:04 westosfile5

在这里插入图片描述

4.黑白名单

(1)系统自带黑白名单

ftpusers     # 永久黑名单,优先级最高,一旦加入,任何操作都不能洗白
user_list    # 临时黑名单,可修改配置文件,变为白名单 

当用户同时出现在user_list白名单和ftpuser黑名单中时,此时用户被认为是黑名单中的,因为ftpuser黑名单的级别最高

[root@localhost ftp]#cd /etc/vsftpd/
[root@localhost vsftpd]# ll
total 28
-rw------- 1 root root  125 Aug  3  2015 ftpusers
-rw------- 1 root root  361 Aug  3  2015 user_list
-rw------- 1 root root 5182 Oct 28 05:15 vsftpd.conf
-rwxr--r-- 1 root root  338 Aug  3  2015 vsftpd_conf_migrate.sh
-rw------- 1 root root 5046 Oct 28 03:22 vsftpd.conf.rpmsave

在这里插入图片描述

[root@localhost vsftpd]# vim user_list   # 把westos用户加入临时黑名单
21  westos

# 在客户端测试

[kiosk@foundation78 Desktop]$ lftp 172.25.254.138 -u westos
Password: 
lftp [email protected]:~> ls       
ls: Login failed: 530 Permission denied.   

在这里插入图片描述

# 在服务端

[root@localhost vsftpd]# /etc/vsftpd/vsftpd.conf  # 设置user_list为白名单
133 userlist_deny=NO   #默认所有用户加入黑名单,白名单用户可登陆
[root@localhost vsftpd]# systemctl restart vsftpd

 # 在客户端测试
 
 [kiosk@foundation78 Desktop]$ lftp 172.25.254.138 -u westos # 刚才在user_list名单里的westos就成了白名单用户,即可以登录
 Password: 
 lftp [email protected]:~> ls       
 -rw-------    1 1001     1001          970 Oct 30 11:54 group
 -rw-r--r--    1 1001     1001         2281 Oct 30 11:52 passwd	

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wzt888_/article/details/83552292