Samba是LInux和UNIX系统实现SMB协议的一个免费软件,由服务器和客户端程序构成。SMB(Server Messages Block,信息服务块),是一种在局域网共享文件和打印机的一种通信协议,为局域网内不同计算机之间提供文件及打印机等资源的共享服务。
Samba由smbd和nmbd(对客户端提供NetBIOS名服务)两个主要程序组成,两个守护进程在服务启动到停止器件持续运行,功能各异。smbd和nmbd使用的全部配置信息全都保存在smb.conf文件中,配置smb.conf可决定smbd和nmbd两个守护进程的共享信息。
Samba提供基于CIDS的四个服务:文件和打印服务、授权与被授权、名字解析、浏览服务。前两项服务由smbd提供(最重要的功能,Samba大部分核心功能),后两项服务则由nmbd提供。
smbd进程提供了Samba的大部分核心功能。其主要职责:1.提供文件和打印机共享(最重要的Samba职责),2.验证用户,3.提供时间服务。默认情况下,smbd守护程序绑定到TCP端口139和445,SMB协议通过TCP上的NeTBIOS使用端口139,这是许多旧客户端使用SMB/CIFS的方式。端口445在TCP服务上提供简单的SMB,是访问Samba服务器的新客户端数。由于这些职责的关键性质(尤其是,提供文件和打印机共享及验证),smbd可视为Samba的核心。
nmbd进程使主机(工作站)能浏览LInux服务器,此服务主要处理名称相关的任务。其主要职责:1.对名称广播进行响应,2.注册NetBIOS名称(NBNS:又名Windows Internet名称服务,Windows Internet Name Service[WINS]服务器),3.作为NBNS服务器运作,4.作为主浏览器运作。大多数nmbd功能需要将其绑定到TCP端口137,但主浏览器职责涉及用户数据报协议(User Datagram Protocol)端口138。虽然说nmbd不涉及提供文件或打印机,但是许多任务都是任何SMB/CIFS服务器的重要部分,因为nmbd被认为Samba重要部分。它通常通过分布的启动脚本与smbd一起运行。
虚拟系统:Ubuntu 16.04 LTS
方法和步骤:
1.安装Samba服务
$ sudo apt-get install samba # 或su 使用root用户权限 安装:samba&smbfs

检查Samba版本信息(以下两条命令都可以):
1 $ sudo smbstatus 2 $ sudo smbd --version # sudo nmbd --version 均可
检查Samba服务是否正在运行:
1 $ systemctl status smbd 2 $ systemctl status nmbd
启动smbd和nmbd两个守护进程:
1 $ sudo systemctl start smbd 2 $ sudo systemctl start nmbd
开始运行后,smbs服务奖在139和445端口上侦听了。
停止smbd和nmbd两个守护进程:
1 $ sudo systemctl stop smbd 2 $ sudo systemctl stop nmbd
2.创建共享文件夹(共享文件目录为已存在情况下,请忽略此步骤)
PS:此步骤在<Ubuntu16.04搭建NFS文件共享服务器的方法>有介绍,Samba服务也是共享/sharedfile文件夹
1 $ sudo mkdir /sharedfile # 创建你要共享的目录(共享文件夹,因为我在根目录创建sharedfile目录,所以需要使用root权限) 2 $ sudo chmod 777 /sharedfile # 我将该目录权限全部开放(根据个人需求配置权限) 3 $ ls -l / # 查看sharedfile共享目录和权限
3.修改配置文件,添加自己配置的内容
$ sudo vi /etc/samba/smb.conf
在[全局][global]部分,确保工作组的值与Windows计算机的工作组设置相同。

在/etc/samba/smb.conf文件末尾添加以下内容:
1 [Home Share] #Windows显示文件夹名 2 comment = Home Public Folder 3 path = /sharedfile #指定共享目录路径 4 writable = yes 5 valid users = SambaUser #指定有效用户可以访问,添加多个用户 valid users = user1,user2,user3
$ testparm #运行此命令检查Samba配置是否存在语法错误
4.创建用户账户
默认情况下,Samba将用户设置为安全模式,客户端访问共享文件夹必须输入用户名和密码。
添加用户:
$ sudo adduser SambaUser #用户指定有效用户可以访问,若用户已存在登录,会提示该用户已存在
给用户设定访问密码:
$ sudo smbpasswd -a SambaUser #给该用户设定访问密码,
重启smbd和nmbd守护进程:
1 $ sudo systemctl restart smbd 2 $ sudo systemctl restart nmbd
5.设置开机自启动
"/etc/rc.local"和"/etc/init.d/rcS" 等可被linux调用的文件添加以下任一命令
1 systemctl start smbd 2 /etc/init.d/samba start
6.从Windows访问Samba共享文件夹
在同一网络的Windows计算机上(处连通状态),打开文件浏览器,在输入"\\192.168.1.118"(你在该网络下的IP地址),就可以看到了,输入配置的用户名和密码就可以访问了。


浙公网安备 33010602011771号