NFS(Network File System)数据传输基于RPC协议,RPC为Remote Procedure Call的简写。shell
NFS的应用场景是:A,B,C3台机器上须要保证被访问到的文件是同样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致。数据库
NFS原理图:vim
在CentOS上使用NFS服务须要安装两个包(nfs-utils和rpcbind),当咱们使用yum安装nfs-utils时会一并安装rpcbind:安全
#yum install -y nfs-utils服务器
而后修改配置文件:session
#vim /etc/exportsdom
写入以下内容:async
/home/nfstestdir 192.168.6.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)测试
编辑好配置文件后建立相关的目录并启动NFS服务:ui
[root@zhangjin-120:~]#mkdir /home/nfstestdir #建立目录 [root@zhangjin-120:~]#chmod 777 /home/nfstestdir #更改权限 [root@zhangjin-120:~]#systemctl start rpcbind #启动rpc服务 [root@zhangjin-120:~]#systemctl start nfs #启动nfs服务 [root@zhangjin-120:~]#systemctl enable rpcbind #rpc服务开机启动 [root@zhangjin-120:~]#systemctl enable nfs #nfs服务开机启动 Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
上面咱们修改了配置文件/etc/exports,并写入以下内容:
/home/nfstestdir 192.168.6.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
其中,第一部分是本地要共享出去的目录,而后是容许访问的主机(能够是一个IP,也能够是一个IP段),小括号里面的是一些权限选项:
rw:表示只写。
ro:表示只读。
sync:同步模式,表示内存中的数据实时写入磁盘。
async:非同步模式,表示把内存中的数据按期写入磁盘。
no_root_squash:加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操做同样。但这样安全性会下降。
root_squash:与no_root_squash选项对应,表示root用户对共享目录的权限不高,只有普通用户的权限,即限制了root。
all_squash:表示无论使用NFS的用户是谁,其身份都会被限定为一个指定的普通用户身份。
anonuid/anongid:要和root_squash以及all_squash选项一同使用,用于指定使用NFS的用户被限定后的uid和gid,但前提是本机的/etc/passwd中存在相应的uid和gid。
上面的配置文件/etc/exports为要共享的目录为/home/nfstestdir,信任的主机为192.168.6.0/24这个网段,权限为读/写,同步模式,限定全部使用者,而且限定的uid和gid都为1000。
咱们准备两台虚拟机,192.168.6.120做为服务端,192.168.6.123做为客户端。在客户端挂载NFS以前,咱们须要先查看服务端共享了哪些目录。客户端安装了nfs-utils包后,可使用showmount命令查看:
使用命令showmount -e IP能够查看NFS的共享状况,从上面咱们能够看到192.168.6.120的共享目录为/home/nfstestdir,信任主机为192.168.6.0/24这个网段。
而后在客户端上(192.168.6.123)挂载NFS:
能够看到增长了一个/mnt分区,这个就是NFS共享的目录了。
咱们进入到/mnt/目录下,并建立测试文件:
咱们在服务端上也能够看到这个文件:
exportfs命令的经常使用选项有:
-a:表示所有挂载或者卸载。
-r:表示从新挂载。
-u:表示卸载某一个目录。
-v:表示显示共享的目录。
当改变/etc/exports配置文件后,使用exportfs命令挂载不须要重启NFS服务。
咱们在服务端(192.168.6.120)修改配置文件/etc/exports:
而后在服务端执行命令exportfs -arv:
在前面咱们用不对劲了mount命令。其实用mount命令来挂载NFS服务是要用-t nfs来指定挂载的类型为nfs。另外在挂载NFS服务时,经常使用-o nolock(不加锁)选项。例如咱们在客户端(192.168.6.123)上执行以下命令:
咱们还能够把要挂载的NFS目录写到客户端上的/etc/fstab文件中,挂载时只须要执行mount -a命令便可。
#vim /etc/fstab
这样操做的好处是之后开机会自动挂载NFS。刚刚挂载的/zhangjin/目录在服务端设置了no_root_squash,它并不会限制root用户,也就是说使用root用户建立文件时,跟在客户端本机上建立的同样:
能够看到,test.txt的全部者和所属组都为root。
NFS4版本会有该问题:客户端挂载共享目录后,不论是root用户仍是普通用户,建立新文件时属主、属组为nobody。
解决的办法有两种:
一是客户端挂载时加上-o nfsvers=3(指定nfs的版本为3版本)
# mount -t nfs -o nfsvers=3 192.168.6.120:/tmp/ /mnt/
客户端和服务端都须要
另外一种方法是编辑文件:
vim /etc/idmapd.conf
把“#Domain = local.domain.edu”改成“Domain = xxx.com”,而后再重启rpcidmapd服务。
FTP(File Transfer Protocol)文件传输协议,用于在因特网上控制文件的双向传输。它同时也是一个应用程序,用户能够经过它把本身的PC机与世界各地全部运行FTP协议的服务器相连,以访问服务器上的大量程序和信息。
FTP的主要做用就是让用户链接一个远程计算机,并查看远程计算机中的文件,而后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。FTP方便传输数据,因此我的用户不少,但在企业里用得愈来愈少,由于FTP是有必定安全隐患的。
一、安装vsftpd
#yum install -y vsftpd
二、创建账号及与虚拟帐户相关的文件
#useradd virftp -s /sbin/nologin
#vim /etc/vsftpd/vsftpd_login
写入以下内容:
test1
123456
zhangjin
abcdef
其中,test一、test2为用户名,12345六、abcdef为对应的密码。
再更改该文件的权限
#chmod 600 /etc/vsftpd/vsftpd_login
因为vsftpd使用的密码不是明文的,须要生成对应的库文件:
#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 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 max_per_ip=5 local_max_rate=50000
其中,local_root为test1帐号的家目录,anonymous_enable用来限制是否容许匿名帐号登陆(若为NO,表示不容许匿名帐号登陆),write_enable=YES表示可写,local_umask指定umask值,anon_upload_enable表示是否容许匿名帐号上传文件,anon_mkdir_write_enable表示是否容许匿名帐号可写。
建立zhangjin帐号的步骤和test1同样:
#mkdir /home/virftp/test1
#touch /home/virftp/test1/testvirftp.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
四、修改全局配置文件/etc/vsftpd/vsftpd.conf
并在文件最后面添加以下内容:
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
而后启动vsftpd服务:
#systemctl start vsftpd
再安装lftp客户端软件:
#yum install -y lftp
而后进行测试:
下载软件:
在Xshell里按住ctrl+alt+f弹出下载页面:
安装完成后再在Xshell里按住ctrl+alt+f,此时就会弹出传输页面:
此时就能够在两边传输文件了。
一、安装pure-ftpd
#yum install -y epel-release
#yum install -y pure-ftpd
二、配置pure-ftpd
#vim /etc/pure-ftpd/pure-ftpd.conf
而后搜索PureDB /etc/pure-ftpd/pureftpd.pdb,把前面的#去掉。而后启动pure-ftpd,启动以前须要关闭vsftpd,由于端口冲突:
#systemctl stop vsftpd
#systemctl start pure-ftpd
查看pure-ftpd是否启动成功:
三、创建帐号
其中,-u选项将虚拟用户ftp_user1与系统用户pure-ftp关联在一块儿,也就是说,使用ftp_user1帐号登陆FTP后,会以pure-ftp的身份来读取和下载文件,-d选项后面的目录为ftp_user1帐户的家目录,这样可使ftp_user1只能访问其家目录/data/ftp/。
而后建立用户信息数据库文件:
#pure-pw mkdb
其中,pure-pw还能够列出当前的FTP帐号以及删除某个帐号。例如:
下面进行测试: