1. Samba 概述

  SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内不同操作系统的计算机之间提供文件及打印机等资源的共享服务。SMB 协议是客户机/服务器 型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

为什么要用SAMBA?

ftp的优缺点:

  优点:文件传输、应用层协议、可跨平台

  缺点:只能实现文件传输,无法实现文件系统挂载;无法直接修改服务器端文件

Samba的特性:

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

smb协议和cifs 直接的关系

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

2. Samba服务详解

2.1 Samba软件相关信息

  1)协议:SMB/CIFS

  2)服务:

    smb  实现资源共享、权限认证  TCP  139  445

  3)配置文件(/etc/samba/)

    smb.conf  主配置文件

    smbusers  别名配置文件

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

  1)share 匿名验证

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

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

pdbesit -a username:新建Samba用户(将系统用户转化为samba用户,并设置密码)

pdbedit -x username:删除samba用户

pdbedit -L:列出samba用户列表,读取pdbedit.tdb 数据库文件。

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

2.3 常见配置参数解释

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

workgroup = WORKGROUP
#设定samba server 所要加入的工作组或域
server string = Samba Server Version %v
#设定Samba Server 的注释,可以是任意字符串,也可以不填。宏%v表示显示samba的版本号
interfaces = lo eth0 192.168.80.129/
#设置samba server 监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。
hosts allow = . 192.168.. 192.168.80.130
#表示允许连接到samba server 的客户端,多个参数以空格隔开。可以用一个IP 表示,也可以用一个网段表示。
hosts allow 和 hosts deny 刚好相反(2选1)
例:
hosts allow=192.168.80. EXCEPT192.168.80.130
表示允许来自192.168.80.* 的主机连接,但排除192.168.80.130
hosts allow=192.168.80.0/24
表示允许来自192.168.80.0/24子网中的所有主机连接
log file = /var/log/samba/log.%m
#设置Samba Server日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),
#表示对每台访问Samba Server的机器都单独记录一个日志文件。
max log size =
#设置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 = sss,@sss(多个用户或组中间用逗号隔开,如果要加入一个组要用"@组名")

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

[printers]                #共享名
comment = All Printers #共享描述
path = /var/spool/samba #共享路径
browsable = 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服务

systemctl start|stop|restart|reload smb

开机自启samba服务

systemctl enable smb
chkconfig --level smb on|off

2.6 客户端登录方式

Linux端:

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

windows端

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

3. samba 部署与实验

防火墙端口:

[root@centos2 /etc/samba]# firewall-cmd --zone=public --add-port=/tcp
[root@centos2 /etc/samba]# firewall-cmd --zone=public --add-port=/tcp --permanent
[root@centos2 /etc/samba]# firewall-cmd --zone=public --add-port=/tcp
[root@centos2 /etc/samba]# firewall-cmd --zone=public --add-port=/tcp--permanent
[root@centos2 /etc/samba]# firewall-cmd --zone=public --add-port=/tcp
[root@centos2 /etc/samba]# firewall-cmd --zone=public --add-port=/tcp --permanent
[root@centos2 /etc/samba]# firewall-cmd --zone=public --add-port=/tcp
[root@centos2 /etc/samba]# firewall-cmd --zone=public --add-port=/tcp --permanent

3.1 部署:

1. 服务器端安装 samba

[root@centos2 ~]# yum -y install samba

2. 确认客户端和相关命令软件包是否安装(默认安装)

[root@localhost ~]# rpm -q samba-client
[root@localhost ~]# rpm -q samba-common

3. 创建共享区域

 备份主配置文件

 创建独立的共享区间(仿照模板编写)

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

systemctl start smb
smbclient -U 用户名 -L smbserverIP

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

a、修改配置文件(添加自定义共享)

[自定义]
comment = test
path = /data/
public = yes
browseable = yes
writable = yes

b、创建共享目录并给定相应权限

[root@centos2 /]# mkdir data
[root@centos2 /]# chmod data

c、测试配置文件并重启服务

[root@centos2 /etc/samba]# testparm
[root@centos2 /etc/samba]# systemctl start smb

d、创建linux用户

[root@centos2 /etc/samba]# useradd -s /sbin/nologin zhangsan

e、转换为samba用户

[root@centos2 /etc/samba]# pdbedit -a zhangsan

f、客户端查看共享文件并登录测试

[root@localhost ~]# smbclient -U zhangsan -L 192.168.80.129
[root@localhost ~]# smbclient -U zhangsan //192.168.80.129/test

登录报错:protocol negotiation failed: NT_STATUS_IO_TIMEOUT

解决办法:在samba服务器的/etc/hosts文件中添加本机解析(samba服务器自身)

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

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

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

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

部分用户登录samba 服务器

修改/etc/samba/smb.conf 中自定义的共享区域

  添加:设置合法用户列表

  valid users = 用户,@组(多个逗号隔开)

部分用户对共享区域有写权限

  添加:开启只读,设置可写列表

  read only = yes

  write list = lisi

设置上传文件的默认权限

create mask 文件默认权限

directory mask 目录的默认权限

修改配置文件自定义的共享区域

  添加:

  create mask = 666

  directory mask = 777

[root@centos2 /etc/samba]# vim smb.conf
...
[test]
comment = test
path = /data/
public = yes
browseable = yes
valid users = zhangsan,lisi
read only = yes
write list = lisi
create mask =
directory mask = [root@centos2 /etc/samba]# testparm
[root@centos2 /etc/samba]# useradd -s /sbin/nologin lisi
[root@centos2 /etc/samba]# pdbedit -a lisi
[root@centos2 /etc/samba]# systemctl restart smb

3.4 用户别名(虚拟用户)

1)添加别名(/etc/samba/smbusers)

  添加:zhangsan = zs

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

  vim /etc/samba/smb.conf

  添加:

    username map = /etc/samba/smbusers

3)测试

  smbclient -U 别名 //服务器IP/共享名

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

Linux下:

  临时挂载:

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

  永久挂载:/etc/fstab

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

windows下:

  我的电脑、计算机、此电脑等右键映射网络驱动器【注意是反斜杠\】

网络服务-SAMBA的更多相关文章

  1. [转载]SELinux 环境下网络服务设置,配置 Apache 、Samba、NFS

    原文地址:http://www.ibm.com/developerworks/cn/linux/l-cn-selinux-services1/index.html?ca=drs- 引言 SELinux ...

  2. Linux服务-samba

    目录 1. samba简介 2. samba访问 Linux服务-samba 1. samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. 在 ...

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

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

  4. 简要介绍Linux网络服务的种类

    如果有人问你Linux最强大的功能是什么,你大概会回答“是网络功能”.Lmux操作系统的优势之一就是网络功能了,这包含比较稳定的系统资源分配,以及较为安全的网络防护能力,所以许多人都喜欢用它来进行网络 ...

  5. Salesforce Apex页面中调用远端网络服务

    本文介绍了Salesforce Apex页面中调用远端网络服务的实现过程. ### 注册远端网络服务 在使用Apex代码调用远端网络服务之前,首先需要在Salesforce中注册远端网络服务地址, 本 ...

  6. 1、linux网络服务实验 用PuTTY连接Linux

    这个是大三下学期的Linux网络服务配置详解时,感觉老师上得简单,就整理下,岭南师范学院师弟妹有福,如果是蔡老师交的话,可以拿来预习,复习. 一.用PuTTY连接Linux ①.装有redhat系统的 ...

  7. /etc/xinetd.conf 和 /etc/xinetd.d/*【新网络服务配置】

    http://blog.csdn.net/kelven2004/article/details/1701930 xinetd 是 inetd 的安全加强版,它内置了自己的 TCP wrapper, 可 ...

  8. 在docker里部署网络服务

    之前试着玩玩docker有一阵子了,今天算是头一回正式在docker里部署网络服务. 本来想和lxc差不多的东西那自然是手到擒来,没想到还是改了很多. 第一个遇到的问题是,远程连到docker宿主机干 ...

  9. Nodejs·网络服务

    本章是从NodeJS拥有的模块角度,讲述了网络服务中的应用: net ----- > TCP dgram --> UDP http -----> HTTP https ----> ...

随机推荐

  1. python3 mqtt 添加用户名以及密码

    import paho.mqtt.client as mqtt client = mqtt.Client(client_id, transport='tcp') client.username_pw_ ...

  2. 记录一次在生成数据库服务器上出现The timeout period elapsed prior to completion of the operation or the server is not responding.和Exception has been thrown by the target of an invocation的解决办法

    记一次查询超时的解决方案The timeout period elapsed...... https://www.cnblogs.com/wyt007/p/9274613.html Exception ...

  3. DI 依赖注入之unity(mvc)

    DI 依赖注入之unity(使用unity.mvc) 一.nuget下载安装: 使用Nuget安装Unity.MVC 安装完成后会在~/App_Start/目录下自动生成UnityMvcActivat ...

  4. prometheus添加自定义监控与告警(etcd为例)

    一.步骤及注意事项(前提,部署参考部署篇) 一般etcd集群会开启HTTPS认证,因此访问etcd需要对应的证书 使用证书创建etcd的secret 将etcd的secret挂在到prometheus ...

  5. LPAT: Learning to Predict Adaptive Threshold for Weakly-supervised Temporal Action Localization [Paper Reading]

    Motivation: 阈值分割的阈值并没有通过模型训练学出来,而是凭借主观经验设置,本文通过与背景得分比较提取对应的proposal,不用阈值的另一篇文章是Shou Zheng的AutoLoc,通过 ...

  6. JMeter一台机器可以支持多大的并发量

    Support for concurrent thread is basically depends on many factors like OS, free RAM and connections ...

  7. Linux crond任务调度(定时任务),Linux磁盘分区/挂载

    一.crond任务调度 1.基本语法 crontab [选项] -e : 编辑 crontab定时任务 -l : 查询crontab -r : 删除当前用户所有的crontab任务 例子: 每分钟执行 ...

  8. STM8L独立看门狗IWDG

    简单扼要 void IWDG_Init(void)//初始化 { IWDG->KR = 0xcc;//启动IWDG IWDG->KR = 0x55;//解除PR及RLR的写保护 IWDG- ...

  9. golang知识精要(二)

    类型 go是**静态类型**语言,不能在运行期改变变量类型. 变量定义 使用var定义变量,自动初始化为零值: 如果提供初始值,可省略变量类型: 函数内部可使用:=定义变量. var x int // ...

  10. ASP.NET Core 静态文件

    静态文件(HTML,CSS,图片和Javascript之类的资源)会被ASP.NET Core应用直接提供给客户端. 静态文件通常位于网站根目录(web root) <content-root& ...