linux----ftp服务及其用法详解

一、关于ftp的基本知识

1.ftp:// ##文件传输协议
2.ftp协议提供的软件
在rhel7中:vsftpd
3.
1)ftp(文件传输协议)是Internet上常用的最老的网络协议之一,它的系统提供了通过网络与远程服务器进行传输的简单方法。ftp服务器包的名称为vsftpd,它代表Very Secure File Transfer Protocol Damon,服务器名称也叫做vsftpd。
2)默认配置文件让anonymous用户(匿名用户)只能下载位于chroot目录中的内容。
3)远程ftp客户端能以anonymous用户或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录下载文件(其本地ftp用户可以读取这些文件)
4.
默认发布目录:/var/ftp
协议接口:21/tcp
服务配置文件: /etc/vsftpd/vsftpd.conf
5.
报错id解析:

500 	文件系统权限过大
530 	用户认证失败
550 	服务本身功能未开放
553 	本地文件系统权限过小
二、部署ftp服务

1)关闭内核级的加强形火墙

    vim /etc/sysconfig/selinux         ##修改selinux的状态
    #########################
    SELINUX=disabled
    #########################
    getenforce                                ##查看当前selinux状态
    reboot                                       ##重启生效

在这里插入图片描述2)部署yum源,安装lftp,vsftpd
部署yum源详情请看添加链接描述

yum install lftp vsftpd -y                     ##安装lftp,vsftpd

在这里插入图片描述
在这里插入图片描述
开启ftp服务

systemctl start vsftpd
systemctl enable vsftpd
systemctl status vsftpd

在这里插入图片描述
3)设置火墙永久允许ftp服务
方法一:命令设置

    systemctl restart firewalld.service                     ##开启火墙
    firewall-cmd --permanent --add-service=ftp         
    firewall-cmd --reload

在这里插入图片描述
方法二:图形设置
在这里插入图片描述

firewall-cmd --list-all                            ##查看火墙允许了什么服务

在这里插入图片描述
4)测试服务

[root@localhost /]# lftp 172.25.254.5           ##匿名连接本机
lftp 172.25.254.5:~> ls                         ##检测服务连接成功与否,否----失败
drwxr-xr-x    2 0        0               6 Jun 23  2016 pub
lftp 172.25.254.5:/> 

在这里插入图片描述

三、vsftpd权限文件----/etc/vsftpd/vsftpd.conf
 vim /etc/vsftpd/vsftpd.conf       ##修改ftp权限文件

1)匿名用户:

匿名登陆格式:lftp 目标主机ip

匿名用户是否可以登录:anonymous_enable=YES/NO

匿名用户家目录修改:anon_root=/westos

匿名用户上传文件: anon_upload_enable=YES

默认权限修改:anon_umask=022

匿名用户下载文件:anon_world_readable_only=YES|NO  ##no表示匿名用户可以下载

匿名用户建立目录:anon_mkdir_write_enable=YES|NO

匿名用户删除文件目录:anon_other_write_enable=YES|NO

匿名用户使用的用户身份修改 :
chown_uploads=YES
chown_username=student
chown_upload_mode=0644

最大上传速率:anon_max_rate=102400

详细步骤:

匿名用户是否可以登录

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
#############################编写vsftp权限文件
anonymous_enable=NO                                        ##不允许匿名用户登录
#############################
[root@localhost ~]# systemctl restart vsftpd               ##重启vsftpd服务使vsftpd权限文件生效
[root@localhost ~]# lftp 172.25.254.5                      ##匿名连接
lftp 172.25.254.5:~> ls                                    ##看看是否连接成功
Interrupt                                                  ##连接失败
lftp 172.25.254.5:~> quit                                  ##退出
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
############################编写vsftp权限文件
anonymous_enable=YES                                       ##允许匿名用户登录
############################
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.5
lftp 172.25.254.5:~> ls                                    ##看看是否连接成功
drwxr-xr-x    2 0        0               6 Jun 23  2016 pub    ##连接成功
lftp 172.25.254.5:/> quit

匿名用户加目录修改

[root@localhost ~]# mkdir /westos                             ##给匿名用户建立家目录
[root@localhost ~]# touch /westos/file                        ##为方便观察,在其家目录里建立一个文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
############################编写vsftp权限文件
anon_root=/westos
############################
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.5
lftp 172.25.254.5:~> ls                                           
-rw-r--r--    1 0        0               0 Feb 10 02:08 file    ##刚建立的文件
lftp 172.25.254.5:/> quit

匿名用户上传文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
############################编写vsftp权限文件
 anon_upload_enable=YES
############################
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.5
lftp 172.25.254.5:~> ls
drwx--x--x    2 0        0               6 Feb 10 03:37 pub
lftp 172.25.254.5:/> cd pub/
lftp 172.25.254.5:/pub> put /root/Desktop/ifcfg-br0            ##put上传文件
put: Access failed: 553 Could not create file. (ifcfg-br0)     ##上传失败,本地文件系统权限过小
lftp 172.25.254.5:/pub> quit
[root@localhost ~]# chgrp ftp /var/ftp/pub/                    ##修改文件所有组
[root@localhost ~]# chmod 1775 /var/ftp/pub/                   ##给目录1775权限
[root@localhost ~]# ls -ld /var/ftp/pub/                       ##查看目录权限信息
drwxrwxr-t 2 root ftp 6 Feb 10 11:37 /var/ftp/pub/             
[root@localhost ~]# lftp 172.25.254.5
lftp 172.25.254.5:~> cd pub/
lftp 172.25.254.5:/pub> ls                                     ##看看pub里有什么,可以看到什么都没有
lftp 172.25.254.5:/pub> put /root/Desktop/ifcfg-br0            ##put上传文件
311 bytes transferred
lftp 172.25.254.5:/pub> ls                                     ##在pub里可以看到传输的文件
-rw-------    1 14       50            311 Feb 10 03:46 ifcfg-br0
lftp 172.25.254.5:/pub> quit

匿名用户上传文件默认权限修改

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
###########################编写vsftp权限文件
anon_umask=022
###########################
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# lftp 172.25.254.5
lftp 172.25.254.5:~> cd pub
cd ok, cwd=/pub
lftp 172.25.254.5:/pub> ls
-rw-------    1 14       50            311 Feb 10 03:46 ifcfg-br0
lftp 172.25.254.5:/pub> put /root/Desktop/未完成                   ##上传文件
291 bytes transferred
lftp 172.25.254.5:/pub> ls
-rw-------    1 14       50            311 Feb 10 03:46 ifcfg-br0
-rw-r--r--    1 14       50            291 Feb 10 03:58 未完成      ##权限改变
lftp 172.25.254.5:/pub> quit

匿名用户下载文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
####################################
anon_world_readable_only=NO
####################################
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# cd /westos/
[root@localhost westos]# ls
file
[root@localhost westos]# lftp 172.25.254.5
lftp 172.25.254.5:~> cd pub/
lftp 172.25.254.5:/pub> ls
-rw-------    1 14       50            311 Feb 10 03:46 ifcfg-br0
-rw-r--r--    1 14       50            291 Feb 10 03:58 未完成
lftp 172.25.254.5:/pub> get 未完成                      ##下载文件
291 bytes transferred
lftp 172.25.254.5:/pub> quit
[root@localhost westos]# ls                            ##成功
file  未完成

匿名用户建立文件

[root@localhost westos]# vim /etc/vsftpd/vsftpd.conf 
#################################
anon_mkdir_write_enable=YES
#################################
[root@localhost westos]# systemctl restart vsftpd

在这里插入图片描述
匿名用户删除

[root@localhost westos]# vim /etc/vsftpd/vsftpd.conf 
#################################
anon_other_write_enable=YES
#################################
[root@localhost westos]# systemctl restart vsftpd

在这里插入图片描述
匿名用户使用的用户身份修改

[root@localhost westos]# vim /etc/vsftpd/vsftpd.conf 
#################################
chown_uploads=YES
chown_username=student
#################################
[root@localhost westos]# systemctl restart vsftpd

在这里插入图片描述

最大上传速率(限速)

[root@localhost westos]# vim /etc/vsftpd/vsftpd.conf 
#################################
anon_max_rate=102400
#################################这里的102400为102400Byte,1024Byte=1KB
[root@localhost westos]# systemctl restart vsftpd

在这里插入图片描述

2)本地用户:

ftp登陆格式:lftp 目标ip -u student

local_enable=YES/NO                               ##本地用户登录限制
write_enable=YES/NO                               ##本地用户写权限限制
local_root=/directory                             ##本地用户家目录修改
local_umask=077                                   ##本地用户上传文件权限
max_clients=1                                     ##能够最大连接客户端数量

将本地用户锁定到自己的家目录中:

限制之前:可以查看根目录,不安全
在这里插入图片描述
限制(锁在其家目录):
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
黑白名单:

a)黑名单

vim /etc/vsftpd/vsftpd.conf 
###########################
 chroot_local_user=NO           ##黑名单(在名单内的用户均不能登陆)
 chroot_list_enable=YES
 chroot_list_file=/etc/vsftpd/chroot_list
 ###########################
systemctl restart vsftpd
 vim /etc/vsftpd/ftpusers       ##编辑用户黑名单

b)白名单

vim /etc/vsftpd/vsftpd.conf 
###########################
 chroot_local_user=YES          ##白名单(只有在名单内的用户才能登陆)
 chroot_list_enable=YES
 chroot_list_file=/etc/vsftpd/chroot_list
###########################
systemctl restart vsftpd
vim /etc/vsftpd/ftpusers        ##编辑用户白名单

在这里插入图片描述

c)

vim /etc/vsftpd/user_list                ##用户临时黑名单

为什么是临时呢?因为它稍加修改就会变为白名单

vim /etc/vsftpd/vsftpd.conf  
#######################
userlist_deny=NO                          ## /etc/vsftpd/user_list变为白名单
######################
systemctl restart vsftpd
四、ftp虚拟用户的设定 1)创建虚拟帐号身份
vim  /etc/vsftpd/userfile                     ##文件名称任意
############
redhat1                ##帐号
123                    ##密码
redhat2
321
###########

在这里插入图片描述
2)文件加密

db_load -T -t hash -f userfile userfile.db    ##加密

3)pam

vim /etc/pam.d/ftpuser                        ##文件名称任意
##########################
  account required pam_userdb.so db=/etc/vsftpd/userfile
  auth    required pam_userdb.so db=/etc/vsftpd/userfile
##########################

在这里插入图片描述
4)开启虚拟功能

vim /etc/vsftpd/vsftpd.conf
##########################
pam_service_name=ftpuser   ##必须与建立的pam文件名字相同
guest_enable=YES           ##开启虚拟用户的功能
guest_username=ftp         ##虚拟用户的身份指定
##########################
systemctl restart vsftpd

在这里插入图片描述
5)虚拟帐号家目录独立设定:用户只能查看自己的目录

mkdir -p /var/ftpuserdir/redhat{1,2}
vim /etc/vsftpd/vsftpd.conf
##################
local_root=/var/ftpuserdir/$USER
user_sub_token=$USER
##################
systemctl restart vsftpd

在这里插入图片描述
6)检测

mkdir /var/ftpuserdir/westos{1,2}/pub
mkdir /var/ftpuserdir/redhat1/file1
mkdir /var/ftpuserdir/redhat2/file2

在这里插入图片描述

五、虚拟帐号配置独立

1)给权限

chgrp ftp /var/ftpuserdir/redhat*/pub
chmod 1775 /var/ftpuserdir/redhat*/pub

在这里插入图片描述
2)建立权限文件

mkdir -p /etc/vsftpd/user_config
vim /etc/vsftpd/user_config/redhat1 

写入anon_upload_enable=YES
在这里插入图片描述
3)使建立的权限文件生效

vim /etc/vsftpd/vsftpd.conf

写入user_config_dir=/etc/vsftpd/user_config
在这里插入图片描述
4)测试
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44297303/article/details/86848800