SMB案例(利用SAMBA实现/www目录共享)

盛年不重来,一日难再晨,及时当勉励,岁月不待人。这篇文章主要讲述SMB案例:利用SAMBA实现/www目录共享相关的知识,希望能为你提供帮助。
配置samba实现/www目录共享1.概述
Samba原先属于微软公司的专有协议,Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBios over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

  • SMB:Server Message Block 服务器消息块,IBM发布,最早是DOS网络文件共享协议,是私有协议
  • CIFS:common internet file system,微软基于SMB发布
  • SAMBA:1991年 Andrew Tridgell 实现 Windows和UNIX相通
  • 官方网站:http://www.samba.org/
  • SAMBA的功能:
  • 共享文件和打印,实现在线编辑
  • 实现登录SAMBA用户的身份认证
  • 可以进行NetBIOS名称解析
  • 外围设备共享
2.架构及主机

### 一台SAMBA服务器及多台SAMBA客户端
1.SAMBA服务器 :
主机名:FptServerIP38
CentOS 8.4
IP: 192.168.250.38/24

2.SAMBA服务器 :
主机名:FptServerIP37
CentOS 7.9
IP: 192.168.250.37/24
# 本次客户端就搞一套演示

3.服务器端配置
【SMB案例(利用SAMBA实现/www目录共享)】基本过程:准备好服务器端环境;建立用户和组并建好SMB账户;建好共享的WWW目录,并授权;配置好SMB实现共享
# 修改主机名及时间同步
[root@CentOS84 ]#hostnamectl set-hostname SMB-ServerIP38
[root@SMB-ServerIP38 ]#systemctl enable --nowchronyd.service

# 安装samba服务包
[root@SMB-ServerIP38 ]#dnf -y install samba

# 创建sambas组,并在组内创建两个用户sambas 和 angela ,并定义好两个用户的密码
[root@SMB-ServerIP38 ]#groupadd -r sambas
[root@SMB-ServerIP38 ]#useradd -s /sbin/nologin -G sambas sabrina
[root@SMB-ServerIP38 ]#smbpasswd -a sabrina
New SMB password:
Retype new SMB password:
Added user sabrina.
[root@SMB-ServerIP38 ]#id sabrina
uid=1001(sabrina) gid=1001(sabrina) groups=1001(sabrina),974(sambas)

[root@SMB-ServerIP38 ]#useradd -s /sbin/nologin -G sambas angela
[root@SMB-ServerIP38 ]#id angela
uid=1002(angela) gid=1002(angela) groups=1002(angela)
[root@SMB-ServerIP38 ]#smbpasswd -a angela
New SMB password:
Retype new SMB password:
Added user angela.
[root@SMB-ServerIP38 ]#id angela
uid=1002(angela) gid=1002(angela) groups=1002(angela),974(sambas)

[root@SMB-ServerIP38 ]#pdbedit -L
sabrina:1001:
angela:1002:

[root@SMB-ServerIP38 ]#mkdir /data/www -p
[root@SMB-ServerIP38 ]#tree /data/
/data/
└── www

## 对共享目录进行授权,可以根据情况对组授权也可以对每个用户单独授权
# 对组授权
[root@SMB-ServerIP38 ]#setfacl -m g:sambas:rwx /data/www

# 对用户授权
[root@SMB-ServerIP38 ]#setfacl -m u:angela:rwx /data/www
[root@SMB-ServerIP38 ]#setfacl -m u:sabrina:rwx /data/www

# 验证授权情况
[root@SMB-ServerIP38 ]#getfacl /data/www
getfacl: Removing leading / from absolute path names
# file: data/www
# owner: root
# group: root
user::rwx
user:sabrina:rwx
user:angela:rwx
group::r-x
group:sambas:rwx
mask::rwx
other::r-x

# 创建一个测试时可视文件
[root@SMB-ServerIP38 ]#touch /data/www/Data-www-DIR.TXT
[root@SMB-ServerIP38 ]#tree /data/
/data/
└── www
└── Data-www-DIR.TXT

1 directory, 1 file

# 查看并修改smb的配置文件
[root@SMB-ServerIP38 ]#ll /etc/samba/smb.conf
-rw-r--r--. 1 root root 706 Dec 13 22:19 /etc/samba/smb.conf

[root@SMB-ServerIP38 ]#cat /etc/samba/smb.conf
.................. #省略部分默认配置信息,只需要加上下面的配置
[Data-WWW]
path = /data/www/
write list = @sambas
# 第一行是共享的目录名称,将会显示在客户端;第二行是实际服务器端的共享目录路径;第三局是对组授权可写,前面必须加上@号,也可以对组和用户混合授权,比如:write list = @sambas,summer
[root@SMB-ServerIP38 ]#

# 启动SMB服务,并设定开机自动启动
[root@SMB-ServerIP38 ]#systemctl enable --now smb nmb

4.客户端的验证过程
基本过程:在服务器端配置好后,在客户端可以通过两种方式验证和使用共享的空间,一种就是类似FTP方式,每次使用都登录,再下载和上传文件;另外一种就是实现永久挂载的方式,下面分别对两种方式做演示。
4.1通过samba-client查看并验证
[root@centos79 < sub> ]# hostnamectl set-hostname SMB-ClientIP37
[root@smb-clientip37 < /sub> ]# ntpdate ntp1.aliyun.com

[root@smb-clientip37 < sub> ]# yum -y install samba-client

[root@smb-clientip37 < /sub> ]# smbclient -L 192.168.250.38 -U sabrina%123456

SharenameTypeComment
--------------------
print$DiskPrinter Drivers
Data-WWWDisk
IPC$IPCIPC Service (Samba 4.14.5)
sabrinaDiskHome Directories

[root@smb-clientip37 < sub> ]# smbclient //192.168.250.38/Data-WWW -U sabrina%123456
Try "help" to get a list of possible commands.
smb: \\>
smb: \\> pwd
Current directory is \\\\192.168.250.38\\Data-WWW\\
smb: \\> ls
.D0Sat Mar 19 16:45:36 2022
..D0Sat Mar 19 16:41:57 2022
Data-www-DIR.TXTN0Sat Mar 19 16:45:36 2022

52403200 blocks of size 1024. 52004768 blocks available
smb: \\> !ls
anaconda-ks.cfg
smb: \\> put anaconda-ks.cfg
putting file anaconda-ks.cfg as \\anaconda-ks.cfg (117.7 kb/s) (average 117.7 kb/s)
smb: \\> ls
.D0Sat Mar 19 16:50:43 2022
..D0Sat Mar 19 16:41:57 2022
Data-www-DIR.TXTN0Sat Mar 19 16:45:36 2022
anaconda-ks.cfgA1326Sat Mar 19 16:50:43 2022

52403200 blocks of size 1024. 52004744 blocks available
smb: \\> exit



[root@smb-clientip37 < /sub> ]# smbclient -L 192.168.250.38 -U angela%654321

SharenameTypeComment
--------------------
print$DiskPrinter Drivers
Data-WWWDisk
IPC$IPCIPC Service (Samba 4.14.5)
angelaDiskHome Directories

[root@smb-clientip37 < sub> ]# smbclient //192.168.250.38/Data-WWW -U angela%654321

smb: \\> lcd /etc
smb: \\> !ls
smb: \\> put hosts
putting file hosts as \\hosts (30.9 kb/s) (average 30.9 kb/s)
smb: \\> ls
.D0Sat Mar 19 16:58:58 2022
..D0Sat Mar 19 16:41:57 2022
Data-www-DIR.TXTN0Sat Mar 19 16:45:36 2022
anaconda-ks.cfgA1326Sat Mar 19 16:50:43 2022
hostsA158Sat Mar 19 16:58:58 2022

52403200 blocks of size 1024. 52004740 blocks available
smb: \\>
smb: \\> exit
[root@smb-clientip37 < /sub> ]#


# 服务器端查看文件
[root@SMB-ServerIP38 ]#ll /data/www
total 12
-rwxr--r-- 1 sabrina sabrina 1326 Mar 19 16:50 anaconda-ks.cfg
-rw-r--r-- 1 rootroot0 Mar 19 16:45 Data-www-DIR.TXT
-rwxr--r-- 1 angelaangela158 Mar 19 16:58 hosts
[root@SMB-ServerIP38 ]#

4.2通过cifs-utils实现临时和永久挂载
# 安装cifs-utils软件包
[root@smb-clientip37 < sub> ]# yum -y install cifs-utils

# 建好挂载点,并查看未挂载前的系统内的磁盘目录结构
[root@smb-clientip37 < /sub> ]# mkdir /mnt/sabrina
[root@smb-clientip37 < sub> ]# df
Filesystem1K-blocksUsed Available Use% Mounted on
devtmpfs8120652081206520% /dev
tmpfs8132652081326520% /dev/shm
tmpfs8132652912481235281% /run
tmpfs8132652081326520% /sys/fs/cgroup
/dev/mapper/centos-root52403200 1772292506309084% /
/dev/sda2103833614538489295215% /boot
/dev/sda1204580114401931406% /boot/efi
/dev/mapper/centos-home 14769514432992 1476621521% /home
tmpfs1626532016265320% /run/user/0

# 建好用户账号,并设好密码
oot@smb-clientip37 < /sub> ]# useraddsabrina
[root@smb-clientip37 < sub> ]# id sabrina
uid=1000(sabrina) gid=1000(sabrina) groups=1000(sabrina)
[root@smb-clientip37 < /sub> ]# passwd sabrina
Changing password for user sabrina.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

## 临时挂载
[root@smb-clientip37 < sub> ]# mount -o username=sabrina //192.168.250.38/Data-WWW /mnt/sabrina
Password for sabrina@//192.168.250.38/Data-WWW:******
[root@smb-clientip37 < /sub> ]# df
.............. #下面已经看到挂载成功
//192.168.250.38/Data-WWW52403200398440520047601% /mnt/sabrina
# 创建一个测试文件SabrinaFlie.txt ,并查看验证
[root@smb-clientip37 < sub> ]# echo "Hello Sabrina" > /mnt/sabrina/SabrinaFlie.txt

[root@smb-clientip37 < /sub> ]# ls /mnt/sabrina/
anaconda-ks.cfgData-www-DIR.TXThostsSabrinaFlie.txt


## 永久挂载
# 先取消挂载,并验证
[root@smb-clientip37 < sub> ]# umount /mnt/sabrina
[root@smb-clientip37 < /sub> ]# df
Filesystem1K-blocksUsed Available Use% Mounted on
devtmpfs8120652081206520% /dev
tmpfs8132652081326520% /dev/shm
tmpfs813265291248123528

    推荐阅读