1987年,微软公司和英特尔公司共同制定了SMB(Server Messages Block,服务器消息块)协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单。到了1991年,当时还在读大学的Tridgwell为了解决Linux系统与Windows系统之间的文件共享问题,基于SMB协议开发出了SMBServer服务程序。这是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作。当时,Tridgwell想把这款软件的名字SMBServer注册成为商标,但却被商标局以SMB是没有意义的字符而拒绝了申请。后来Tridgwell不断翻看词典,突然看到一个拉丁舞蹈的名字—Samba,而且这个热情洋溢的舞蹈名字中又恰好包含了“SMB”,于是Samba服务程序的名字由此诞生。Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的最佳选择。

 

服务端配置

1.安装Samba服务程序samba

[root@localhost ~]# yum install -y samba

2.pdbedit命令创建访问共享资源的Samba账户(用户必须在本地系统中已存在)

[root@localhost ~]# id hinzer
uid=1000(hinzer) gid=1000(hinzer) groups=1000(hinzer)
[root@localhost ~]# pdbedit -a -u hinzer

3.创建用于共享的目录 /home/database,并将目录的属主和属组改成samba用户

[root@localhost ~]# mkdir /home/database
[root@localhost ~]# chown -Rf hinzer:hinzer /home/database/

4.修改文件的SELinux安全上下文,并立即生效

[root@localhost ~]# semanage fcontext -a -t samba_share_t /home/database
[root@localhost ~]# restorecon -Rv /home/database

5.设置SELinux域,允许Samba服务访问普通家目录

[root@localhost ~]# getsebool -a | grep samba
[root@localhost ~]# setsebool -P samba_enable_home_dirs=on

6.修改主配置文件

[root@localhost ~]# vim /etc/samba/smb.conf 

[global]
        workgroup = MYGROUP
        server string = Samba Server Version %v
        log file = /var/log/samba/log.%m
        max log size = 50
        security = user
        passdb backend = tdbsam

[database]
comment = haha
path = /home/database
public = no
writable = yes

 

7.重启服务并加入启动项,并清空iptables防火墙的默认策略

[root@localhost ~]# systemctl restart smb
[root@localhost ~]# systemctl enable smb
[root@localhost ~]# iptables -F
[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

 

 

客户端配置

1.安装文件共享服务的软件包cifs-utils

[root@localhost slaves]# yum install -y cifs-utils

2.编辑认证文件,并将文件权限减至600

[root@localhost ~]# vim auth.smb

username=hinzer
password=1
domain=MYGROP

[root@localhost ~]# chmod 600 auth.smb 

 

3.创建挂载目录,并使之开机自动挂载,立即生效

[root@localhost ~]# mkdir /database
[root@localhost ~]# vim /etc/fstab

//192.168.10.10/database /database cifs credentials=/root/auth.smb 0 0

[root@localhost ~]# mount -a

 

验证

这个时候就可以实现共享目录了。服务器对应的/home/database;客户端对应的是/database。

 

参考于:https://www.linuxprobe.com/chapter-12.html