服务器搭建六——共享文件系统NFS和Samba

1.测试环境:

a)虚拟机安装centos
b)测试软件:NFS和Samba

2.NFS原理

NFS(network file system 网络文件系统)主要用在unix系统和linux系统下的文件共享。采用是服务器/客户端的模式。

NFS原理图

1)首先服务器端启动RPC服务,并开启111端口
2)启动NFS服务,并向RPC注册端口信息
3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

3.安装NFS软件

查询是否安装yum list installed|grep nfs rpcbind

安装nfs和rpcbind

其中nfs-utils-1.2.3-75.el6.x86_64是提供NFS服务的软件包,rpcbind-0.2.0-13.el6.x86_64是提供端口映射服务的工具包。
b)查询ps -eaf|grep rpcbind netstat -anp|grep :111
rpcbind默认是自动执行的 监听端口是111

监听端口111

NFS 服务守护进程:rpc.nfsd管理客户端是否能够登录服务器rpc.mountd管理NFS的文件系统,根据所设的权限决定是否允许客户端安装使用指定的目录或文件(是有nfs-utils提供)

启动nfs

Nfsd的端口2049端口。Rpc.mountd端口不固定。因为远程客户端调用NFS服务时,需要注意防火墙开发对应的端口。可以使用rpcinfo命令查看了解NFS进程与端口的状态。

4.设置NFS服务器的共享目录

主要方式有两种:1)设置/etc/exports 2)使用命令exportfs增加和去除共享目录
在/etc/exports中的格式:目录路径 机器(选项1,选项2.....)选项有各种权限
/pub *(ro,insecure,all_squash)
exportfs 参数:-a导出所有列在/etc/exports文件中的目录-v输出每一个被导出或取消导出的目录-r重新导入 -u取消指定目录的导出-i 允许导出没有在文件中目录,-f指定一个文件代替/etc/exports -o 指定导出目录的选项

编辑exports并重启nfs

上面错误的原因是在主机上面不存这个目录或者文件。可以在系统下面新建一个mkdir pub

新建pub

重启服务没有在报错
重启服务

mount -t nfs 192.168.197.128:/pub /mnt 就可以查看到已经挂载到本地了。

挂载

关于挂载还可以设置动态挂载和每次启动时候自动挂载。在/etc/fstab每一行指定一个挂载文件系统。文件类型:nfs

fstab

也可以使用autofs软件
安装软件
已经安装autofs

配置文件/etc/auto.master
/mnt /etc/auto.mnt(第一个为挂载点,挂载点映射文件的位置 第三个可选项指定挂载选项)使用时候才会自动挂载。

5.Samba原理

Samba是开源的可以为SMB和CIFS客户提供所有方式的我呢进行和打印服务,包括各种版本的windows客户。
SMB协议和NentBIOS协议是windows操作系统使用的共享文件系统的协议。Samba实现了在unix类操作系统SMB协议。SMB一开始的设计是在NetBIOS协议上运行的(而NetBIOS本身则运行在NetBEUI、IPX/SPX或TCP/IP协议上),Windows 2000引入了SMB直接在TCP/IP上运行的功能。
步骤1:协议协商
客户端在访问Samba服务器时,发送negprot指令数据包,告知目标计算机其支持的SMB类型。Samba服务器根据客户端的情况,选择最优的SMB类型,并做出回应;
步骤2:建立连接
当SMB类型确认后,客户端会发送session setup指令数据包,提交帐号和密码,请求与Samba服务器建立连接,如果客户端通过身份验证,Samba服务器会对session setup报文作出回应,并为用户分配唯一的UID,在客户端与其通信时使用;
步骤3:访问共享资源
客户端访问Samba共享资源时,发送tree connect指令数据包,通知服务器需要访问的共享资源名,如果设置允许,Samba服务器会为每个客户端与共享资源连接分配TID,客户端即可访问需要的共享资源;
步骤4:断开连接
共享使用完毕,客户端向服务器发送tree disconnect报文关闭共享,与服务器断开连接。

6.Samba软件安装

查询rpm -qa|grep samba看到如下:samba-common为samba服务器和客户端提供支持的公共包。Samba-client的samba的客户端。samba-winbind-clientssamba-winbind。samba里的winbind是samba作为windows域成员的一个中介.使用yum install -y samba之后安装安装的服务器samba才是我们的服务器软件。

查询安装情况

安装samba

rpm -ql samba可以查看到安装的软件的文件
安装后文件

安装后的文件

测试启动: service smb start service nmb start
启动正常

Samba默认是启动了smbd负责处理对文件和打印机的服务请求和nmbd负责处理NetBIOS名称服务并提供网络浏览功能。
查看端口号

端口tcp139:NetBIOS协议默认会话服务监听端口 端口tcp445:TCP协议上实现SMB协议。
端口udp137 NetBIOS名称服务 端口UDP138 数据包服务。
在地址栏输入:\192.168.197.128,看到如下界面说明服务已经正常启动
测试登录

7.配置文件

配置文件/etc/samba/smb.conf里面包括[global] (全局参数核心内容,决定samaba要实现的功能)和[homes](主目录的文件服务) [printers](打印机共享服务)也可以添加新的用户命名的区段表示要共享的资源。
因为配置文件项目很多。本文就不在详细说明了,大部分大家都可以看的懂是什么意思


配置文件

配置文件

下面的是homes和printers的配置


配置文件

8.测试

当以上的配置文件根据你的需要配置结束之后,还需要在samba服务器建立系统账号,然后使用smbpasswd建立samba的自己的账号用于远程登录。可以发现使用smbpasswd时候账号必须是系统存在的账号否则会提示错。

新建帐号

新建smb服务账号

登录\192.168.197.128时候报错,一个是我们添加账号是否的密码SMB的,如果使用系统账号的密码肯定无法登录。再就是需要设置好selinux问题。
selinux在smb中设置
账号或者密码错误

下面出现关于权限的问题。就需要设置selinux的问题了

权限问题
修改权限问题——selinux

再次进入竟可以正常进入了,并且在windows下新建一个文件,然后

在smb服务器查看Windows新建的文件

到此我们就构建完了samba。再次所有的配置文件我都是有系统默认,没有修改。本文知识个人测试功能。如果在实际过程中是要按照具体需要进行配置比如每个账号登录的目录不一样,使用权限也不要等等。
如果我们在windows系统下也做了共享配置。并且新建一个测试账号,我们在linux系统也是可以登录。下面是使用本机SMB服务器测试的结果。

linux系统下登录共享
windows下设置共享

打开后将里面所有的都启用。Windows7的共享配置就设置好了。
这是在linux连接windows的测试结果,这个可能和我的设置有关,因为我的账号没有密码在就是windows7 没有开启anonymous所以没有共享出来的目录。

linux访问windows的共享
修改了windows配置之后

最后几个报错是没有关系,这个是windows里面设置原因。我没有在进一步的研究,现在其实是不影响我们的共享使用的。

推荐阅读更多精彩内容