文章目录

  • 一、Samba 概述
    • 为什么要用 SAMBA?
    • smb 协议和 cifs 之间的关系
  • 二、Samba 服务详解
    • 2.1 Samba 软件相关信息
    • 2.2 登录验证模式(安全级别)
    • 2.3 常见配置参数解释
    • 2.4 访问控制
    • 2.5 服务启动管理
    • 2.6 客户端登录方式
  • 三、samba 部署与实验
    • 3.1 部署流程:
    • 3.2 本地验证(登录、上传、下载)
    • 3.3 访问控制 - 通过配置限制
    • 3.4 用户别名(虚拟用户)
    • 3.5 映射网络驱动器(挂载)
    • 3.6 图形化 web 管理界面

一、Samba 概述

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同操作系统的计算机之间提供文件及打印机等资源的共享服务。SMB 协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。如图:

为什么要用 SAMBA?

  • ftp 的优缺点:
    优点: 文件传输、应用层协议、可跨平台
    缺点: 只能实现文件传输,无法实现文件系统挂载;无法直接修改服务器端文件

  • Samba 的特性:
    使用 smb/cifs 协议、可跨平台、可实现文件系统挂载、可实现服务器端修改文件

smb 协议和 cifs 之间的关系

随着 Internet 的流行,Microsoft 希望将这个协议扩展到 Internet 上去,成为 Internet上计算机之间相互共享 数据的一种标准。因此它将原有的几乎没有多少技术文档的 SMB 协议进行整理,重新命名为CIFS(CommonInternet File System),它使程序可以访问远程 Internet计算机上的文件并要求此计算机提供服务。客户程序请求远在服务器上的 服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的 SMB 协议版本,并由 Microsoft 使用。 SMB 协议在局域网上用于服务器文件访问和打印的协议。

二、Samba 服务详解

2.1 Samba 软件相关信息

协议: SMB/CIFS
软件名: Samba
服务名: smb
端口号: TCP 139 445
配置文件: /etc/samba/
smb.conf 主配置文件
smbusers 别名配置文件

2.2 登录验证模式(安全级别)

  • share 匿名验证
  • user 本地用户验证(Samba服务器默认的安全级别,用户在访问共享资源之前必须提供用户名和密码进行验证)

拓展: tdbsam:该方式是使用一个数据库文件来验证。数据库文件叫passdb.tdb。可以通过pdbedit -a 向数据库中添加新用户,不过要建立的Samba用户必须先是系统用户。也可以理解为我们使用pdbedit -a 将系统用户转化为了samba 用户。pdbedit命令的参数很多,列出几个主要的。

pdbedit -a username:新建Samba账户(将系统用户转化为samba用户,并设置密码)
pdbedit -x username:删除Samba账户
pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。

  • 别名用户访问(虚拟用户)

2.3 常见配置参数解释

[global]用于定义Samba服务器的总体特性,其配置项对所有共享资源生效

workgroup = WORKGROUP
#设定 Samba Server 所要加入的工作组或者域。server string = Samba Server Version %v
#设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。interfaces = lo eth0 192.168.12.2/24
#设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。hosts allow = 127. 192.168.1. 192.168.10.1
#表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。hosts deny 与hosts allow 刚好相反(二选一)。
例如:hosts allow=172.17.2. EXCEPT172.17.2.50表示容许来自172.17.2.*.*的主机连接,但排除172.17.2.50hosts allow=172.17.2.0/255.255.0.0表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接log file = /var/log/samba/log.%m
#设置Samba Server日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每台访问Samba Server的机器都单独记录一个日志文件。
max log size = 50
#设置Samba Server日志文件的最大容量,单位为kB,0代表不限制security = user
#设置用户访问Samba Server的验证方式。passdb backend = tdbsam
load printers = yes/no
#设置是否在启动Samba时就共享打印机

[homes]用于设置用户宿主目录的共享属性(特殊共享)

[homes]  #共享名(特殊共享,泛指每个用户对应的家目录)
comment = Home Directories #共享描述
browseable = no #共享是否可被查看
writable = yes #共享是否可写
;valid users = %S #允许访问该共享的用户例如:
valid users = bob,@bob(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@组名”表示。)

[printers]用于设置打印机共享资源的属性(特殊共享,共享打印设备,现在基本不用)

[printers] #共享名
comment = All Printers #共享描述
path = /var/spool/samba #共享路径
browseable = no #共享是否可被查看
guest ok = no #是否可以匿名访问,类似于public
writable = no #是否可写
printable = yes #是否可以打印

[自定义]自定义共享区域

[自定义] #共享名
comment = the share is xbz #共享描述
path = /share/zdy #共享路径
public = yes #是否可以匿名访问,类似于guest ok
browseable = yes #共享是否可被查看
writable = yes #是否可写(同时设置目录的W)

配置文件检查工具

  • testparm :若显示"Loaded services file OK."信息表示配置文件的语法是正确的
  • -v:显示samba所支持的所有选项

2.4 访问控制

写入权限的控制方式(类似于vsftp的限制方式):

  • 配置文件开启,文件系统严格控制(尽量采用这种)
    writable = yes
    setfacl 或 chmod 777
  • 文件系统开启,配置文件严格控制
    chmod 777 /dir
    read only = yes
    write list = 用户,@组

2.5 服务启动管理

  • 启动、停止、重新启动和重新加载Samba服务
    service smb start|stop|restart|reload
  • 开机自动启动samba服务
    chkconfig --level 2345 smb on|off

2.6 客户端登录方式

Linux 端:

smbclient -U 用户名 -L //服务器 IP    #查看服务器共享
smbclient -U 用户名 //服务器ip/共享名    #登录服务器共享

Window 端

\\服务器 ip\共享名
net use * /del   #清空登录缓存

三、samba 部署与实验

注:先关闭服务器和客户机上的防火墙和 SELinux

防火墙

[root@localhost ~]$ iptables -F  &&  service iptables save
[root@localhost ~]$ iptables -L

SELinux

[root@localhost ~]$ setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
[root@localhost ~]$ getenforce

3.1 部署流程:

  1. 服务器端安装 samba
[root@localhost ~]$ yum -y install samba
  1. 确认客户端和相关命令软件包是否安装(默认是安装的)
[root@localhost ~]$ rpm -q samba-client
[root@localhost ~]$ rpm -q samba-common
  1. 创建共享区域
    备份主配置文件
    创建独立的共享区间(仿照模板编写)

  2. 启动 smb 服务并查看默认共享区域

[root@localhost ~]$ service smb start
[root@localhost ~]$ smbclient -U 用户名 -L smbserverIP

3.2 本地验证(登录、上传、下载)

1. 修改配置文件(添加自定义共享)

[root@localhost ~]$ vim /etc/samba/smb.conf
#添加如下信息
[demo]   #共享名,顶格写,名字随便写comment = share dir    #描述path = /demo           #共享具体目录public = yes           #匿名访问writable = yes         #是否可写printable = no         #是否允许打印browseable = yes        #是否可见#write list = +staff

2. 创建共享目录并给定相应权限

[root@localhost ~]$ mkdir /demo
[root@localhost ~]$ chmod o+w /demo #最好使用 ACL 权限

3. 测试配置文件并重启服务

[root@localhost ~]$ testparm
[root@localhost ~]$ service smb restart

4. 首先,创建 Linux 用户

[root@localhost ~]$ useradd -s /sbin/nologin user1
[root@localhost ~]$ passwd zhangsan #不需要创建系统密码

5. 转换为 samba 用户

[root@localhost ~]$ pdbedit -a user1

6. 客户端查看共享文件夹并登录测试

smbcient -L IP地址 -U 用户名
[root@localhost ~]$ smbclient -L 192.168.88.10 -U user1
Enter user1s password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-53.el6_10]Sharename       Type      Comment---------       ----      -------demo            Disk      share dirIPC$            IPC       IPC Service (Samba Server Version 3.6.23-53.el6_10)user1           Disk      Home Directories
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-53.el6_10]Server               Comment---------            -------Workgroup            Master---------            -------smbclient  //IP地址/共享名 -U 用户名[root@localhost ~]$ smbclient //192.168.88.10/demo -U user1
Enter user1's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-53.el6_10]
smb: \> ls.                                   D        0  Thu Oct 29 07:12:49 2020..                                 DR        0  Thu Oct 29 07:41:54 202035036 blocks of size 524288. 25486 blocks available
smb: \> put install.log
putting file install.log as \install.log (6484.0 kb/s) (average 6484.1 kb/s)
smb: \> ?   #帮助命令

注:由于未设置上传文件的默认权限,指定用户上传的文件只有自己能修改和覆盖。

3.3 访问控制 - 通过配置限制

valid users 仅允许部分用户访问共享区域

注:前提条件是指定目录权限给到最大,通过修改配置文件来实现实验结果

部分用户登录 samba 服务器
修改/etc/samba/smb.conf 中自定义的共享区域

[root@localhost ~]$ vim /etc/samba/smb.conf
#添加:设置合法用户列表
#valid users = 用户,@组(多个逗号分隔)
[demo]   #共享名,顶格写,名字随便写comment = share dir    #描述path = /demo           #共享具体目录public = yes           #匿名访问writable = yes         #是否可写printable = no         #是否允许打印browseable = yes        #是否可见#write list = +staffvalid users = user1[root@localhost ~]$ !ser   #重启服务
[root@localhost ~]$ smbclient //192.168.88.10/demo -U user1    #客户端测试

部分用户对共享区域有写权限
修改/etc/samba/smb.conf 中自定义的共享区域

[root@localhost ~]$ vim /etc/samba/smb.conf
#添加:开启只读,设置可写列表
#read only = yes
#write list = lisi
[demo]   #共享名,顶格写,名字随便写comment = share dir    #描述path = /demo           #共享具体目录public = yes           #匿名访问writable = yes         #是否可写printable = no         #是否允许打印browseable = yes       #是否可见read only = yes        #只读write list = user1     #可写#valid users = user1[root@localhost ~]$ !ser   #重启服务
[root@localhost ~]$ smbclient //192.168.88.10/demo -U user1    #客户端测试

设置上传文件的默认权限
create mask 文件的默认权限
directory mask 目录的默认权限
修改配置文件自定义的共享区域

[root@localhost ~]$ vim /etc/samba/smb.conf
#添加:
#create mask = 644
#directory mask = 777
[demo]   #共享名,顶格写,名字随便写comment = share dir    #描述path = /demo           #共享具体目录public = yes           #匿名访问writable = yes         #是否可写printable = no         #是否允许打印browseable = yes       #是否可见read only = yes        #只读write list = user1     #可写#valid users = user1create mask = 644directory mask = 777

3.4 用户别名(虚拟用户)

添加别名(/etc/samba/smbusers

[root@localhost ~]$ vim /etc/samba/smbusers# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
#添加:
user1 = u1

启用别名(修改主配置文件)

[root@localhost ~]$ vim /etc/samba/smb.conf
#添加:
[global]
username map = /etc/samba/smbusers

3)测试

[root@localhost ~]$ service smb restartsmbclient //服务器 ip/共享名  -U 别名 [root@localhost ~]$ smbclient //192.168.88.10/demo -U u1
Enter u1's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-53.el6_10]
smb: \>

3.5 映射网络驱动器(挂载)

Linux 下:

临时挂载:
mount -t cifs -o username=xxx,password=xxx //服务器 ip/服务器共享 /本地挂载目录

[root@localhost ~]$ mount -t cifs -o username=user1,password=user1 //192.168.88.10/demo /demo

永久挂载:/etc/fstab
//服务器ip/服务器共享目录 /本地挂载目录 cifs defaults,username=xxx,password=xxx 0 0

[root@localhost ~]$ vim /etc/fstab  #客户端执行
#添加如下内容
//192.168.88.10/demo    /demo                   cifs     defaults,username=user1,passwd=user1 0 0 [root@localhost ~]$ mkdir /demo
[root@localhost ~]$ mount -a  #扫描/etc/fstab目录自动挂载[root@centos6 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos6-lv_root18G  4.0G   13G  25% /
tmpfs                 747M   72K  747M   1% /dev/shm
/dev/sda1             477M   71M  378M  16% /boot
//192.168.88.10/demo   18G  3.8G   13G  24% /demo

Window 下:
此电脑—>>右键映射网络驱动器【注意是反斜杠 \ 】


清空缓存 cmd

net usr * /del

3.6 图形化 web 管理界面

  1. 安装(导入安装包)
[root@localhost ~]$ yum install -y samba-swat
  1. 修改/etc/xinetd.d/swat
    添加:
    only_from = 登录来源 IP
    disable = no
[root@localhost ~]$ vim /etc/xinetd.d/swatservice swat
{port            = 901    #端口号socket_type     = streamwait            = noonly_from       = 192.168.88.1    #是否只允许本机登录,如果想在其他电脑登录,那么用#注释掉这句话。user            = rootserver          = /usr/sbin/swatlog_on_failure += USERIDdisable         = no   #这里一定要是no,默认yes
} 
  1. 重启 xinetd 服务
[root@localhost ~]$ service xinetd restart && chkconfig xinetd on[root@localhost ~]$ netstat -antp
tcp        0      0 :::901                      :::*                        LISTEN      2479/xinetd
  1. 测试
    浏览器:IP:901 #登录时注意端口号
    用户名密码填 登陆linux系统的用户密码

网络服务-SAMBA相关推荐

  1. 网络服务中常用的端口介绍

    一.端口 端口(port),可以认为是设备与外界通讯交流的出口. 端口一共有65535个. 端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见.例如计算机中的80端口 ...

  2. Linux系统与网络服务管理技术大全(第2版)

    2019独角兽企业重金招聘Python工程师标准>>> 本书从实用角度出发,对Red Hat Enterprise Linux 5平台下的系统管理及网络服务做了全面.系统的介绍,既便 ...

  3. 尚硅谷Linux网络服务基础

    一.需要学习的网络服务 域名解析服务(DNS) 动态主机配置服务(DHCP) 文件传输服务(FTP/samba) 网络文件系统服务(NFS) 万维网服务(Apache/Nginx/Tomcat) 邮件 ...

  4. windows网络服务之配置网络负载均衡(NLB)群集

    O首页51CTO博客我的博客搜索 每日博报 社区:学院论坛博客下载更多            登录注册 家园 学院 博客 论坛 下载 自测 门诊 周刊 读书 技术圈 曾垂鑫的技术专栏 http://5 ...

  5. 尚硅谷 Linux网络服务数据库 笔记

    目录 网络基础服务 CentOS6与CentOS7区别 常见的网络协议与端口 网关和路由 网络管理命令 SSH管理 TCP Wrappers 简单防火墙 DHCP服务 DHCP的工作原理 DHCP服务 ...

  6. 关于linux系统的衍生系统Centos7共享服务samba设置

    目录 一.关于samba的介绍 二.samba的优势 三.samba的服务场景 四.Centos7共享服务samba设置的实验 实验目的: 实验内容: 1.安装共享服务 2.修改smb.conf配置文 ...

  7. Linux系统应用 Centos7共享服务samba设置

    目录 实验:学会Centos7共享服务samba设置 实验目的:通过设置Samba服务器,您可以在CentOS 7上创建一个共享文件夹,并授予其他计算机或设备访问权限,以实现文件共享的目的. 实验步骤 ...

  8. linux系统网络邻居,5、Linux下的网络邻居Samba

    五.Linux下的网络邻居Samba Windows可以通过网络邻居访问局域网主机,而在Linux下可以通过Samba 客户端访问局域网内的Windows主机,也可以通过Samba服务器给Window ...

  9. Linux网络实战——Samba服务器搭建

    Linux网络实战--Samba服务器搭建 安装Samba服务软件 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Message ...

最新文章

  1. R语言WVPlots包可视化克利夫兰点ClevelandDotPlot、并按照分类变量排序进行可视化克利夫兰点ClevelandDotPlot
  2. linux虚拟网络设备--虚拟机网卡和linux bridge上tap设备的关系(七)
  3. 博客园成立了管理团队
  4. 安卓开发笔记——关于图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)...
  5. scala中的算术符重载代码详细解释
  6. 第5章 Python 数字图像处理(DIP) - 图像复原与重建14 - 逆滤波
  7. 工作的准备:atoi,itoa,strcpy,memcpy,strcmp,二分查找,strcat
  8. html文字和下划线怎么分开,HTML css样式怎样才能像下图那样把文字分开,还有下划线,请帮我补写下 ,谢谢!!...
  9. linux tar 命令 详解
  10. C++自学08:类型推断(auto/typeid)
  11. The Windows Phone Emulator wasn't able to create the external network switches 解决方法
  12. java 8 接口默认方法
  13. 笔记本选购指南2020双十一
  14. 【初识数据结构】手把手教会你时间复杂度的计算方法
  15. NSGA 2 学习笔记 -- crowding distance
  16. muduo C++网络库的学习笔记
  17. 如何反击职场PUA?
  18. ubuntu 公网FTP搭建,解决无法连接
  19. 大悲寺——依教奉行溯正源,良苦用心谁人知?纵然世间一比丘,不退初心证菩提。[转]...
  20. C# 根据汉字获取首字母拼音或全拼

热门文章

  1. R语言ggplot2可视化:水平半小提琴图(Horizontal Half Violin Plots)、去除水平半小提琴图中的填充色、ggridges包的绘制山脊图
  2. R语言ggplot2可视化:使用gganimate包和gapminder包为生成的动画文件gif设置尺寸、分辨率
  3. R语言随机森林模型:计算随机森林模型的特征重要度(feature importance)并可视化特征重要度、使用少数重要特征拟合随机森林模型(比较所有特征模型和重要特征模型在测试集上的表现差异)
  4. R语言KMeans聚类分析确定最优聚类簇数实战:期望最大化expectation-maximization准则(确定最优聚类簇数)
  5. pandas使用shift方法进行特征差分
  6. R语言length函数计算向量、列表、字符串长度实战
  7. mac rails mysql_MAC下Rails连接mysql出现 dyld: Symbol not found: _mysql_get_client_info 的解决办法...
  8. android alpha不起作用,API 28(P)的Android设计支持库不起作用
  9. python 检测文件或文件夹是否存在
  10. TensorFlow数据读取方式:Dataset API,以及如何查看dataset:DatasetV1Adapter的方法