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名称解析
外围设备共享
相关包:
samba 提供smb服务器端
samba-client 客户端软件
samba-common 通用软件
cifs-utils smb客户端工具
samba-winbind 和AD相关
相关服务进程:

smbd 提供smb(cifs)服务 TCP:139,445
nmbd NetBIOS名称解析 UDP:137,138
主配置文件:/etc/samba/smb.conf 帮助参看:man smb.conf
语法检查: testparm [-v] [/etc/samba/smb.conf]
客户端工具:smbclient,mount.cifs

配置特定目录共享-每个共享目录应该有独立的[ ]部分

[共享名称] #远程网络看到的共享名称
comment #注释信息
path #所共享的目录路径
public #能否被guest访问的共享,默认no,和guest=ok 类似
browsable #是否允许所有用户浏览此共享,默认为yes,no为隐藏
writable=yes #可以被所有用户读写,默认为no
read only=no #和writable=yes等价,如与以上设置冲突,放在后面的设置生效,默认只读
write list #用户,@组名,+组名 之间用逗号分隔,如:writable=no,列表中用户或组可读
写,不在列表中用户只读
valid users #特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔
准备
10.0.0.7做客户端
10.0.0.8做服务端

1、首先在8上 安装服务器包并启动服务

yum -y install samba
systemctl enable --now smb   #端口445和139就是sanba自身用的

而 在7上安装 samba-client

yum -y install samba-client
 smbclient -L 10.0.0.8  #执行客户端工具

samba 共享目录配额 samba共享多个目录_centos


王老师说:要成为虚拟账户,必须是操作系统账号

pdbedit -L   #执行查看没有samba账号,目前为空

2.创建samba账号

useradd smb1
smbpasswd -a smb1   #将已经存在的操作系统账号 变成smb1账号 (密码是123456)

samba 共享目录配额 samba共享多个目录_docker_02


执行同样的命令,创建smb2和smb3

再次查看,有三个账号了

samba 共享目录配额 samba共享多个目录_centos_03


需要了解的是 smb账号存放在

/var/lib/samba/private/passdb.tdb

samba 共享目录配额 samba共享多个目录_apache_04

3.测试 在客户端7上执行;

smbclient -L 10.0.0.8 -U smb1%123456 #看到smb1共享的家目录

samba 共享目录配额 samba共享多个目录_docker_05

smbclient //10.0.0.8/smb1  -U smb1%123456   #在客户端7上开始远程;

samba 共享目录配额 samba共享多个目录_samba 共享目录配额_06


上传本地的数据 ,如下图:

samba 共享目录配额 samba共享多个目录_samba 共享目录配额_07


而上传的数据在8的smb1目录下查看

samba 共享目录配额 samba共享多个目录_samba 共享目录配额_08


以上是默认的samba共享;(我的理解。默认的共享是所有用户登录都可以看到文件)开始设置指定共享文件夹和 设定一些用户有访问权限;

需要注意的是:指定共享某个目录操作;配置文件在smb.conf里

samba 共享目录配额 samba共享多个目录_samba 共享目录配额_09


现在8创建一个要共享的文件夹 并建立一个文件

mkdir /data/smbshare1
touch /data/smbshare1/a.txt

samba 共享目录配额 samba共享多个目录_centos_10


然后在在vim /etc/samba/smb.conf里定义他的共享

设置如下

samba 共享目录配额 samba共享多个目录_docker_11


在7上查看

[root@centos7 ~]#smbclient -L 10.0.0.8 -U smb1%123456

samba 共享目录配额 samba共享多个目录_samba 共享目录配额_12


单独访问这个共享文件,操作如下,可以执行下载 但是不能上传,

要上传 需要打开samba和文件的权限

smbclient //10.0.0.8/share1 -U smb15123456

samba 共享目录配额 samba共享多个目录_docker_13


打开samba权限 如图

samba 共享目录配额 samba共享多个目录_samba 共享目录配额_14


更改/etc/samba/smb.conf 设置 ,以下两个选项是等价的;

writable=yes  #可以被所有用户读写,默认为no
read only=no  #和writable=yes等价,如与以上设置冲突,放在后面的设置生效,默认只读

samba 共享目录配额 samba共享多个目录_apache_15


改完后 重启服务 systemctl restart smb 至此下载和上传都可以实现了

(需要注意的是 smb.conf文件有时候改完不需要重启就可以启用,而有时候需要,保险起见,还是每次都重启)

samba 共享目录配额 samba共享多个目录_samba 共享目录配额_16


8上面查看已经上传成功;

samba 共享目录配额 samba共享多个目录_ubuntu_17


更换SMB2账号和SMB3登录执行上传,结果也是一样;也就是说,目前没有设定权限,所有用户都有权限上传和下载

4.设置只有特定用户可以上传;

示例 设置smb2和smb3可以上传,smb1不能上传
设置 vim /etc/samba/smb.conf

valid users #特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔;

samba 共享目录配额 samba共享多个目录_ubuntu_18

执行结果如下 目前SMB2和SMB3可以上传,SMB1不可以

samba 共享目录配额 samba共享多个目录_samba 共享目录配额_19

设置public和browsable

public        #能否被guest访问的共享,默认no,和guest=ok 类似;如果设置public=yes则任何用户都可以访问
browsable    #是否允许所有用户浏览此共享,默认为yes,no为隐藏

samba 共享目录配额 samba共享多个目录_apache_20

测试;不加账号验证都可以访问;

samba 共享目录配额 samba共享多个目录_ubuntu_21

** 隐藏共享文件

而设置browsable=no 知道文件名才可以使用;**

samba 共享目录配额 samba共享多个目录_apache_22


执行结果如图,看不到文件了;

samba 共享目录配额 samba共享多个目录_samba 共享目录配额_23


谢谢观赏