1987年,微软公司和英特尔公司共同制定了SMB(Server Messages Block,服务器消息块)协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单。到了1991年,当时还在读大学的Tridgwell为了解决Linux系统与Windows系统之间的文件共享问题,基于SMB协议开发出了SMBServer服务程序。这是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作。当时,Tridgwell想把这款软件的名字SMBServer注册成为商标,但却被商标局以SMB是没有意义的字符而拒绝了申请。后来Tridgwell不断翻看词典,突然看到一个拉丁舞蹈的名字—Samba,而且这个热情洋溢的舞蹈名字中又恰好包含了“SMB”,于是Samba服务程序的名字由此诞生(见图12-1)。Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的最佳选择。
smb(samba):用于linux和windows之间的文件共享,可以实现匿名用户和本地用户之间的文件共享
工作原理:
- smb进程 控制发布共享目录与权限 tcp 139 445
- nmb进程 主要用于名称解析 udp 137 138
软件包及配置文件了解
- 软件包
[root@centos7-1 ~]# rpm -aq |grep samba //6系统上查看 samba-winbind-clients-3.6.9-164.el6.x86_64 客户端工具 samba-3.6.9-164.el6.x86_64 服务端 samba-client-3.6.9-164.el6.x86_64 客户端工具 samba4-libs-4.0.0-58.el6.rc4.x86_64 库文件 samba-common-3.6.9-164.el6.x86_64 工具包 samba-winbind-3.6.9-164.el6.x86_64 客户端工具
- 配置文件
[root@courtoap ~]# rpm -ql samba |grep etc // 6系统 /etc/logrotate.d/samba 日志轮转文件 /etc/pam.d/samba 验证机制 /etc/rc.d/init.d/nmb 启动脚本 /etc/rc.d/init.d/smb /etc/samba/smbusers 用户别名文件 [root@centos7-1 ~]# rpm -ql samba |grep etc // 7系统 /etc/openldap/schema /etc/openldap/schema/samba.schema /etc/pam.d/samba
- 二进制命令
/usr/sbin/nmbd /usr/sbin/smbd[root@centos7-1 ~]# rpm -ql samba-common /etc/samba 主目录 /etc/samba/smb.conf 主配置文件 /usr/bin/pdbedit 查看smb数据库用户 /usr/bin/smbpasswd 设置用户密码 /usr/bin/testparm 检测语法
- 了解主配置文件
cat /etc/samba/smb.conf |grep -v ^#|grep -v '^;'|grep [a-z]
[root@centos7-1 ~]# cat /etc/samba/smb.conf |grep -v ^#|grep -v '^;'|grep [a-z] [global] workgroup = SAMBA security = user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes 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/drivers write list = @printadmin root force group = @printadmin create mask = 0664 directory mask = 0775