SAMBA文件共享服务
Samba 是一款开源的文件共享软件,经过简单配置就能实现Linux系统与Windows系统之间的文件共享工作
安装Samba服务程序:yum install -y samba
Samba服务的主要配置文件:/etc/samba/smb.conf
例1:配置Samba服务前,先删掉Samba服务主配置文件中的注释和空行
通过grep命令,添加-v参数(反向选择),分别去掉所有以井号(#)和分号(;)开头的注释信息行,对于剩余的空白行可以使用^$参数来表示并进行反选过滤,最后把过滤后的可用参数信息通过重定向符覆盖写入到原始文件名称中。
Samba服务程序中的参数以及作用
[global] | - | #全局参数 |
---|---|---|
- | workgroup = MYGROUP | #工作组名称 |
- | server string = Samba Server Version %v | #服务器介绍信息,参数%v为显示SMB版本号 |
- | log file = /var/log/samba/log.%m | #定义日志文件的存放位置与名称,参数%m为来访的主机名 |
- | max log size = 50 | #定义日志文件的最大容量为50KB |
- | securiey = user | #安全验证的方式,总共有4种 |
- | #share:来访主机无需验证口令;比较方便,但安全性很差 | |
- | #user:需验证来访主机提供的口令后才可以访问;提升了安全性 | |
- | #server:使用独立的远程主机验证来访主机提供的口令(集中管理账户) | |
- | #domain:使用域控制器进行身份验证 | |
- | passbd backend = tdbsam | #定义用户后台的类型,共有3种 |
- | #smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码 | |
- | #tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户 | |
- | #ldapsam:基于LDAP服务进行账户验证 | |
- | load printers = yes | #设置在Samba服务启动时是否共享打印机设备 |
- | cups options = raw | #打印机的选项 |
[homes] | - | #共享参数 |
- | comment = Home Directories | #描述信息 |
- | browseable = no | #指定共享信息是否在“网上邻居”中可见 |
- | writabe = yes | #定义是否可以执行写入操作,与“read only”相反 |
[printers] | - | #打印机共享参数 |
- | comment = All Printers | |
- | path = /var/spool/samba | #共享文件的实际路径(重要) |
- | browseable = no | |
- | guest ok = no | #是否所有人可见,等同于"public"参数 |
- | writable = no | |
- | printable = yes |
配置共享资源
Samba服务程序的主配置文件与Apache服务很相似,包括全局配置参数和区域配置参数。全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资源都有效。区域配置参数则用于设置单独的共享资源,且仅对该资源有效。创建共享资源的方法很简单,只要将下表中的参数写入到Samba服务程序的主配置文件中,然后重启该服务即可。
用于设置Samba服务程序的参数以及作用
参数 | 作用 |
---|---|
[database] | 共享名称为database |
comment=Do not arbitrarily modify the database file | 警告用户不要随意修改数据库 |
path = /home/database | 共享目录为/home/database |
public = no | 关闭“所有人可见” |
writable = yes | 允许写入操作 |
pdbedit命令:管理SMB服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”
pdbedit参数:
参数 | 作用 |
---|---|
-a用户名 | 建立Samba用户 |
-x用户名 | 删除Samba用户 |
-L | 列出用户列表 |
-Lv | 列出用户详细信息列表 |
例2:在例1基础上,配置samba服务共享文件夹
Windows挂载共享
无论Samba共享服务是部署Windows系统上还是部署在Linux系统上,通过Windows系统进行访问时,其步骤和方法都是一样的。下面假设Samba共享服务部署在Linux系统上,并通过Windows系统来访问Samba服务。Samba共享服务器和Windows客户端的IP地址可以根据下表来设置。
主机名称 | 操作系统 | IP地址 |
---|---|---|
Samba共享服务器 | RHEL 7 | 192.168.10.10 |
Linux客户端 | RHEL 7 | 192.168.10.20 |
Windows客户端 | Windows 7 | 192.168.10.30 |
在Windows的“运行”命令框中输入两个反斜杠,然后再加服务器的IP地址即可,如图所示
Linux挂载共享
Samba服务程序还可以实现Linux系统之间的文件共享
Samba共享服务器和Linux客户端各自使用的操作系统以及IP地址
主机名称 | 操作系统 | IP地址 |
---|---|---|
Samba共享服务器 | RHEL 7 | 192.168.10.10 |
Linux客户端 | RHEL 7 | 192.168.10.20 |
Windows客户端 | Windows 7 | 192.168.10.30 |
inux客户端需要安装支持文件共享服务的软件包:yum install -y cifs-utils
例3:在例2基础上,实现Linux客户端挂载Samba服务的共享文件夹
客户端进入到挂载目录/muzi后就可以对目录里的文件进行增删改操作了。
NFS网络文件系统
如果觉得Samba服务程序的配置太麻烦,而且恰巧需要共享文件的主机都是Linux系统,非常推荐在客户端部署NFS服务来共享文件。NFS(网络文件系统)服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件。
RHEL 7系统中默认已经安装了NFS服务,安装nfs:yum install -y nfs-utils
NFS服务程序的配置文件为/etc/exports,默认情况下里面没有任何内容。可以按照“共享目录的路径 允许访问的NFS客户端(共享权限参数)”的格式,定义要共享的目录与相应的权限。
用于配置NFS服务程序配置文件的参数
参数 | 作用 |
---|---|
ro | 只读 |
rw | 读写 |
root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 |
no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 |
all_squash | 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 |
sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 |
async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 |
注意:NFS客户端地址与权限之间没有空格