1 引言
SAMBA 是一个实现不同操作系统之间文件共享和打印机共享的一种 SMB 协议的免费软件。
SMB(Server Message block)协议是 window 下所使用的文件共享协议,我们在 linux 系统或 者其类 unix 系统当中可以通过 samba 服务来实现 SMB 功能。
- samba相关服务
1.smbd
提供 samba 核心功能、文件及打印共享服务功能,使用 139、445 端口 2.nmbd
提供 Netbios 支持(类似于 DNS,解析各主机的 Netbios 名),使用 137、138 端口
- samba安全级别
从低到高分别为:share,user,server 它们对应的验证方式如下:
1.share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。
2.user:samba 的默认配置,要求用户在访问共享资源之前资源必须先提供用户名和密码进 行验证。
3.server:与 user 安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递 交给一台 NT 服务器。如果递交失败,就退到 user 安全级。
- Samba 配置文件
配置文件位于/etc/samba/smb.conf,其中关键项目有
1.[global]
定义全局性配置
2.workgroup
用于指定工作组
3.security
用于指定 Samba 的安全级别
4.passdb backend
指定验证 samba 用户的数据库
5.path
用于指定共享目录路径
6.write list
用于指定可写的用户及用户组
- smbpasswd 命令
该命令属于 Samba 套件,能够实现添加或删除 samba 用户及为用户修改密码。常用参数 有:
1.-a
向 smbpasswd 文件中添加用户
2.-x
从 smbpasswd 文件中删除用户
- Samba 多用户挂载
Samba 客户端的 multiuser 挂载:支持切换访问 Samba 共享的用户身份,但不需要重新挂载共享资源。挂载参数需要添加“multiuser,sec=ntlmssp (NT LAN Manager Security Support Provider,是微软 Windows NT 早期版本的标准安全协议) ”,客户机上的普通用户可以通过 cifscreds 命令提交新的身份凭据。
2 提供SMB文件共享
- 1.环境
计算机rehhat7.6:client 和 server
- 2.配置 server 为 SMB 服务器
1)安装 samba
yum install -y samba
2)创建辅助系统组 marketing groupadd -r marketing
3)创建共享目录
mkdir -p /smbshare
4)修改共享目录属组及权限
chgrp marketing /smbshare chmod 2775 /smbshare
5)设置共享目录标签
semanage fcontext -a -t samba_share_t ‘/smbshare(/.*)?’
6)对共享目录应用 SELinux 规则
restorecon -vvFR /smbshare
7)修改 samba 配置文件
vim /etc/samba/smb.conf
修改确认以下内容:
[global]
89:workgroup = mycompany 123:security = user 124:passdb backend = tdbsam 在文件按末尾追加: [smbshare]
path = /smbshare
write list = @marketing
8)安装 samba-client 软件包以获取 smbpasswd
yum install -y samba-client
9)为 marketing 组创建组内成员 brian
useradd -s /sbin/nologin -G marketing brian
10)向 Samba 添加 SMB 用户 brian
smbpasswd -a brian 注:密码设置为 redhat
11)创建用户 rob
useradd -s /sbin/nologin rob
12)向 Samba 中添加 SMB 用户 rob
smbpasswd -a rob
注:密码设置为 redhat
13)启动 smb 及 nmb 服务并设置防火墙允许服务被访问
systemctl enable smb nmb
systemctl start smb nmb
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
- 3.配置 client 为 Samba 客户端
1)安装客户端软件
yum install cifs-utils -y
2)创建 brian 用户的挂载点
mkdir /mnt/brian
3)以 brian 用户的身份临时挂载 Samba 服务器上的共享目录
mount -o username=brian //server/smbshare /mnt/brian 注:密码为 redhat
4)测试 brian 用户是否对共享目录具有写权限
echo “Hello World” > /mnt/brian/brian1.txt
cat /mnt/brian/brian1.txt 注:可写
5)创建 rob 用户的挂载点 mkdir /mnt/rob
6)以 rob 用户的身份临时挂载共享目录
mount -o username=rob //server/smbshare /mnt/rob
注:密码为 redhat
7)测试 rob 是否对共享目录具有写权限
touch /mnt/rob/rob1.txt 注:提示由于权限不足无法创建文件
3 SMB 多用户挂载
- 1.环境
计算机:client 和 server
- 2.在 client 上配置多用户挂载
1)安装客户端软件
yum install -y cifs-utils
2)创建挂载点/mnt/multiuser
mkdir /mnt/multiuser
3)创建 brian 用户的用户名和密码凭证文件
echo ‘username=brian’ >> /root/smb-multiuser.txt
echo ‘password=redhat’ >> /root/smb-multiuser.txt
4)在/etc/fstab 中创建一个条目,以 brian 身份永久挂载共享目录
echo ‘//server0/smbshare /mnt/multiuser cifs credentials=/root/smb-multiuser.txt,multiuser,sec=ntlmssp 0 0’ >> /etc/fstab
5)测试是否能够挂载
mount /mnt/multiuser
6)切换到用户 brian
su - brian
7)在 client 上,以 brian 用户的身份写入到/mnt/multiuser 挂载点
touch /mnt/multiuser/testfile.txt 注:显示没有权限创建文件
8)使用 cifscreds 命令记录 brian 的 Samba 凭据
cifscreds add server0
注:密码为 redhat
9)再次验证 brian 用户是否对共享目录具有读写权限
echo “Multiuser” > /mnt/multiuser/brian2.txt
cat /mnt/multiuser/brian2.txt 内容为:Multiuser
10)退出 brian 用户,切换至 rob 用户
exit
su - rob
11)使用 cifscreds 记录 rob 用户的 Samba 凭据
cifscreds add server
注:密码为 redhat
12)验证用户 rob 是否对共享目录具有读权限但没有写权限
echo ‘Multiuser’ > /mnt/multiuser/rob2.txt 注:提示没有权限创建文件
cat /mnt/multiuser/brian2.txt 注:可以查看文件内容
退出 rob 登录
exit