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的数据呢,
一个是 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
[[email protected] ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.253.143
[[email protected] ~]# ifconfig
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.253.144
而inet 192.168.253.143 作为服务端安装两个包
[[email protected] ~]# yum install -y nfs-utils rpcbind
而客户端也需要
[[email protected] ~]# yum install -y nfs-utils
每次刚开机yum 时候都比较慢,因为要生成一个缓冲文件,我们再安装 nfs-utils时候他也会把rpcbind 装上,所以写不写都会帮你安装上,如果yum 很卡,可以先禁掉 ,怎样禁掉呢下面
[[email protected] ~]# cd /etc/yum.repos.d/
[[email protected] 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
[[email protected] yum.repos.d]# mv epel.repo epel.repo.1^C 因为我这不卡所以没改名字
[[email protected] ~]# vim /etc/exports 在服务端上 ,编辑添加两端 , 保证A机器和B机器最终数据一致 ,那说的是哪个目录的数据一致,分享的目录 要共享和的服务器IP(特殊的选项)
/home/nfstestdir 192.168.253.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
~
[[email protected] yum.repos.d]# mkdir /home/nfstestdir
[[email protected] yum.repos.d]# chmod 777 /home/nfstestdir
之所以改成777的权限是为了一会做实验
我的两台都是没有启动rpcbind
[[email protected] ~]# 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
所以我的是
[[email protected] ~]# ps aux |grep rpc
root 5281 0.0 0.0 112724 960 pts/1 R+ 21:57 0:00 grep --color=auto rpc
老师的,因为有个服务所以监听了111端口
[[email protected] ~]# systemctl start nfs 启动NFS后
[[email protected] ~]# 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
[[email protected] ~]# 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 开机就启动 需要执行
[[email protected] ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[[email protected] ~]# 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
[[email protected] ~]# vim /etc/exports
/home/nfstestdir 192.168.253.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
~
现在客户端上做个挂载 ,我的开始是没问题的
[[email protected] ~]# showmount -e 192.168.253.143
Export list for 192.168.253.143:
/home/nfstestdir 192.168.253.0/24
老师的报错了可能由于网络问题,AB机器不能互连
看下A上服务端监听的端口是有111的
[[email protected] ~]# 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 比较特殊,他们用了不固定的端口 ,此时可能是由于防火墙导致 所以先关下
[[email protected] ~]# systemctl stop firwalld
Failed to stop firwalld.service: Unit firwalld.service not loaded.
[[email protected] ~]# getenforce
Enforcing
[[email protected] ~]# setenforce 0
[[email protected] ~]#
[[email protected] ~]# systemctl stop firwalld
Failed to stop firwalld.service: Unit firwalld.service not loaded.
[[email protected] ~]# getenforce
Enforcing
[[email protected] ~]# setenforce 0
[[email protected] ~]# getenforce
Permissive
再showmount 就可以了
在客户端上
[[email protected] ~]# mount -t nfs 192.168.253.143:/home/nfstestdir /mnt/ 规定挂载类型nfs类型 ,挂载的服务端IP:/路径 挂载到哪里
[[email protected] ~]# 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 这就是远程服务端共享的目录,
[[email protected] ~]# cd /mnt/ 在客户端上 建文件 然后看服务端有没有更新
[[email protected] mnt]# touch 111.test
[[email protected] mnt]# ls -l
总用量 0
-rw-r--r--. 1 mysql mysql 0 10月 8 22:25 111.test
结果是有的也创建了相同的文件
[[email protected] ~]# 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)
而我的
[[email protected] ~]# cat /etc/passwd 正好都是MySQL用户1000
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
mysql:x:1000:1000::/home/mysql:/bin/bash
或者这样看
[[email protected] ~]# id mysql
uid=1000(mysql) gid=1000(mysql) 组=1000(mysql)
[[email protected] 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挂载的目录卸载下来,
[[email protected] mnt]# umount /mnt 卸载
umount.nfs4: /mnt: device is busy
出现这种情况两种解决办法
[[email protected] mnt]# umount -l /mnt 或cd 退出来再umount /mnt
[[email protected] mnt]# cd
[[email protected] ~]# 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
所以我们会一般这样用
[[email protected] ~]# exportfs -arv
exporting 192.168.253.0/24:/home/nfstestdir
上面会让配置文件重新生效 ,可以试验下
[[email protected] ~]# 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)
[[email protected] ~]# 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
[[email protected] ~]# showmount -e 192.168.253.143 并没重启也生效了
Export list for 192.168.253.143:
/home/nfstestdir 192.168.253.0/24
/tmp/ (everyone)
[[email protected] ~]# mount -t nfs 192.168.253.143:/tmp/ /mnt/
[[email protected] ~]# 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
[[email protected] ~]# ls /mnt/
111.back
123.txt
1.txt
php_errors.log
rsync
systemd-private-e042408672ad43509447474a6c527839-vmtoolsd.service-8C3IHP
zhang
现在 两个目录一样文件
[[email protected] ~]# ls /tmp/
111.back
123.txt
1.txt
php_errors.log
rsync
systemd-private-e042408672ad43509447474a6c527839-vmtoolsd.service-8C3IHP
zhang
[[email protected] ~]# vim /tmp/8.txt
[[email protected] ~]# 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
[[email protected] ~]# 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时候遇到比较多,不是每次都有,偶尔会出现
[[email protected] ~]# mount -t nfs -o nfsvers=3 192.168.253.143:/tmp/ /mnt/
[[email protected] ~]# 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家目录下,这样有点不安全,我们设置用户 密码是登录系统的,所以我们设置一个用户 虚拟用户,映射成系统里面的一个普通用户,可以映射多个用户,
即使给了用户名密码也不会登录我们的系统的,比较安全
[[email protected] ~]# useradd -s /sbin/nologin virftp 创建这个用户就是我们以哪个用户传下载啊 -s 是用户的shell ,不能登录 ,
虚拟用户的密码文件, 定义用户名和密码,格式比较特殊 奇数行为用户名,偶数行为密码
[[email protected] ~]# vim /etc/vsftpd/vsftpd_login
test1
12345678
user1
12345678
[[email protected] ~]# chmod 600 /etc/vsftpd/vsftpd_login
[[email protected] ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
[[email protected] ~]# 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的,
创建虚拟用户 所在配置文件路径
[[email protected] ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[[email protected] ~]# cd /etc/vsftpd/vsftpd_user_conf
创建配置文件有点特殊,如果给test1用户创建配置文件名字就叫test1
[[email protected] 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 最大的客户端是多少
定义完虚拟用户的配置文件后,我们在创建虚拟用户的家目录
[[email protected] vsftpd_user_conf]# mkdir /home/virftp/test1
[[email protected] vsftpd_user_conf]# touch /home/virftp/test1/test1.txt 然后创建一个文件 我们登录的时候就可以看到这个文件
[[email protected] vsftpd_user_conf]# chown -R virftp:virftp /home/virftp 权限设置
[[email protected] vsftpd_user_conf]# vim /etc/pam.d/vsftpd 用户的密码文件认证的文件,可以自定义,但要让系统指定自定义到哪里,去哪里找,,登录ftp 得有个过程,总得有个库比对
[[email protected] 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为的,要看是哪一种 ,如果导致文件不存在,用户名密码再对也没办法完成认证
[[email protected] 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
[[email protected] vsftpd_user_conf]# systemctl start vsftpd
[[email protected] 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
[[email protected] 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
原文地址:https://www.cnblogs.com/linuxzhang/p/9759512.html