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服务
15.6扩展
14.1 NFS介绍
#NFS文件系统是基于网络层面,需要通过网络实现数据的同步
#
#NFS服务端给NFS客户端提供服务需要借助RPC协议的rpcbind服务(CentOS6开始的叫法,CentOS5及之前叫portmap服务),实现通信
#NFS不监听任何端口;最终实现TCP/IP通信的过程是由RPC监听111端口实现的
NFS传输过程:先由服务端的NFS服务在RPC服务商注册一个端口,然后服务端的RPC服务通过TCP/IP将注册的端口号告知客户端的RPC服务,最后NFS客户端通过与NFS服务端注册的端口进行通信,实现数据传输。
14.2 NFS服务端安装配置
给服务端安装NFS
1、下载nfs-utils安装包
yum install -y nfs-utils rpcbind
2、修改exports文件,增加一行
vim /etc/exports
#加入如下内容
/home/nfstestdir 192.168.233.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
#设置分享目录、分享ip或者ip段,目录与ip用空格隔开
3、创建分享目录,加上777权限
mkdir /home/nfstestdir
chmod 777 /home/nfstestdir
4、启动并设置开机自启rpcbind服务和nfs服务
• systemctl start rpcbind
• systemctl start nfs
• systemctl enable rpcbind
• systemctl enable nfs
14.3 NFS配置选项
配置exports文件增加行内小括号可加的参数说明:
#多个参数间用","逗号隔开
• rw 读写
• ro 只读
• sync 同步模式,内存数据实时写入磁盘
• async 非同步模式
• no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大
• root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
• all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户
• anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid
客户端挂载nfs
1、下载nfs-utils包
• yum install -y nfs-utils
2、 查看远程服务端共享情况(共享目录和允许访问的ip)
• showmount -e 192.168.233.150
[root@xinlinux-01 ~]# showmount -e 192.168.233.150
Export list for 192.168.233.150:
/home/nfstestdir 192.168.233.0/24
3、挂载nfs
• mount -t nfs 192.168.233.150:/home/nfstestdir /mnt
#mount -t nfs 远程ip:共享目录 挂载目录
4、查看挂载是否成功
• df -h
[root@xinlinux-01 ~]# mount -t nfs 192.168.233.150:/home/nfstestdir /mnt
[root@xinlinux-01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 28G 1.2G 27G 5% /
devtmpfs 481M 0 481M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 7.4M 485M 2% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/sda1 197M 112M 85M 57% /boot
tmpfs 99M 0 99M 0% /run/user/0
192.168.233.150:/home/nfstestdir 28G 4.5G 24G 16% /mnt
测试:
• touch /mnt/123.txt
• ls -l /mnt/123.txt
#可以看到文件的属主和属组都为1000
id 用户名 #查看用户信息(uid,gid)
[root@xinlinux-01 ~]# ls -l /mnt/123.txt
-rw-r--r-- 1 user1 user1 0 10月 2 09:50 /mnt/123.txt
[root@xinlinux-01 ~]# id user1
uid=1000(user1) gid=1000(user1) 组=1000(user1)
#报错
[root@xinlinux-01 ~]# showmount -e 192.168.233.150
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
#无法与服务端111端口通信
两个可能:
1、服务端的rpc服务没开启;
2、防火墙没关闭;
两边同时关闭firewalld和SEXlinux
systemctl stop firewalld
setenforce 0
14.4 exportfs命令
使用场景:当需要变更(更改、增加或删除)共享目录,要先更改配置文件,然后重启nfs服务;但是这样会让客户端的nfs挂起状态,无法正常访问,进程杀不死,重启nfs也重启不了(所以要重启服务端的nfs,要先将客户端挂载的nfs卸载umount)
exportfs命令(不用重启nfs也能使配置文件生效)
• 常用选项
• -a 全部挂载或者全部卸载
• -r 重新挂载
• -u 卸载某一个目录
• -v 显示共享目录
测试:服务端创建新的共享目录tmp,客户端创建xinlinux目录作为tmp目录的挂载目录
• 以下操作在服务端上
•vim /etc/exports
#增加共享目录/tmp/
/tmp/ 192.168.233.0/24(rw,sync,no_root_squash)
• exportfs -arv
#不用重启nfs服务,配置文件就会生效
[root@xinlinux-03 ~]# exportfs -arv
exporting 192.168.233.0/24:/tmp
exporting 192.168.233.0/24:/home/nfstestdir
• 以下操作在客户端
• mkdir /xinlinux
• mount -t nfs 192.168.233.150:/tmp /xinlinux
• touch /xinlinux/test.txt
• ls -l /xinlinux/test.txt
#发现所有者和所属组都是root,因为配置文件的时候选择了no_root_squash,root用户不受限制
[root@xinlinux-01 ~]# mount -t nfs 192.168.233.150:/tmp/ /xinlinux/
[root@xinlinux-01 ~]# touch /xinlinux/test.txt
[root@xinlinux-01 ~]# ls -l /xinlinux/test.txt
-rw-r--r-- 1 root root 0 10月 2 10:04 /xinlinux/test.txt
14.5 NFS客户端问题
#客户端文件属主属组nobody
NFS 4版本会有问题:
客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、属组为nobody
解决问题两种方案:
1、客户端挂载时加上 -o nfsvers=3 #将nfs版本变成3
先正常挂载,然后重新挂载
mount -t nfs -o nfsvers=3 192.168.233.150:/tmp/ /xinlinux
mount -t nfs -oremount,nfsvers=3 192.168.233.150:/tmp/ /xinlinux
[root@xinlinux-01 ~]# umount /xinlinux
[root@xinlinux-01 ~]# mount -t nfs -o nfsvers=3 192.168.233.150:/tmp/ /xinlinux
[root@xinlinux-01 ~]# mount -t nfs -oremount,nfsvers=3 192.168.233.150:/tmp/ /xinlinux
2、修改/etc/idmapd.conf文件
#客户端和服务端都需要
vim /etc/idmapd.conf
#把“#Domain = local.domain.edu” 改为 “Domain = xxx.com” (这里的xxx.com,随意定义),然后再重启rpcidmapd服务(重启rpcbind服务即可)
15.1 FTP介绍
FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。
#FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。
#小公司用的多,大企业不用FTP,因为不安全
15.2/15.3 使用vsftpd搭建ftp
#centos上自带vsftpd软件包
搭建ftp
1、下载vsftpd包
• yum install -y vsftpd
2、创建virftp虚拟用户
#这个用户不是通过ssh登录,是通过ftp登录到该用户的家目录,为了安全,-s /sbin/nologin,不能通过ssh登录用户系统
• useradd -s /sbin/nologin virftp
3、编辑vsftpd的虚拟用户的密码文件,定义用户的文件密码
• vim /etc/vsftpd/vsftpd_login
#内容如下,奇数行为用户名,偶数行为密码,多个用户就写多行
ftpuser1
123456
4、设置密码文件的权限
• chmod 600 /etc/vsftpd/vsftpd_login
5、将文本密码文件转化为计算机能识别的二进制文件
• db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
6、创建虚拟用户配置文件所在目录
• mkdir /etc/vsftpd/vsftpd_user_conf
7、定义虚拟用户配置文件(文件命名要与用户名保持一致)
• cd /etc/vsftpd/vsftpd_user_conf
• vim ftpuser1
#加入如下内容
local_root=/home/virftp/ftpuser1
#定义虚拟用户的家目录
anonymous_enable=NO
#是否允许匿名用户
write_enable=YES
#是否允许可写
local_umask=022
#定义umask值
anon_upload_enable=NO
#是否允许匿名用户可上传
anon_mkdir_write_enable=NO
#是否允许匿名用户创建目录并且可写
idle_session_timeout=600
#连接ftp后空闲时间段后断开连接
data_connection_timeout=120
#数据传输的超时时间
max_clients=10
#最大客户端数量
8、创建虚拟用户家目录
• mkdir /home/virftp/ftpuser1
• touch /home/virftp/ftpuser1/aming.txt
9、更改家目录所有者,属组权限
• chown -R virftp:virftp /home/virftp
10、定义密码文件存放cd位置
• 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
#CentOS6系统分32位和64位的,要注意是否有lib64(或者32)/security/pam_userdb.so这个认证文件
11、编辑vsftpd主配置文件
• 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
12、启动vsftpd服务
• systemctl start vsftpd #启动vsftpd服务
netstat -lntp #查看ftp监听端口是否启动(ftp监听21端口)
Linux客户端测试:
•yum install -y lftp #Linux安装ftp客户端软件
• lftp [email protected]
#执行命令ls,看是否正常输出
#若不正常查看日志/var/log/messages和/var/log/secure
windows客户端测试:
# windows下安装filezilla客户端软件,进行测试
15.4 xshell使用xftp传输文件
第一种方案:xshell新建会话,协议改为SFTP,其他的往常改动,然后登陆,输入设置的虚拟用户密码,get到的文件会放会话属性的SFTP-->自定义的本地文件夹
第二种方案:xshell借助xftp插件
在xsehll界面按CTRL+ALT+F,打开xftp插件;如果没有下载下载,去r.aminglinux.com下载
#双击、拖移即可下载文件
15.5 使用pure-ftpd搭建ftp服务
#使用pure-ftpd搭建比vsftpd搭建要简单
pure-ftpd搭建ftp
1、安装pure-ftpd包(需要epel扩展源)
•yum install -y epel-release
• yum install -y pure-ftpd
2、编辑pure-ftpd配置文件
• vim /etc/pure-ftpd/pure-ftpd.conf
#找到pureftpd.pdb这行,把行首的#删除
(pureftpd.pdb是密码文件)
3、关闭vsftpd服务,开启pure-ftpd服务(因为都是监听21端口的)
• systemctl stop vsftpd
• systemctl start pure-ftpd
4、创建给pure-ftp的用户使用的目录
• mkdir /data/ftp
5、创建一个普通用户pure-ftp
• useradd -u 1010 pure-ftp
6、将/data/ftp的属主权限改为pure-ftp
• chown -R pure-ftp:pure-ftp /data/ftp
7、创建pure-ftp用户
• pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp
#useradd指定创建用户名,-u指定系统用户,-d指定用户家目录;然后设置密码
[root@xinlinux-03 testuser1]# pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp
Password:
Enter it again:
8、将用户密码转化成计算机识别的二进制文件
• pure-pw mkdb
测试:
touch /data/ftp/123.txt
lftp [email protected]
ls
pure-pw用法:
pure-pw list #列出所有的用户
pure-pw userdel #删除用户
pure-pw usermod #更改用户权限属性
pure-pw passwd #更改用户密码
pure-pw mkdb #转化用户密码文件