1 引言

SAMBA 是一个实现不同操作系统之间文件共享和打印机共享的一种 SMB 协议的免费软件。
SMB(Server Message block)协议是 window 下所使用的文件共享协议,我们在 linux 系统或 者其类 unix 系统当中可以通过 samba 服务来实现 SMB 功能。


1.smbd
提供 samba 核心功能、文件及打印共享服务功能,使用 139、445 端口 2.nmbd
提供 Netbios 支持(类似于 DNS,解析各主机的 Netbios 名),使用 137、138 端口


从低到高分别为:share,user,server 它们对应的验证方式如下:
1.share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。
2.user:samba 的默认配置,要求用户在访问共享资源之前资源必须先提供用户名和密码进 行验证。
3.server:与 user 安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递 交给一台 NT 服务器。如果递交失败,就退到 user 安全级。


配置文件位于/etc/samba/smb.conf,其中关键项目有
1.[global]
定义全局性配置
2.workgroup
用于指定工作组
3.security
用于指定 Samba 的安全级别
4.passdb backend
指定验证 samba 用户的数据库
5.path
用于指定共享目录路径
6.write list
用于指定可写的用户及用户组


该命令属于 Samba 套件,能够实现添加或删除 samba 用户及为用户修改密码。常用参数 有:
1.-a

Samba 客户端的 multiuser 挂载:支持切换访问 Samba 共享的用户身份,但不需要重新挂载共享资源。挂载参数需要添加“multiuser,sec=ntlmssp (NT LAN Manager Security Support Provider,是微软 Windows NT 早期版本的标准安全协议) ”,客户机上的普通用户可以通过 cifscreds 命令提交新的身份凭据。

向 smbpasswd 文件中添加用户
 2.-x
 从 smbpasswd 文件中删除用户

2 提供SMB文件共享


计算机rehhat7.6:client 和 server


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

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 多用户挂载


计算机:client 和 server

    • 
    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