linux网络文件共享服务 - Samba详解
目录一、samba简介二、Samba组成三、服务端smb.conf配置说明四、搭建samba共享服务1、关闭防火墙关闭selunix2、安装 Samba3、创建 Samba 用户4、创建共享目录5、启动 Samba 服务6、添加防火墙规则一、samba简介Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件而SMB是Server Message Block的缩写即为服务器消息块SMB主要是作为Microsoft的网络通讯协议后来Samba将SMB通信协议应用到了Linux系统上就形成了现在的Samba软件。后来微软又把 SMB 改名为 CIFSCommon Internet File System即公共 Internet 文件系统并且加入了许多新的功能这样一来使得Samba具有了更强大的功能。Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享Samba既可以用于windows与Linux之间的文件共享也可以用于Linux与Linux之间的资源共享由于NFS(网络文件系统可以很好的完成Linux与Linux之间的数据共享因而 Samba较多的用在了Linux与windows之间的数据共享上面。使用samba和windows共享文件时候请确保windows的NetBIOS(就是网上邻居功能)开启了。二、Samba组成一个samba服务器实际上包含了两个服务器程序smbd和nmbd。Smbd是samba的核心。它负责建立对话进程、验证用户身份、提供对文件系统和打印机的访问机制只有smb服务启动才能实现文件的共享。【TCP445】Nmbd实现了“Network Brower”网络浏览服务器的功能实现NETBIOS(本地名称解析)功能【UDP137/138TCP139】如果该服务没有启动则客户端不能通过Linux系统共享的工作组名称访问共享文件而只能通过IP地址来访问共享的文件。[rootsftp-paas samba]# netstat -tnlp |grep mbtcp 0 0 0.0.0.0:139 0.0.0.0:*LISTEN 10764/smbd tcp 0 0 0.0.0.0:445 0.0.0.0:*LISTEN 10764/smbd tcp6 0 0 :::139 :::*LISTEN 10764/smbd tcp6 0 0 :::445 :::*LISTEN 10764/smbdSamba还包含了一些实用工具。Smbclient是一个SMB客户工具有shell-based用户界面并同FTP有些类似。应用它可以复制其它的SMB服务器资源还可以访问其它SMB服务器提供的打印机资源。三、服务端smb.conf配置说明[roothejie ~]# cat /etc/samba/smb.conf[global]//全局参数 workgroup SAMBA//工作组名称 非常重要 security user//安全验证方式总共四种//share无需验证身份简单方便安全性差//user需要验证用户密码才可以访问安全性高//server需要通过三方服务器验证账号密码集中管理账户//domain使用域控制器进行身份验证 passdb backend tdbsam//定义用户后台的类型共有三种//smbpasswd为系统用户设置Samba服务程序的密码//tdbsam创建数据库文件并使用pdbedit命令建立Samba服务程序的用户//ldapsam基于LDAP服务进行账户验证 printing cups//设置Samba共享打印机的类型 printcap name cups//设置共享打印机的配置文件 load printers yes//设置在Samba服务启动时是否共享打印机设备 cups options raw//打印机的选项[homes]//共享参数 comment Home Directories//描述信息 valid users %S,%D%w%S//允许访问该共享的用户 browseable No//指定共享信息是否可见 read only No inherit acls Yes[printers]comment All Printers//任意字符串 path /var/tmp//共享目录路径 printable Yes create mask 0600 browseable No//指定该共享是否可以浏览[print$]comment Printer Drivers path /var/lib/samba/driverswritelist root//允许写入该共享的用户 create mask 0664 directory mask 0775四、搭建samba共享服务1、关闭防火墙关闭selunix[roothejie ~]# setenforce 0[roothejie ~]# systemctl stop firewalld2、安装 Samba软件安装sudo yum install samba-y编辑 Samba 配置文件使用文本编辑器打开 Samba 配置文件 /etc/samba/smb.confsudo vim/etc/samba/smb.conf#添加共享定义在文件的末尾添加共享定义。以下是一个示例共享定义的模板[share]comment Shared Folder path /path/to/shared/folder browseable yes read only no valid users usernameshare 是共享的名称您可以根据自己的需求进行更改。 comment 是对共享的描述可以根据需要进行修改。 path 是要共享的文件夹的路径请将 /path/to/shared/folder 替换为实际的文件夹路径。 browseable 设置为 yes 可以在网络上浏览该共享文件夹。 read only 设置为 no 允许用户对共享文件夹进行读写操作。 valid users 指定允许访问该共享的用户名多个用户可以用逗号分隔。 生产环境示例 [lansensddi] comment Share Files path /home/sftp/lansen/sddi valid users lansensddi public No writable Yes browseable Yes保存并关闭文件在完成编辑后保存并关闭文件。3、创建 Samba 用户为了允许用户访问 Samba 共享需要创建相应的 Samba 用户。使用以下命令创建一个新的 Samba 用户sudo useradd-s/sbin/nologin-M username sudo smbpasswd-a username将 “username” 替换为要创建的 Samba 用户的实际用户名并设置相应的密码。4、创建共享目录mkdir-p/home/sftp/lansen/sddi5、启动 Samba 服务启动 Samba 服务以使配置生效。使用以下命令启动 Samba 服务sudo systemctlstartsmb6、添加防火墙规则如果 CentOS 7 上正在运行防火墙如 firewalld请确保允许 Samba 服务通过防火墙。使用以下命令添加相应的防火墙规则sudo firewall-cmd--permanent--add-servicesamba sudo firewall-cmd--reload至此您已成功在 CentOS 7 上配置了 Samba 共享文件夹。其他计算机上的用户可以通过网络浏览并访问共享的文件夹。请确保在实际的共享路径上设置适当的权限以便允许 Samba 用户进行读写操作。