Linux 第50天 NFS&&Samba
时间:20180911
目录
NFS (Network FileSystem)网络文件系统
NFS原理
NFS配置
/etc/export里常用选项含义
Samba
原理
Samba安装配置
主配置文件/etc/samba/smb.conf 配置文件中设定
创建samba用户密码
启用samba服务
samba客户端使用
总结
NFS (Network FileSystem)网络文件系统
一个可以通过网络在不同主机之间彼此实现资源共享。所以也可以简单地将其认为是一个
文件服务器,NFS服务可以让客户端主机将网络远程的NFS服务器共享的目录挂载到本地
端的机器当中,远程主机目录就和本地磁盘分区一样,非常方便。
NFS原理
1. 主要借助RPC(Remote Procedure Call)来实现文件分享,RPC通过函数(远程主机上
的函数)调用一部分功能由本地程序完成,另一部分由远程主机上的函数完成,两者共同
完成资源的共享。
2. NFS支持的功能很多,而每个功能都会使用不同的程序来启动,每启动一个功能就会
启用一些端口来传输数据,因此NFS没有固定的端口,而是随机使用一些未被使用的小于
1024的端口来作为数据传输。但客户端如何知道服务器端开启的哪些端口是NFS端口?
3.要得知这些端口就需要远程过程调用RPC服务,RPC主要功能就是指定每个NFS功能所
对应的端口号,并将端口反馈给客户端,让客户端可以连接到正确的端口。RPC得知NFS
端口的原理是,当启动NFS服务时会随机取用数个端口,并主动的向RPC注册端口,因此
RPC知道每个端口对应的NFS功能,RPC使用的是固定端口111来监听客户端的需求并向
客户端反馈对应的端口,因此NFS启动必须在RPC相关服务之后,否则会报错。
NFS配置
主要用到的软件包nfs-utils, rpcbind
安装软件
yum install -y rpcbind nfs-utils
NFS配置文件/etc/exports 内容格式为
所要共享的文件系统 客户端选项
客户端IP,FQDN或DOMAIN,NETWORK
如要将本地/data目录共享给本地局域网其它用户,并拥有读写权限
/data 172.20.48.202(rw,sync,no_root_squash)
至此简单的服务端就配置完成
启动服务
systemctl start rpcbind nfs
客户端查询服务端共享的文件系统有哪些
showmount -e SERVER_IP
查看到共享的目录后就可以在本地挂载该共享目录
mount -t nfs SERVER_IP:/path /path/mount_point
如
mount -t nfs 172.20.48.201:/tmp /mnt
此时客户端便已经挂载好服务端的共享目录,可以进行读写操作
NFS管理和维护的命令
exportfs 可以用来维护exports文件导出的文件系统表
exportfs -ar 重新导出所有的文件系统
exportfs -au 关闭导出的所有文件系统
exportfs -u FS 关闭指定导出的文件系统
/etc/export里常用选项含义
secure 默认选项,使用1024以下的TCP/IP端口实现NFS的连接。指定insecure可以禁用
async 改进性能,即异步写入,但如果NFS进程未安全关闭就重启服务可能会导致数据丢失
与之相反的有sync,但是当写入时如果服务端未返回写入完成,客户端会一直处于等待
状态
no_wdelay 关闭写延迟。如果设置async,就会忽略此选项
nohide 将一个目录挂载到另外一个目录之上原来的目录通常就会被隐藏起来,要禁用这
种行为,就需要用hide选项
no_subtree_check 子树检查,会执行一些不想忽略的安全检查。默认是启用的
no_auth_nlm 这个选项可以作为insecure_losts指定,它告诉NFS守护进程不要对加锁
请求进行认证。如果担心安全性问题,就要避免使用这个选项。默认选项是auth_nlm
或secure_locks
mp(mountpoint=path) 通过显式地声明这个选项,NFS要求挂载所导出的目录
fsid=num 故障恢复时使用,详细的可查看帮助文档
用户映射的选项
root_squash 不允许root用户访问挂载来的NFS卷
no_root_squash 与上述相对,,允许root访问挂载的卷
all_squash 选项对于公共访问的NFS卷来说非常有用,它会限制所有的UID和GID,只使
用匿名用户。缺省设置是no_all_squash
anonuid和anongid 用来设置匿名的UID和GID修改成特定的用户和组账号
Samba
功能: 共享打印机,进行windows网络上的主机名称解析(NetBIOS name),设备分享
磁盘驱动器共享以及提供用户登录SAMBA的身份认证
原理: Samba使用的是NetBIOS通讯协议。NetBIOS即Network Basic Input/Output System
网络的基本输入输出系统,它定义了一种软件接口以及在应用程序和连接介质之间提供
通信接口的标准方法,作用是为局域网提供网络以及其它特殊功能。samba通过NetBIOS
协议来获取对方主机的NetBIOS name进而来定位该主机所在位置,然后根据对方主机
赋予的权限来存取可用的资源。实际中samba是通过两个服务来控制这两个步骤的,即nmb
和smb两个服务。其中nmb是用来管理工作组和NetBIOS name解析,主要是通过UDP的137
和138两个端口来负责名称解析任务;smb主要用来管理samba主机所分享的目录、文件或
者打印机等等,主要使用TCP协议的139和445两个端口进行数据传输
Samba安装配置
samba软件构成: samba主程序、samba-client客户端程序、samba-common其它公共程序
安装samba
yum install -y samba
rpm -ql samba 查看其生成的文件
主配置文件/etc/samba/smb.conf 配置文件中有以下设定
全局设定: 设定的参数对全局有效
特定共享的设定:有以下几个子共享设定
私有家目录
打印机共享
自定义共享
私有家目录设置
[homes] #私有家目录的名称用[]来表示
comment = Home Directories #描述信息
browseable = no #用户家目录是否允许访问,这里通常设置为no
wriable = yes #是否允许写入内容
;valid user=%S #;号表示注释
;valid users = MYDOMAIN\%S
打印机共享设置
[printers]
comment = ALL Printers
path = /var/spool/samba
browseable = no
guest ok = no
wriable = no
printable = yes
自定义共享
[shared_name]
path = /path/share_dir #共享内容路径
comment = Comment string #描述信息
guest ok = {yes|no} #是否允许访客访问
public = {yes|no} #是否公开,与guest ok类似
wriable = {yes|no} #是否可写
read only = {yes|no} #是否只读
write list = +GROUP_NAME #用户指明可写用户列表,这里+表示加组名,
#表示组里面的用户可写
检查配置文件是否有语法错误可以使用testparm命令
创建samba用户密码
这里只提到创建密码而非账号和密码,因为samba用户其实就是系统用户,即在/etc/passwd
中定义的用户,但是密码并非系统用户的密码,而是samba自己的密码文件,所以要为samba
用户创建密码,密码的创建是通过smbpasswd命令来实现的
smbpasswd
-a 添加系统用户为samba用户
-d 禁用用户
-e 启用用户
-x 删除用户
如添加系统用户admin为samba用户并为其设置密码
smbpasswd -a admin
启用samba服务
systemctl start nmb smb
samba客户端使用
windows使用连接
打开我的电脑直接输入\\IP便可连接共享
linux查看samba服务器使用smbclient命令
列出服务器所共享的信息
smbclient -L 172.20.48.201 -U admin
交互式数据访问(目录名为上条命令所查到的共享目录)
smbclient //172.20.48.201/sharedir -U admin
将目录挂载至本地
mount -t cifs -o username=admin,password=samba
//172.20.48.201/sharedir /mnt
mount.cifs -o username=admin,password=samba
//172.20.48.201/sharedir /mnt
此上两行都是一行内容,即一条命令
总结:
NFS和Samba服务都是可以在其它服务器上将其所共享的目录进行挂载
FTP服务如果想改服务器上的文件需要先将文件下载至本地更改完成后上传才能完成修改
而NFS和Samba服务不同,可以直接在服务器上修改文件,不过如果多个用户更改同一文
件是不可以的,会有锁机制来保护文件,防止文件损坏
这里所讲述的只是简单的samba的文件共享,如虚拟用户这里未使用,以及配置文件的
相关选项
转载于:https://blog.51cto.com/winthcloud/2176299