第二十五课预习任务

 

14.1 NFS介绍
14.2 NFS服务端安装配置
14.3 NFS配置选项
14.4 exportfs命令
14.5 NFS客户端问题
15.1 FTP介绍
15.2/15.3 使用vsftpd搭建ftp
15.4 xshell使用xftp传输文件
15.5 使用pure-ftpd搭建ftp服务
扩展
vsftp使用mysql存放虚拟用户并验证 http://www.aminglinux.com/bbs/thread-342-1-1.html
ftp的主动和被动模式 http://www.aminglinux.com/bbs/thread-961-1-1.html

14.1 NFS介绍

NFS是Network File System的缩写

NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本

NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写。

NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致

NFS架构

 

是网络层次的,用的挺多的 ,开发更新版本没我们想象的那么快,

为了分担A的负载 所以加了B C ,这样用户可能请求到B 或C ,怎么才可以从B 得到A的数据呢,

扫描二维码关注公众号,回复: 3492520 查看本文章

一个是 A数据传到BC,这个办法可能没有实时的更新,那么Nfs 服务就是解决这个问题 ,A数据工具分享给BC

A上更新文件BC很快就看到 , B上更新文件 AC也很快看到

NFS原理图

现在是rpcbind 实现的, 之前centos 5之前我们叫portmap,其实是一个东西,通过启动这个服务实现了tcp/ip 协议通信,

默认NFS不会监听任何端口,虽然启动服务 , 最终监听端口是rpcbind, 会监听111端口, TCP两个先通信 ,

NFS会通过rpcbind 注册一个端口比如某某某端口 ,NFS 告诉RPC通信的端口是什么 ,然后告诉客户端的RPC

总之NFS数据传输基于RPC协议

14.2 NFS服务端安装配置

yum install -y nfs-utils rpcbind

vim /etc/exports //加入如下内容

/home/nfstestdir 192.168.133.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

保存配置文件后,执行如下准备操作

mkdir /home/nfstestdir

chmod 777 /home/nfstestdir

systemctl start rpcbind

systemctl start nfs

systemctl enable rpcbind

systemctl enable nfs

首先准备两台机器一个服务端 一个客户端

首先看下IP

[root@linux01 ~]# ifconfig

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.253.143

[root@linux02 ~]# ifconfig

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.253.144

inet 192.168.253.143 作为服务端安装两个包

[root@linux01 ~]# yum install -y nfs-utils rpcbind

而客户端也需要

[root@linux02 ~]# yum install -y nfs-utils

每次刚开机yum 时候都比较慢,因为要生成一个缓冲文件,我们再安装 nfs-utils时候他也会把rpcbind 装上,所以写不写都会帮你安装上,如果yum 很卡,可以先禁掉 ,怎样禁掉呢下面

[root@linux01 ~]# cd /etc/yum.repos.d/

[root@linux01 yum.repos.d]# ls

CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo

CentOS-CR.repo CentOS-Media.repo epel.repo

CentOS-Debuginfo.repo CentOS-Sources.repo epel-testing.repo

[root@linux01 yum.repos.d]# mv epel.repo epel.repo.1^C 因为我这不卡所以没改名字

[root@linux01 ~]# vim /etc/exports 在服务端上 ,编辑添加两端 , 保证A机器和B机器最终数据一致 ,那说的是哪个目录的数据一致,分享的目录 要共享和的服务器IP(特殊的选项)

/home/nfstestdir 192.168.253.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

~

[root@linux01 yum.repos.d]# mkdir /home/nfstestdir

[root@linux01 yum.repos.d]# chmod 777 /home/nfstestdir

之所以改成777的权限是为了一会做实验

我的两台都是没有启动rpcbind

[root@linux01 ~]# netstat -lnpt

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 896/sshd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1329/master

tcp 0 0 192.168.253.143:8730 0.0.0.0:* LISTEN 93924/rsync

tcp6 0 0 :::80 :::* LISTEN 96749/httpd

tcp6 0 0 :::22 :::* LISTEN 896/sshd

tcp6 0 0 ::1:25 :::* LISTEN 1329/master

老师的

 

这时候老师的rpcbind 已经启动另外 ,两个的名称还有个是systemd,这可能是因为centos7的原因

我的没启动,应该按照完就启动的 端口是111

所以我的是

[root@linux02 ~]# ps aux |grep rpc

root 5281 0.0 0.0 112724 960 pts/1 R+ 21:57 0:00 grep --color=auto rpc

老师的,因为有个服务所以监听了111端口

 

[root@linux01 ~]# systemctl start nfs 启动NFS后

[root@linux01 ~]# ps aux |grep nfs

root 114514 0.0 0.0 0 0 ? S< 21:59 0:00 [nfsd4_callbacks]

root 114520 0.0 0.0 0 0 ? S 21:59 0:00 [nfsd]

root 114521 0.0 0.0 0 0 ? S 21:59 0:00 [nfsd]

root 114522 0.0 0.0 0 0 ? S 21:59 0:00 [nfsd]

root 114523 0.0 0.0 0 0 ? S 21:59 0:00 [nfsd]

root 114524 0.0 0.0 0 0 ? S 21:59 0:00 [nfsd]

root 114525 0.0 0.0 0 0 ? S 21:59 0:00 [nfsd]

root 114526 0.0 0.0 0 0 ? S 21:59 0:00 [nfsd]

root 114527 0.0 0.0 0 0 ? S 21:59 0:00 [nfsd]

root 114531 0.0 0.0 112724 964 pts/0 R+ 21:59 0:00 grep --color=auto nfs

[root@linux01 ~]# ps aux |grep rpc 实际启动nfs时候也会启动rpc相关的服务

root 114485 0.0 0.0 0 0 ? S< 21:59 0:00 [rpciod]

rpcuser 114488 0.0 0.1 42424 1756 ? Ss 21:59 0:00 /usr/sbin/rpc.statd

rpc 114492 0.0 0.1 65008 1340 ? Ss 21:59 0:00 /sbin/rpcbind -w

root 114493 0.0 0.0 42608 940 ? Ss 21:59 0:00 /usr/sbin/rpc.mountd

root 114504 0.0 0.0 43868 540 ? Ss 21:59 0:00 /usr/sbin/rpc.idmapd

root 114533 0.0 0.0 112724 960 pts/0 R+ 22:00 0:00 grep --color=auto rpc

如果想rpc ,nfs 开机就启动 需要执行

[root@linux01 ~]# systemctl enable nfs

Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

[root@linux01 ~]# systemctl enable rpcbind

一会再客户端上演示,在演示之前看下nfs挂载的选项

14.3 NFS配置选项

rw 读写

ro 只读

sync 同步模式,内存数据实时写入磁盘 ,这样就会相应的降低磁盘的效率

async 非同步模式 ,隔一段时间把内存数据刷到磁盘,好处是增加磁盘效率,不好处是断电会丢一小部分数据

no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大,如果客户端像用服务端的一个共享目录,需要挂在到客户端上一个挂载点,就和本地目录一样的,操作本地这个目录 如果用root用户就不受限制,相当于root用户在本地磁盘读写。

root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户 ,如果切换到挂载的目录下,就不是root用户了

all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户

anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid

yum install -y nfs-utils

showmount -e 192.168.133.130 //该ip为NFS服务端ip

mount -t nfs 192.168.133.130:/home/nfstestdir /mnt

df -h

touch /mnt/aminglinux.txt

ls -l /mnt/aminglinux.txt //可以看到文件的属主和属组都为1000

[root@linux01 ~]# vim /etc/exports

/home/nfstestdir 192.168.253.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

~

现在客户端上做个挂载 ,我的开始是没问题的

[root@linux02 ~]# showmount -e 192.168.253.143

Export list for 192.168.253.143:

/home/nfstestdir 192.168.253.0/24

老师的报错了可能由于网络问题,AB机器不能互连

看下A上服务端监听的端口是有111的

[root@linux01 ~]# netstat -lnpt

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:37162 0.0.0.0:* LISTEN -

tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 114492/rpcbind

tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 114493/rpc.mountd

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 896/sshd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1329/master

tcp 0 0 192.168.253.143:8730 0.0.0.0:* LISTEN 93924/rsync

tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -

tcp 0 0 0.0.0.0:36198 0.0.0.0:* LISTEN 114488/rpc.statd

tcp6 0 0 :::34958 :::* LISTEN 114488/rpc.statd

tcp6 0 0 :::111 :::* LISTEN 114492/rpcbind

虽然RPC可以通信了,但NFS 比较特殊,他们用了不固定的端口 ,此时可能是由于防火墙导致 所以先关下

[root@linux01 ~]# systemctl stop firwalld

Failed to stop firwalld.service: Unit firwalld.service not loaded.

[root@linux01 ~]# getenforce

Enforcing

[root@linux01 ~]# setenforce 0

[root@linux01 ~]#

[root@linux02 ~]# systemctl stop firwalld

Failed to stop firwalld.service: Unit firwalld.service not loaded.

[root@linux02 ~]# getenforce

Enforcing

[root@linux02 ~]# setenforce 0

[root@linux02 ~]# getenforce

Permissive

showmount 就可以了

在客户端上

[root@linux02 ~]# mount -t nfs 192.168.253.143:/home/nfstestdir /mnt/ 规定挂载类型nfs类型 ,挂载的服务端IP:/路径 挂载到哪里

[root@linux02 ~]# df -h

文件系统 容量 已用 可用 已用% 挂载点

/dev/sda3 18G 3.5G 15G 20% /

devtmpfs 479M 0 479M 0% /dev

tmpfs 489M 0 489M 0% /dev/shm

tmpfs 489M 6.8M 482M 2% /run

tmpfs 489M 0 489M 0% /sys/fs/cgroup

/dev/sda1 197M 109M 88M 56% /boot

tmpfs 98M 0 98M 0% /run/user/0

192.168.253.143:/home/nfstestdir 18G 6.1G 12G 35% /mnt 这就是远程服务端共享的目录,

[root@linux02 ~]# cd /mnt/ 在客户端上 建文件 然后看服务端有没有更新

[root@linux02 mnt]# touch 111.test

[root@linux02 mnt]# ls -l

总用量 0

-rw-r--r--. 1 mysql mysql 0 10月 8 22:25 111.test

结果是有的也创建了相同的文件

[root@linux01 ~]# ls -l /home/nfstestdir/

总用量 0

-rw-r--r--. 1 mysql mysql 0 10月 8 22:25 111.test

老师的结果创建的用户是不一样的 ,客户端是mysql 。服务端是aming 用户

原来是配置文件导致的,一旦挂载来了服务端的文件,物理用那个用户操作,最终会以1000 UID,1000gid创建文件目录。

/home/nfstestdir 192.168.253.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

而我的

[root@linux01 ~]# cat /etc/passwd 正好都是MySQL用户1000

chrony:x:997:995::/var/lib/chrony:/sbin/nologin

mysql:x:1000:1000::/home/mysql:/bin/bash

或者这样看

[root@linux01 ~]# id mysql

uid=1000(mysql) gid=1000(mysql) 组=1000(mysql)

[root@linux02 mnt]# id mysql

uid=1000(mysql) gid=1000(mysql) 组=1000(mysql)

就是因为我们限定了用户

14.4 exportfs命令

常用选项

-a 全部挂载或者全部卸载

-r 重新挂载

-u 卸载某一个目录

-v 显示共享目录

以下操作在服务端上

vim /etc/exports //增加

/tmp/ 192.168.133.0/24(rw,sync,no_root_squash)

exportfs -arv //不用重启nfs服务,配置文件就会生效

以下操作在客户端

mkdir /aminglinux

mount -t nfs -onolock 192.168.133.130:/tmp /aminglinux

touch /aminglinux/test.txt

ls -l !$

-oremount,nfsvers=3

exportfs 这个命令实际和nfs-utils 一起安装的 ,假如第一次配置NFS共享目录,过段时间我们需要增加机器或增加共享目录

此时需要更改配置文件,重启NFS服务等,如果远程客户端正在使用挂载NFS服务的话, 如果先停止NFS服务的话,远程的客户端就会先挂起,这个影响还是蛮大的,

加入A共享目录,B读写这个目录,如果A停掉了,B正在挂载这A目录,服务都停了,B肯定不能正常访问A挂载的目录。此时如果B服务器读写非常频繁,会使B读写共享文件的进程(Nginx,Apache等)就会挂起,最早学过ps aux 查看进程状态时候,有个进程状态D,D就是进程不能中断, 就会变成D,那么B进程就不正常了,杀也杀不死,重启也重启不了。会把机器搞死 ,所以NFS不能随便重启, 如果分要重启,先把 B或C挂载的目录卸载下来,

[root@linux02 mnt]# umount /mnt 卸载

umount.nfs4: /mnt: device is busy

出现这种情况两种解决办法

[root@linux02 mnt]# umount -l /mnt 或cd 退出来再umount /mnt

[root@linux02 mnt]# cd

[root@linux02 ~]# df -h

文件系统 容量 已用 可用 已用% 挂载点

/dev/sda3 18G 3.5G 15G 20% /

devtmpfs 479M 0 479M 0% /dev

tmpfs 489M 0 489M 0% /dev/shm

tmpfs 489M 6.8M 482M 2% /run

tmpfs 489M 0 489M 0% /sys/fs/cgroup

/dev/sda1 197M 109M 88M 56% /boot

tmpfs 98M 0 98M 0% /run/user/0

如果挂载了几十台机器,一台台卸载太麻烦了,我们就可以用exportfs

所以我们会一般这样用

[root@linux01 ~]# exportfs -arv

exporting 192.168.253.0/24:/home/nfstestdir

上面会让配置文件重新生效 ,可以试验下

[root@linux01 ~]# vim /etc/exports

/home/nfstestdir 192.168.253.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

/tmp 192.168.253.144 (rw,sync,no_root_squash)

[root@linux01 ~]# exportfs -arv

exportfs: No options for /tmp 192.168.253.144: suggest 192.168.253.144(sync) to avoid warning

exportfs: No host name given with /tmp (rw,sync,no_root_squash), suggest *(rw,sync,no_root_squash) to avoid warning

exporting 192.168.253.144:/tmp

exporting 192.168.253.0/24:/home/nfstestdir

exporting *:/tmp

[root@linux02 ~]# showmount -e 192.168.253.143 并没重启也生效了

Export list for 192.168.253.143:

/home/nfstestdir 192.168.253.0/24

/tmp/ (everyone)

[root@linux02 ~]# mount -t nfs 192.168.253.143:/tmp/ /mnt/

[root@linux02 ~]# df -h

文件系统 容量 已用 可用 已用% 挂载点

/dev/sda3 18G 3.5G 15G 20% /

devtmpfs 479M 0 479M 0% /dev

tmpfs 489M 0 489M 0% /dev/shm

tmpfs 489M 6.8M 482M 2% /run

tmpfs 489M 0 489M 0% /sys/fs/cgroup

/dev/sda1 197M 109M 88M 56% /boot

tmpfs 98M 0 98M 0% /run/user/0

192.168.253.143:/tmp 18G 6.1G 12G 35% /mnt

[root@linux02 ~]# ls /mnt/

111.back

123.txt

1.txt

php_errors.log

rsync

systemd-private-e042408672ad43509447474a6c527839-vmtoolsd.service-8C3IHP

zhang

现在 两个目录一样文件

[root@linux01 ~]# ls /tmp/

111.back

123.txt

1.txt

php_errors.log

rsync

systemd-private-e042408672ad43509447474a6c527839-vmtoolsd.service-8C3IHP

zhang

[root@linux01 ~]# vim /tmp/8.txt

[root@linux01 ~]# ls -l /tmp/

总用量 20

drwxr-xr-x. 2 root root 32 10月 2 17:08 111.back

-rw-r--r--. 1 root root 1049 9月 22 17:08 123.txt

-rw-r--r--. 1 root root 1049 9月 22 17:08 1.txt

-rw-r--r--. 1 root root 11 10月 8 23:03 8.txt

[root@linux02 ~]# ls -l /mnt/

总用量 20

drwxr-xr-x. 2 root root 32 10月 2 17:08 111.back

-rw-r--r--. 1 root root 1049 9月 22 17:08 123.txt

-rw-r--r--. 1 root root 1049 9月 22 17:08 1.txt

-rw-r--r--. 1 root root 11 10月 8 23:03 8.txt

8.txt都是root用户

通常我们不限制用户的情况多

14.5 NFS客户端问题

客户端文件属主属组nobody

NFS 4版本会有该问题

客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、属组为nobody

解决上面问题 第一个 客户端挂载时加上 -o nfsvers=3 指定NFS版本为3 也就是不是4了

客户端和服务端都需要

第二种办法是 vim /etc/idmapd.conf //

“#Domain = local.domain.edu” 改为 “Domain = xxx.com” (这里的xxx.com,随意定义吧),然后再重启rpcidmapd服务

centos 6时候遇到比较多,不是每次都有,偶尔会出现

[root@linux02 ~]# mount -t nfs -o nfsvers=3 192.168.253.143:/tmp/ /mnt/

[root@linux02 ~]# mount -t nfs -oremount,fsvers=3 192.168.253.143:/tmp/ /mnt/

centos7里面是没有rpc这个服务的 那重启什么呢 重启rpcidmapd 就可以了

15.1 FTP介绍

FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。

FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。

小公司用的多,大企业不用FTP,因为不安全 ,大公司 使用自动化发布的工具,不规范 所以 GIT 版本管理工具,

之前讲过rz sz 这个命令是widows Linux互相传文件的 ,但遇到文件比较大,就不好使了,或用阿里云 一台机器调到另外一台机器时候也不好使

所以FTP就可以, 在Linux搭建一个服务, widows安装一个软件 就可以连到服务端,互相传

15.2 使用vsftpd搭建ftp服务(上)

centos上自带vsftpd

yum install -y vsftpd

useradd -s /sbin/nologin virftp

vim /etc/vsftpd/vsftpd_login //内容如下,奇数行为用户名,偶数行为密码,多个用户就写多行

testuser1

aminglinux

chmod 600 /etc/vsftpd/vsftpd_login

db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db

mkdir /etc/vsftpd/vsftpd_user_conf

cd /etc/vsftpd/vsftpd_user_conf

vim testuser1 //加入如下内容

local_root=/home/virftp/testuser1

anonymous_enable=NO

write_enable=YES

local_umask=022

anon_upload_enable=NO

anon_mkdir_write_enable=NO

idle_session_timeout=600

data_connection_timeout=120

max_clients=10

mkdir /home/virftp/testuser1

touch /home/virftp/testuser1/aming.txt

chown -R virftp:virftp /home/virftp

vim /etc/pam.d/vsftpd //在最前面加上

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES 改为 anonymous_enable=NO

#anon_upload_enable=YES 改为 anon_upload_enable=NO

#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO

再增加如下内容

chroot_local_user=YES

guest_enable=YES

guest_username=virftp

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/vsftpd_user_conf

allow_writeable_chroot=YES

systemctl start vsftpd //启动vsftpd服务

vsftpd 这个软件包 可以使用系统级别的用户,假如创建了普通用AA,设置一个密码,这时候可以用vsftpd 启动这个用户,用AA登录,只不过登录的形式是ftp

登录后进入AA家目录下,这样有点不安全,我们设置用户 密码是登录系统的,所以我们设置一个用户 虚拟用户,映射成系统里面的一个普通用户,可以映射多个用户,

即使给了用户名密码也不会登录我们的系统的,比较安全

[root@linux01 ~]# useradd -s /sbin/nologin virftp 创建这个用户就是我们以哪个用户传下载啊 -s 是用户的shell ,不能登录 ,

虚拟用户的密码文件, 定义用户名和密码,格式比较特殊 奇数行为用户名,偶数行为密码

[root@linux01 ~]# vim /etc/vsftpd/vsftpd_login

test1

12345678

user1

12345678

[root@linux01 ~]# chmod 600 /etc/vsftpd/vsftpd_login

[root@linux01 ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db

[root@linux01 ~]# ls -l /etc/vsftpd/

总用量 36

-rw-------. 1 root root 125 8月 3 2017 ftpusers

-rw-------. 1 root root 361 8月 3 2017 user_list

-rw-------. 1 root root 5030 8月 3 2017 vsftpd.conf

-rwxr--r--. 1 root root 338 8月 3 2017 vsftpd_conf_migrate.sh

-rw-------. 1 root root 30 10月 8 23:32 vsftpd_login

-rw-r--r--. 1 root root 12288 10月 8 23:33 vsftpd_login.db

密码文件是不能直接cat的,

创建虚拟用户 所在配置文件路径

[root@linux01 ~]# mkdir /etc/vsftpd/vsftpd_user_conf

[root@linux01 ~]# cd /etc/vsftpd/vsftpd_user_conf

创建配置文件有点特殊,如果给test1用户创建配置文件名字就叫test1

[root@linux01 vsftpd_user_conf]# vim test1

local_root=/home/virftp/test1 虚拟用户的家目录,得知道在哪个目录传文件

anonymous_enable=NO --是否允许匿名用户

write_enable=YES 是否可写

local_umask=022 新目录新文件的权限

anon_upload_enable=NO 是否允许匿名用户可上传

anon_mkdir_write_enable=NO 是否允许匿名用户可创建目录并且写

idle_session_timeout=600 连文件空闲时间段

data_connection_timeout=120 数据传输的超时时间

max_clients=10 最大的客户端是多少

定义完虚拟用户的配置文件后,我们在创建虚拟用户的家目录

[root@linux01 vsftpd_user_conf]# mkdir /home/virftp/test1

[root@linux01 vsftpd_user_conf]# touch /home/virftp/test1/test1.txt 然后创建一个文件 我们登录的时候就可以看到这个文件

[root@linux01 vsftpd_user_conf]# chown -R virftp:virftp /home/virftp 权限设置

[root@linux01 vsftpd_user_conf]# vim /etc/pam.d/vsftpd 用户的密码文件认证的文件,可以自定义,但要让系统指定自定义到哪里,去哪里找,,登录ftp 得有个过程,总得有个库比对

[root@linux01 vsftpd_user_conf]# vim /etc/pam.d/vsftpd

#%PAM-1.0

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login 增加这两行

session optional pam_keyinit.so force revoke

auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

auth required pam_shells.so

auth include password-auth

account include password-auth

session required pam_loginuid.so

session include password-auth

在 /lib64/security/pam_userdb.so db centos6时候分32为64为的,要看是哪一种 ,如果导致文件不存在,用户名密码再对也没办法完成认证

[root@linux01 vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf 最大的配置文件

anonymous_enable=NO

anon_upload_enable=NO

anon_mkdir_write_enable=NO

最后增加几行

chroot_local_user=YES

guest_enable=YES 既然guest_username 生效就得找个是yes

guest_username=virftp 映射到哪个用户呢

virtual_use_local_privs=YES 告诉服务我们用的是虚拟用户

user_config_dir=/etc/vsftpd/vsftpd_user_conf 虚拟用户配置文件所在的路径

allow_writeable_chroot=YES

[root@linux01 vsftpd_user_conf]# systemctl start vsftpd

[root@linux01 vsftpd_user_conf]# ps aux |grep vsftp

root 114713 0.0 0.0 53260 576 ? Ss 23:53 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

root 114715 0.0 0.0 112724 964 pts/0 S+ 23:53 0:00 grep --color=auto vsftp

[root@linux01 vsftpd_user_conf]# netstat -lnpt

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:37162 0.0.0.0:* LISTEN -

tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 114492/rpcbind

tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 114493/rpc.mountd

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 896/sshd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1329/master

tcp 0 0 192.168.253.143:8730 0.0.0.0:* LISTEN 93924/rsync

tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -

tcp 0 0 0.0.0.0:36198 0.0.0.0:* LISTEN 114488/rpc.statd

tcp6 0 0 :::34958 :::* LISTEN 114488/rpc.statd

tcp6 0 0 :::111 :::* LISTEN 114492/rpcbind

tcp6 0 0 :::20048 :::* LISTEN 114493/rpc.mountd

tcp6 0 0 :::80 :::* LISTEN 96749/httpd

tcp6 0 0 :::21 :::* LISTEN 114713/vsftpd

tcp6 0 0 :::36085 :::* LISTEN -

tcp6 0 0 :::22 :::* LISTEN 896/sshd

tcp6 0 0 ::1:25 :::* LISTEN 1329/master

tcp6 0 0 :::2049 :::* LISTEN -

21 FTP ,22 sshd, 23 TELNET 端口

15.3 使用vsftpd搭建ftp服务(下)

yum install -y lftp

lftp [email protected]

执行命令ls,看是否正常输出

若不正常查看日志/var/log/messages和/var/log/secure

windows下安装filezilla客户端软件,进行测试

15.4 xshell使用xftp传输文件

在xshell按快捷键 ctrl+alt+f ,会自动弹出一个xftp的提示下载界面

进入到下载界面

选择下载以后,会进入一个填写资料的页面,上面的是免费的,下面的收费的,我们选择一个填写资料

邮箱项,很重要。因为会在你的邮箱里有下载地址和使用教程,是通过邮箱发送,而且最好使用一些比较权威的邮箱;如果是qq邮箱国外发送邮件会有一些延迟;

获取到下载地址开始下载,就可以直接下载了

下载完成后,直接默认安装,就可以使用了,这时再使用xshell登录主机,按下ctrl+alt+f;就会弹出一个xftp的页面

打开之后会进入到root目录下,使用的是ssh协议

这时在虚拟机上暂停掉21端口,会发现仍然可以传输文件

若是需要下载linux系统里的文件,只需双击,或者直接拖动到左边(桌面)就会有下载的文件

15.5 使用pure-ftpd搭建ftp服务

yum install -y epel-release

yum install -y pure-ftpd

vim /etc/pure-ftpd/pure-ftpd.conf//找到pureftpd.pdb这行,把行首的#删除

systemctl stop vsftpd

systemctl start pure-ftpd

mkdir /data/ftp

useradd -u 1010 pure-ftp

chown -R pure-ftp:pure-ftp /data/ftp

pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp

pure-pw mkdb

pure-pw list/userdel/usermod/passwd

猜你喜欢

转载自www.cnblogs.com/linuxzhang/p/9759512.html