Samba介绍
Samba是一套使用SMB(Server Message Block)协议的应用程序, 通过支持这个协议, Samba允许Linux服务器与Windows系统之间进行通信,使跨平台的互访成为可能。Samba采用C/S模式, 其工作机制是让NetBIOS( Windows 网上邻居的通信协议)和SMB两个协议运行于TCP/IP通信协议之上,并且用NetBEUI协议让Windows在“网上邻居”中能浏览Linux服务器。
samba服务器可实现如下功能:WINS和DNS服务; 网络浏览服务; Linux和Windows域之间的认证和授权; UNICODE字符集和域名映射;满足CIFS协议的UNIX共享等。 samba的主要目的就是用来沟通Windows与Unix这两种不同的作业平台。
环境说明
Samba服务器 | centos7.9(其他版本也可以) |
---|---|
需要软件 | samba |
客户端 | win11(win10都可以)、linux(centos、Ubuntu都可以) |
安装Samba
安装步骤特别简单,执行一条命令即可,步骤如下:
第一步:安装samba服务
yum install samba
第二步:启动samba服务
systemctl start smb
查看samba的状态
systemctl status smb
看到Active就说明在运行中了
配置Samba
配置Samba这个就非常有意思了,要想发挥Samba的强大功能,建议看一下详细配置说明。本文侧重使用功能,详细介绍请看:https://blog.csdn.net/doushi/article/details/126613187,Samba配置文件详解
关闭防火墙
不想关闭防火墙,请将Samba端口加入防火墙白名单。
systemctl stop firewalld.service //停止服务
systemctl disable firewalld.service //关闭开机启动
以下是加入防火墙开放Samba端口,执行上面操作可以忽略
firewall-cmd --zone=public --add-port=139/tcp --permanent
firewall-cmd --zone=public --add-port=445/tcp --permanent
firewall-cmd --zone=public --add-port=137/udp --permanent
firewall-cmd --zone=public --add-port=138/udp --permanent
firewall-cmd --reload
systemctl restart firewalld.service
关闭selinux
注意,这个步骤不执行,那么windows在连接Samba时会出现无法打开文件夹,提示权限问题(实际不是权限,这点很坑)
临时关闭
setenforce 0
永久关闭
vi /etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。
修改Samba配置
废话不多说,直接把最简单的配置粘贴上
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = WORKGROUP #这个修改过,实际使用默认值也能正常
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[share]
comment = Share Directories
path = /home/smb/share # 这个文件目录一定要给Samba对应的用户权限,不放心可设置777权限
public = yes
writable = yes
browseable = yes
create mask = 0644
directory mask = 0775
添加Samba用户,即客户端连接需要用户名+密码才可
第1步:需要添加一个linux系统级用户来管理,可以使用已有用户(非root),也可以新建用户
useradd smb //添加用户
passwd smb //修改密码(linux系统的用密码,可以不设置,然后禁止该用户登录)
设置samba用户的连接密码(这一步很重要,必须要执行,这是后期客户端连接时需要输入的密码)
smbpasswd -a smb # 给smb用户设置连接密码,命令回车后需要键盘输入密码,记住密码否则后期连不上。
第2步:设置共享目录,文件权限
chown -R smb:smb #这个步骤可以先不执行,后期若出现权限问题,在执行也可以
第3步:重启samba服务
systemctl restart smb
Windows挂载Samba共享文件
Win + R快捷键打开命令输入框,输入
\\samba服务器IP,如
\\10.1.203.36
可以映射为磁盘,以后开机就自动连接了,相当于一个外挂的共享磁盘。
Linux挂载Samba共享文件
首先我们需要在centos7上安装一个samba客户端程序
yum install -y cifs-utils
在客户端服务器,创建一个挂载点
mkdir /data
执行挂载命令
mount -t cifs -o username=“username”,password=“your password” //samba服务器域名或者samba服务器IP/共享名/ /挂载点
翻译一下:
mount -t cifs -o username="你的samba用户名",password="你的密码" //IP地址/share /挂载到本地服务器目录
其他
设置Samba服务为开机自启动
systemctl enable smb
开启Samba服务
systemctl start smb
关闭Samba服务
systemctl stop smb
查看Samba服务器状态
systemctl status smb
windows服务器映射为本地磁盘后,开机自动连接(前提:网络正常)
linux客户端若想开机自动挂载Samba服务,则需要将命令添加到开机自启动脚本。
centos开机自动挂载Samba
方法一:
通过追加fstab文件的方式自动挂载
vim /etc/fstab
增加以下内容
//10.1.203.36/share /webdir/samba cifs defaults,username='username',password='your password' 0 0
共享路径 挂载点 文件类型 挂载参数(共享的认证账号和认证账号的密码等参数)
方法二:
通过开机自动加载rc.local的方式自动挂载
echo "mount -t cifs //10.1.203.36/share/ /webdir/samba -o username='uaername',password='your password'" >> /etc/rc.local
查看挂载情况
df -Th