天天看点

FTP 共享资源库系统资源

一、了解ftp

FTP(File Transfer Protocol)是一个非常古老并且应用十分广泛的文件传输协议,FTP协议是现今使用最为广泛的网络文件共享协议之一,我们现在也一直有在用着FTP协议来进行各种文件的传输,FTP为我们提供了一种可靠的方式在网络上进行文件的共享。

二、准备虚拟机

本地镜像使用centos-1908。也就是说挂载的镜像是centos-1908,点开你的虚拟机设置看看配置的对不对。

FTP 共享资源库系统资源
三、vsftpd部署安装

systemctl stop firewalld                              //关闭防火墙
setenforce 0                                            //关闭se      

1)配置 yum 源 

把 yum 源去掉换成本地的 yum 源。把新的 yum 源输入进去就行。

mv/etc/yum.repos.d/* /media/                                    //移除原有的yum源
vim /etc/yum.repos.d/lcoal.repo                                    //在这个文件里添加yum源
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1      
FTP 共享资源库系统资源
mkdir -p /opt/centos                 //创建一个目录mount /dev/sr0 /opt/centos             //将那个镜像挂在到cetos这个目录
//查看挂载情况
[root@ftp ~]# ls /opt/centos
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL

//查看 yum 源是否正常      

[root@ftp ~]# yum repolist

已加载插件:fastestmirror

Loading mirror speeds from cached hostfile

源标识 源名称 状态

!base/7/x86_64 CentOS-7 - Base 0

centos centos 0

!extras/7/x86_64 CentOS-7 - Extras 0

!updates/7/x86_64 CentOS-7 - Updates 0

repolist: 0

这样 yum 源已经弄好了。

 2)下载vsftp

查看完端口后是21端口就对了。

//下载 vsftpd net-tools
[root@ftp ~]#yum install -y vim vsftpd net-tools 

//启用vsftpd
[root@ftp ~]#systemctl start vsftpd 

//查看端口
[root@ftp ~]# netstat -ntlp |grep vsftpd
tcp6       0      0 :::21                   :::*                    LISTEN      1769/vsftpd      
FTP 共享资源库系统资源

查看配置文件里的内容。

listen=YES:是否以独立运行的方式监听服务

listen_address=192.168.x.x:设置监听的 IP 地址

listen_port=21:设置监听 FTP 服务的端口号

write_enable=YES:是否启用写入权限

download_enable=YES:是否允许下载文件

userlist_enable=YES:是否启用 user_list 列表文件

userlist_deny=YES:是否禁用 user_list 中的用户

max_clients=0:限制并发客户端连接数

max_per_ip=0:限制同一 IP 地址的并发连接数

guest_enable=YES:启用虚拟用户

user_config_dir=/etc/vsftpd/vsftpd_user_conf :虚拟用户使用的配置文件目录

allow_writeable_chroot=YES:允许写入用户主目录

常用的匿名 FTP 配置项:

anonymous_enable=YES:启用匿名访问

anon_umask=022:匿名用户所上传文件的权限掩码

anon_root=/var/ftp:匿名用户的 FTP 根目录

anon_upload_enable=YES:允许上传文件

anon_mkdir_write_enable=YES:允许创建目录

anon_other_write_enable=YES:开放其他写入权

anon_max_rate=0:限制最大传输速率(字节/秒)

常用的本地用户 FTP 配置项:

local_enable=YES:是否启用本地系统用户

local_umask=022:本地用户所上传文件的权限掩码

local_root=/var/ftp:设置本地用户的 FTP 根目录

chroot_local_user=YES:是否将用户禁锢在主目录

 四、配置虚拟用户

1)配置用户名密码

进入配置文件里创建一个存放密码的文件

vim /etc/vsftpd/users.conf                            //创建 users.conf 进入这个文件      
FTP 共享资源库系统资源

文件里面写用户名和密码,第一行是用户名第二行是密码(默认:奇数列是用户名、偶数列是密码)

FTP 共享资源库系统资源

 给密码加密

db_load -T -t hash -f /etc/vsftpd/users.conf /etc/vsftpd/users.db   //密码加密
vim /etc/vsftpd/users.conf         //查看密码被加密后的情况
chmod 600 users.db              //给 users.db 授权(只有这里面的用户去读写)
chmod 600 users.*               //授权(文件里面的用户授权)      

2)创建系统用户

useradd vsftpd -d /home/vsftpd -s /sbin/nologin                    //创建用户  (-d:指定用户所在目录 -s:指定一下不能登录 )
chmod -R 777 /home/vsftpd                         //给上面的文件授权(777:可以上传、下载)      
vim /etc/pam.d/vsftpd                               //修改里面的文件      

放到这里的话会避免很多的错误。

FTP 共享资源库系统资源

3)修改主配置文件

vim /etc/vsftpd/vsftpd.conf                 //修改主配置文件      
FTP 共享资源库系统资源

现在配置的是 yunjisuan 如果还要使用那个就也把那个这样配置一下即可。

// 创建子配置文件目录
[root@localhost ~]# mkdir -p /etc/vsftpd/vsftpd_user_conf

//进入创建的文件
[root@localhost ~]# cd !$
cd /etc/vsftpd/vsftpd_user_conf

//进入文件里添加配置
[root@localhost vsftpd_user_conf]# vim yunjisuan
local_root=/home/vsftpd/xmcsxy    # 当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。 
anon_upload_enable=YES  # 是否允许登陆用户有上传权限。
write_enable=YES      # 是否允许登陆用户有写权限。      
# 重启服务,使配置文件生效
[root@localhost vsftpd_user_conf]# systemctl restart vsftpd
[root@localhost vsftpd_user_conf]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.w      

 五、链接ftp

我使用的是 xftp 你们还可以使用其他的软件去链接。链接上之后直接就可以直接去测试了,上传一下文件啊、下一下啊什么的。

FTP 共享资源库系统资源

 六、Linux下使用ftp

yum install -y lftp                                        //现在 lftp
lftp [email protected]                                    //输入后回车 会让输入密码
    输入密码后 ls 查看能否查看,能查看即为成功。      

LFTP内部命令:

​ ls 显示远端文件列表(!ls 显示本地文件列表)。

​ cd 切换远端目录(lcd 切换本地目录)。

​ get 下载远端文件。

​ mget 下载远端文件(可以用通配符也就是 *)。

​ pget 使用多个线程来下载远端文件, 预设为五个。

​ mirror 下载/上传(mirror -R)/同步 整个目录。

​ put 上传文件。

​ mput 上传多个文件(支持通配符)。

​ mv 移动远端文件(远端文件改名)。

​ rm 删除远端文件。

​ mrm 删除多个远端文件(支持通配符)。

​ mkdir 建立远端目录。

​ rmdir 删除远端目录。

​ pwd 显示目前远端所在目录(lpwd 显示本地目录)。

​ du 计算远端目录的大小

​ ! 执行本地 shell的命令(由于lftp 没有 lls, 故可用 !ls 来替代)

​ lcd 切换本地目录

​ lpwd 显示本地目录

​ alias 定义别名

​ bookmark 设定书签。

​ exit 退出ftp

七、黑白名单

FTP 共享资源库系统资源

ftpusers:

如果创建了用户,设置了密码,将用户名添加到ftpusers中,则无法登录ftp服务。

user_list:

根据配置,可以是白名单,也可以是黑名单。userlist_enable和userlist_deny两个选项联合起来针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在在user_list文件中的用户这三类用户集合进行的设置。

userlist_enable和userlist_deny两个选项联合起来针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在在user_list文件中的用户这三类用户集合进行的设置。

为了说明这个问题,我们来建立两个测试用户:

test1: 在user_list中

test2:不在user_list中

然后我们分别给两个配置项取不同的值,分4种Case进行测试:

Case 1: userlist_enable=YES, userlist_deny=YES

test1: 拒绝登入

test2: 允许登录

Case 2: userlist_enable=YES, userlist_deny=NO

test1: 允许登录

test2:拒绝登录(如user_list文件开头的注释所述,甚至不会提示输入密码,即无登入提示框,直接拒绝连接)

Case 3: userlist_enable=NO,userlist_deny=NO

Case 4: userlist_enable=NO,userlist_deny=YES

当且仅当userlist_enable=YES时:userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,本地全体用户(除去ftpusers中的用户)都可以登入FTP

当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;

当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous

继续阅读