当前位置: 代码迷 >> 综合 >> 文件共享服务(一)Samba
  详细解决方案

文件共享服务(一)Samba

热度:10   发布时间:2024-01-28 07:14:18.0

Samba服务介绍

简介

1987年,微软公司和英特尔公司共同制定了SMB(Server Messages Block,服务器消息块)协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单。到了1991年,Tridgwell为了解决Linux系统与Windows系统之间的文件共享问题,基于SMB协议开发出了Samba服务程序。这是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作。Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的最佳选择。

配置文件

默认路径:/etc/samba/smb.conf
默认配置项文档
配置项 作用 作用域
[global] 全局参数。
workgroup = MYGROUP 工作组名称
server string = Samba Server Version %v 服务器介绍信息,参数%v为显示SMB版本号
log file = /var/log/samba/log.%m 定义日志文件的存放位置与名称,参数%m为来访的主机名
max log size = 50 定义日志文件的最大容量为50KB
security = user 安全验证的方式,总共有4种
share:来访主机无需验证口令;比较方便,但安全性很差
user:需验证来访主机提供的口令后才可以访问;提升了安全性
server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
domain:使用域控制器进行身份验证
passdb backend = tdbsam 定义用户后台的类型,共有3种
smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码
tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
ldapsam:基于LDAP服务进行账户验证
map to guest = Bad User 映射为匿名用户进行验证
load printers = yes 设置在Samba服务启动时是否共享打印机设备
cups options = raw 打印机的选项
[homes] 共享参数
comment = Home Directories 描述信息
browseable = no 指定共享信息是否在“网上邻居”中可见
writable = yes 定义是否可以执行写入操作,与“read only”相反
[printers] 打印机共享参数
comment = All Printers
path = /var/spool/samba 共享文件的实际路径(重要)。
browseable = no
guest ok = no 是否所有人可见,等同于"public"参数。
writable = no
printable = yes

服务相关命令

smbpasswd
参数 作用
-a 添加一个samba用户
-d 禁用一个samba用户
-e 恢复一个samba用户
-x 删除一个samba用户
pdbedit
参数 作用
-a 用户名 建立Samba用户
-x 用户名 删除Samba用户
-L 列出用户列表
-Lv 列出用户详细信息的列表

无论是smbpasswd还是pdbedit,创建samba用户前,该用户均需存在于当前系统

配置实例

实例一:通过SMB共享目录

共享目录: /common
拥有读写权限,不需验证
配置为仅允许本域内的客户端进行访问

配置服务

# vim /etc/samba/smb.conf
[global]
map to guest = Bad User  # 添加该配置项,启用匿名访问
[common]
path = /common
browseable = yes
writable = yes
public = yes
hosts allow = 192.168.10.
# systemctl restart smb

配置安全规则

# iptables -F
# firewall-cmd --permanent --add-service=samba
# firewall-cmd --permanent --add-service=mountd
# firewall-cmd --reload
# semanage 0

验证

# smbclient -L //192.168.10.10 #直接敲击回车即可
# mkdir /common.smb
# mount -t cifs //192.168.10.10/common /common.smb #直接敲击回车即可

实例二:配置SMB多用户验证

共享目录:/security
用户lisi仅拥有读的权限,验证密码为passwd
用户wangwuj拥有读写的权限,验证密码为password

配置服务

# mkdir /security
# vim /etc/samba/smb.conf
[security]
path = /security
browseable = yes
public = yes
writable = no 
write list = wangwu
# smbpasswd -a lisi # 为lisi设置密码
# smbpasswd -a wangwu # 为wangwu设置密码

配置安全规则

# setfacl -Rm u:wangwu:rwx /security
# iptables -F
# firewall-cmd --permanent --add-service=samba
# firewall-cmd --permanent --add-service=mountd
# firewall-cmd --reload
# semanage 0

验证

# smbclient -L //192.168.10.10 -U lisi # 输入密码验证
# smbclient -L //192.168.10.10 -U wangwu # 输入密码验证
# vim /etc/fstab
//192.168.10.10/security /security cifs defaults,multiuser,username=wangwu,password=password,sec=ntlmssp 0 0
# mount -a
# echo "hello" > /security/newfile

参考链接

  • SAMBA文件共享服务
  • Samba启动服务中的nmb是什么
  • Samba服务器搭建,匿名访问,用户密码访问
  • Samba服务配置详解(匿名,身份,别名,访问控制,挂载访问)
  相关解决方案