Linux中Samba服务配置与使用指南
Linux中Samba服务配置与使用指南
一、Samba服务核心组件
进程 | 功能描述 | 端口 |
---|---|---|
smbd | 管理共享目录/打印机、认证、SMB资源共享 | 139, 445 |
nmbd | NetBIOS域名解析、共享资源浏览服务 | 137, 138 |
二、Samba工作原理
- 连接请求
客户端发送协议版本请求 → 服务器验证请求有效性(失败则终止连接)。 - 协议协商
服务器返回支持的协议版本和端口信息。 - 认证阶段
客户端提交认证信息 → 服务器验证(失败则终止连接)。 - 资源访问
认证成功后,客户端通过命令访问共享资源。
三、独立服务器选项
1. security 认证模式
参数值 | 描述 |
---|---|
user | 使用Samba自有数据库验证用户身份 |
share | 无需密码,任何人可直接访问共享资源 |
server | 由其他SMB服务器代理验证(已弃用) |
2. passdb backend 用户数据库类型
参数值 | 描述 | 存储位置 |
---|---|---|
tdbsam | 使用数据库文件 passdb.tdp | /etc/samba/passdb.tdb |
ldapsam | 使用LDAP方式进行验证 | 外部LDAP服务器 |
smbpasswd | 使用 smbpasswd 为系统用户设置samba密码 | /etc/samba/smbpasswd |
四、共享目录设置常见参数
参数名 | 描述 | 可选值 | 默认值 | 使用示例/说明 |
---|---|---|---|---|
comment | 共享描述信息 | 任意字符串 | 无 | comment = this is a directory |
path | 定义具体的共享目录 | 共享目录的绝对路径 | 无 | 必填项:path = /smbshare |
browseable | 是否可以浏览 | yes / no | yes | browseable = no (隐藏共享) |
read only | 共享权限是否只读 | yes / no | yes | 与writable 冲突,优先级低于writable |
writable | 共享权限是否可写 | yes / no | no | writable = yes (开启写权限) |
write list | 具体读写共享权限的用户列表 | 用户或组名 | 空 | write list = username1, @groupname1 |
guest ok | 是否允许匿名 | yes / no | no | guest ok = yes |
valid users | 可以访问共享的samba用户列表 | 用户或组名 | 所有用户 | valid users = username2, @groupname2 |
public | 是否为公共共享 | yes / no | no | public = yes |
五、Samba服务部署流程
1、Samba服务器端
前提:
- 已经配置好本地的 yum 仓库
- 已经禁用 firewall(防火墙)
- 已经禁用 selinux
-
下载软件包(samba,samba-client):
yum -y install samba samba-client # 下载 samba samba-client
-
创建共享目录和测试文件:
mkdir /smbshare # 创建共享目录touch /smbshare/file1 # 在共享目录下创建测试用文件 touch /smbshare/file2
-
创建并设置为samba用户:
将用户设置为不可登录状态,防止系统用户直接登录系统或通过ssh登录系统
useradd -s /sbin/nologin rose # 创建用户,设置为不可登录状态 useradd -s /sbin/nologin marrysmbpasswd -a rose # 设置 samba 用户 smbpasswd -a marrypdbedit -L # 查看 samba 用户
-
设置用户权限:
setfacl -m u:rose:r-x /smbshare/ # 设置用户 rose 对 /smbshare 的权限为读,执行 setfacl -m u:marry:rwx /smbshare/ # 设置用户 marry 对 smbshare 的权限为读写,执行
注意:应当要保证samba用户的访问权限和服务设置的权限一致
保证用户访问权限与服务设置权限一致,是系统安全和稳定运行的核心原则
-
编辑配置文件(/etc/samba/smb.conf):
vim /etc/samba/smb.conf # 编辑配置文件[myshare] # 名称,可自定义path = /smbshare # 路径browseable = yes # 可以浏览valid users = rose,marry # 可访问用户列表write list = marry # 可读写用户列表systemctl restart smb nmb # 重启服务 systemctl enable smb nmb # 下次开机自启
2、Samba客户端使用
samba对应的文件系统:
cd /usr/lib/modules/3.10.0-957.el7.x86_64/kernel/fs/cifs/
-
下载软件包(samba-client cifs-utils):
yum -y install samba-client cifs-utils # 下载 samba-client cifs-utils
-
匿名用户浏览 samba 服务器共享资源列表:
smbclient -L 192.168.100.10 # 匿名访问,直接回车,不需要输入密码
-
匿名用户浏览 samba 服务器共享资源(无法访问):
smbclient //192.168.100.10/myshare # 匿名用户不需要密码
-
samba 用户 rose(只读)浏览 samba 服务器共享资源:
smbclient //192.168.100.10/myshare -U rose # 输入 rose 的密码,只读权限
-
samba 用户 marry(读写)浏览 samba 服务器共享资源:
smbclient //192.168.100.10/myshare -U marry # 输入 marry 密码,读写权限
-
将samba服务器共享资源临时挂载到本地目录:
mount -t cifs -o username=marry //192.168.100.10/myshare /smbmount/ # 交互式挂载mount -t cifs -o username=marry,password=marry,sec=ntlmssp //192.168.100.10/myshare /smbmount/ # 非交互式挂载
注意:重新挂载前,先使用
umonut
命令卸载挂载 -
将samba服务器共享资源永久挂载到本地目录:
vim /etc/fstab # 编辑配置文件//192.168.100.10/myshare /smbmount cifs username=rose,password=rose,sec=ntlmssp 0 0# 路径 挂载路径 类型 用户名,密码,安全认证选项 0 0mount -a # 根据配置文件自动挂载所有文件系统
-
将samba服务器共享资源永久挂载到本地目录,多用户挂载:
vim /etc/fstab # 编辑配置文件//192.168.100.10/myshare /smbmount cifs multiuser,username=rose,password=rose,sec=ntlmssp 0 0# 路径 挂载路径 类型 多用户挂载选项,用户名,密码,安全认证选项 0 0mount -a # 根据配置文件自动挂载所有文件系统
-
普通用户临时切换Samba权限:
su - yanyvhang # 切换用户为 yanyvhang cifscreds add 192.168.100.10 -u marry # 使用 marry 凭证
普通用户 yanyvhang 使用
cifscreds
命令向 samba 服务器提交 samba 用户 marry 的凭证
此时普通用户 yanyvhang 临时具有 samba 用户 marry 的权限,实现其对 myshare 共享具有 marry 的读写权限