NFS服务端安装配置
准备两台机器,一个做服务端,一个做客户端
服务器端:192.168.176.135 客户端:192.168.176.134
服务器端操作:
安装两个包 nfs-utils rpcbind
[root@ma-1 ~]# yum install -y nfs-utils rpcbind
安装完后编辑export
[root@ma-1 ~]# vim /etc/exports
加入下面内容
/home/nfstestdir 192.168.176.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
字段理解
#/home/nfstestdir :需要共享挂载的目录
#192.168.8.0/24:共享网段的权限,也可以是IP
保存配置文件后,执行如下准备操作
[root@ma-1 ~]# mkdir /home/nfstestdir //创建分享的目录
[root@ma-1 ~]# chmod 777 /home/nfstestdir //共享目录设置777权限
#systemctl start nfs //启动nfs服务,rpcbind默认监听端口111
#systemctl enable rpcbind //设置开机启动
#systemctl enable nfs //开机启动nfs
客户端的配置
安装 nfs-utils
[root@shuai-02 ~]# yum install -y nfs-utils //安装包
查看是否有权限连接
[root@shuai-02 ~]# showmount -e 192.168.176.135
Export list for 192.168.176.135:
/home/nfstestdir 192.168.176.0/24
错误:
[root@shuai-02 ~]# showmount -e 192.168.176.135
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
如果都配置完成了,但是连接有错误,查看nfs服务是否开启,可以检查一下机器防火墙(iptables or firewalld or selinux)
Export list for 192.168.176.135:
/home/nfstestdir 192.168.176.0/24
//服务器机的/home/nfstestdir目录,共享给了192.168.176.0/24网段
在客户机上挂载:
[root@shuai-02 ~]# mount -t nfs 192.168.176.135:/home/nfstestdir /mnt/
[root@shuai-02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 1.1G 17G 6% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.7M 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.176.135:/home/nfstestdir 18G 7.0G 11G 40% /mnt
客户机创建文件,指定为1000
[root@shuai-02 mnt]# touch test
[root@shuai-02 mnt]# ls -l
总用量 0
-rw-r--r--. 1 1000 1000 0 1月 21 21:00 test
-rw-r--r--. 1 1000 1000 0 1月 21 20:51 test.log
服务器机创建文件:
[root@ma-1 mnt]# touch test.log
[root@ma-1 ~]# ls -l /home/nfstestdir/
总用量 0
-rw-r--r--. 1 shuai shuai 0 1月 21 21:00 test
-rw-r--r--. 1 shuai shuai 0 1月 21 20:51 test.log
NFS配置选项
rw:读写;
ro :只读
sync:(同步)将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:(异步)将数据先保存在内存缓冲区中,必要时才写入磁盘;
all_squash:所有访问用户都映射为匿名用户或用户组(这里指的/etc/exports定义的用户);
no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
anonuid=1000,anongid=1000:uid:1000;gid=1000
no_root_squash 客户端挂载NFS服务后,root用户不受约束,权限很大
root_squash 与上面选项相对,客户端上的root用户受到约束,被限定成某个普通用户
exports命令
exportfs命令服务器端的操作
exportfs命令用来管理当前NFS共享的文件系统列表
命令:exports
选项:
-a:全部卸载或全部挂载
-r:重新挂载
-u:卸载某个目录
-v:显示共享目录
常用组合: exportfs -arv
服务端更改配置文件后,不重启服务,直接执行该命令就可以使更改后的配置文件生效。
注意: 在重启nfs服务之前需要先将所有挂载点卸载,否则将发生程序错误
NFS客户端问题
NFS 4版本的问题
客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、数组为nobody
解决方法:
方法1:在客户端进行挂载时加上选项-o nfsvers=3
monunt -t nfs -o nfsvers=3 192.168.176.135:/tmp/ /mnt/
如果目录已经挂载,而又不想卸载,执行如下命令:
monunt -t nfs -o remount,nfsvers=3 192.168.176.135:/tmp/ /mnt/
方法2:客户端和服务端都需要
vim /etc/idmapd.conf
把该配置文件中的“Domain = local.domain.com ”改为“Domain = xxx.com ”(此处 xxx.com 自定义),然后重启rpcidmapd服务(在centos7中直接重启rpcbind服务)。
FTP介绍
当使用跳板机连接时,rz工具就不好使用,此时FTP可以解决该问题。
FTP(file transfer protocol)文件传输协议,用于在Internet上控制文件的双向传输。FTP主要作用是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷贝到本地计算机,或把本地文件传送到远程计算机。
该服务在小公司用的比较多,由于FTP服务的安全性较差,所以大公司不使用该服务。
使用vsftpd搭建ftp
安装vsftpd工具
centos中默认自带vsftpd安装包。
[root@ma-1 ~]# yum install -y vsftpd
创建用户:
[root@ma-1 ~]# useradd -s /sbin/nologin virftp
//-s 指定shell 不能登录
vsftpd可以使用系统级别的用户进行登录,但是这样做不安全,所以需要使用vsftpd创建一个虚拟用户。在此创建一个系统普通用户的作用是使vsftpd的虚拟用户来进行映射,然后完成数据的传输。
编辑密码文件
[root@ma-1 ~]# vim /etc/vsftpd/vsftpd_login
testuser1
shuai
user1
111111
奇数行为用户名,偶数行为密码,多个用户就写多行
这里,1,3行尾用户名 2 ,4行为密码
设置密码文件权限
[root@localhost ~]# chmod 600 /etc/vsftpd/vsftpd_login
将密码文本文件转化成二进制文件
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
创建虚拟用户目录和虚拟用户配置文件
[root@localhost ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@localhost ~]# cd /etc/vsftpd/vsftpd_user_conf
定义虚拟用户配置文件时,文件名需要和密码文件定义的用户名保持一致,我这里定义的为testuser1
[root@localhost 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 #链接ftp超时时间
data_connection_timeout=120 #数据传输的超时时间
max_clients=10 #最大的客户端
在此保持虚拟用户配置文件和虚拟用户名称一致。
创建虚拟用户家目录
[root@ma-1 vsftpd_user_conf]# mkdir /home/virftp/testuser1
家用户目录下,创建一个文件
[root@localhost vsftpd_user_conf]# touch /home/virftp/testuser1/test.txt
改一下全限
[root@localhost vsftpd_user_conf]# chown -R virftp:virftp /home/virftp
定义密码文件路径
[root@ma-1 vsftpd_user_conf]# 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
编辑vsftpd主配置文件
[root@localhost ~]# 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
[root@localhost ~]# systemctl start vsftpd
客户端测试
如果在Windows系统进行测试,可以在Windows安装filezilla软件。在Linux中测试,安装lftp工具。
filezilla工具 lftp工具
# yum install -y lftp
用法:
[root@localhost ~]# lftp ggg@127.0.0.1
口令:
#登录
lftp testuser1@127.0.0.1:~> ls
drwxr-xr-x 2 1002 1002 22 Aug 24 10:19 testuser1
lftp testuser1@127.0.0.1:/> ?
#查询在lftp中可执行的命令
#常用命令:put、get
lftp testuser1@127.0.0.1:/> get testuser1/adai.txt
lftp testuser1@127.0.0.1:/> quit
xshell使用xftp传输文件
下载Xshell的Xftp插件:
快捷键:Ctrl + Alt + F
在Xshell登录状态,快捷键:Ctrl + Alt + F 弹出XFtp
默认状态:左边是Windows系统桌面,右边centos系统用户夹目录
这两个系统,可以互传文件!!
使用pure-ftpd搭建ftp服务
安装epel-release和pure-ftpd:
[root@centos7 ~]# yum install -y pure-ftpd
编辑pure-ftpd.conf配置文件:
vim /etc/pure-ftpd/pure-ftpd.conf
找到pureftpd.pdb这行,把行首的#删除
关闭vsftpd服务(下面打开pure-ftpd服务 也需要占用21端口):
[root@centos7 ~]# systemctl stop vsftpd
[root@centos7 ~]# systemctl start pure-ftpd
查看pure-ftpd服务端口号:
[root@centos7 ~]# netstat -nutlp| grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 15034/pure-ftpd (SE
tcp6 0 0 :::21 :::* LISTEN 15034/pure-ftpd (SE
创建一个测试目录ftp:
[root@centos7 ~]# mkdir /data/ftp
创建一个普通用户,-u指定uid:
[root@centos7 ~]# useradd -u 1010 pure-ftp
把测试目录ftp,属主属组改为pure-ftp:
[root@centos7 ~]# chown -R pure-ftp:pure-ftp /data/ftp
创建虚拟用户,指定映射的系统用户,指定虚拟用户夹目录:
[root@centos7 ~]# pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp
Password:
Enter it again:
[root@centos7 ~]# pure-pw mkdb #必须执行这步,建立数据
[root@centos7 ~]# touch /data/ftp/123.txt
xshell使用xftp传输文件
xftp传输文件使用ssh协议进行传输文件,在Windows和linux之间。使用22端口。
下载xftp,安装。平常的Windows安装软件,一步一步来。安装完成后,登录xshell,选择一个远程连接的页面,使用组合键:Ctrl+Alt+F。使用xftp。
pure-ftpd搭建ftp服务
安装pure-ftpd,pure-ftpd在epel扩展源下。
[root@ma-1 ~]# yum install -y pure-ftpd
改配置:
[root@ma-1 ~]# vim /etc/pure-ftpd/pure-ftpd.conf
找到#PureDB /etc/pure-ftpd/pureftpd.pdb
删除#号
保存退出。
启动pure-ftpd服务,pure-ftpd是使用21端口,所以pure-ftpd与vsftpd是不能同时使用的。
[root@ma-1 ~]# systemctl start pure-ftpd
创建一个测试的目录
[root@ma-1 ~]# mkdir /data/ftp
创建一个用户:
[root@ma-1 ~]# useradd -u 1010 pure-ftp
更改测试目录的属组和属主:
[root@ma-1 ~]# chown -R pure-ftp:pure-ftp /data/ftp
创建虚拟用户
[root@ma-1 ~]# pure-pw useradd ftp-usera -u pure-ftp -d /data/ftp
Password:
Enter it again:
创建虚拟用户并映射到系统用户pure-ftp上
-u 是指定系统用户
-d 是指定虚拟用户的家目录,也是系统用户的家目录
先执行
[root@ma-1 ~]# pure-pw mkdb
然后才能登陆
测试:
先在/data/ftp创建一个文件(/data/ftp/123.txt)
[root@ma-1 ~]# touch /data/ftp/123.txt
[root@ma-1 ~]# lftp ftp_usera@127.0.0.1
问题:
[root@ma-1 ~]# lftp ftp_usera@127.0.0.1
-bash: lftp: 未找到命令
解决方法:
[root@ma-1 ~]# yum install -y lftp