Samba起源:

早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了NFS开源文件共享程序:NFS(NetworkFile System)是一个能够将多台Linux的远程主机数据挂载到本地目录的服务,属于轻量级的文件共享服务,不支持Linux与 Windows系统间的文件共享。

随后在1991年时大学生Tridgwell为了解决Linux与Windows系统之间共享文件的问题,便开发出了SMB协议与Samba服务程序。

SMB(Server Messages Block)协议:实现局域网内文件或打印机等资源共享服务的协议。

当时Tridgwell想要注册SMBServer这个商标,但却被因为SMB是没有意义的字符被拒绝了,经过Tridgwell不断翻看词典,终于找到了一个拉丁舞蹈的名字——SAMBA,而这个热情舞蹈的名字中又恰好包含了SMB(SAMBA),于是这便是Samba程序名字的由来。

Samba服务程序是一款基于SMB协议并由服务端和客户端组成的开源文件共享软件,实现了Linux与Windows系统间的文件共享。

所需主机配置:

主机名称

操作系统

IP地址

Samba共享服务器(host1)

CentOS6.7

192.168.0.141

客户端(host2)

CentOS6.7

192.168.0.142

客户端

Windows7

192.168.0.110

[root@host1 ~]# yum -y install samba
[root@host1 ~]# service smb restart
[root@host1 ~]# chkconfig smb --list
smb 0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
[root@host1 ~]## cat /etc/samba/smb.conf | egrep -v "#|;|^$"
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
[homes]
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes

  过滤后的配置文件:

[global]

 

#全局参数。

 

workgroup = MYGROUP

#工作组名称。

 

server string = Samba Server Version %v

#服务器介绍信息,参数%v为显示SMB版本号。

 

log file = /var/log/samba/log.%m

#定义日志文件存放位置与名称,参数%m为来访的主机名。

 

max log size = 50

#定义日志文件最大容量为50Kb。

 

security = user

#安全验证的方式,总共有4种。

 

#share:来访主机无需验证口令,更加方便,但安全性很差。

 

#user:需由SMB服务验证来访主机提供的口令后才可建立访问,更加的安全。

 

#server:使用独立的远程主机验证来访主机提供的口令(集中管理帐号)。

 

#domain:使用PDC来完成验证

 

passdb backend = tdbsam

#定义用户后台的类型,共有3种。

 

#smbpasswd:使用SMB服务的smbpasswd命令给系统用户设置SMB密码。

 

#tdbsam:创建数据库文件并使用pdbedit建立SMB独立的用户。

 

#ldapsam:基于LDAP服务进行帐户验证。

 

load printers = yes

#设置是否当Samba服务启动时共享打印机设备。

 

cups options = raw

#打印机的选项

[homes]

 

#共享参数

 

comment = Home Directories

#描述信息

 

browseable = no

#指定共享是否在“网上邻居”中可见。

 

writable = yes

#定义是否可写入操作,与"read only"相反。

[printers]

 

#打印机共享参数

 

comment = All Printers

 
 

path = /var/spool/samba

#共享文件的实际路径(重要)。

 

browseable = no

 
 

guest ok = no

#是否所有人可见,等同于"public"参数。

 

writable = no

 
 

printable = yes

 

标准的Samba共享参数是这样的:

参数

作用

[linuxprobe]

共享名称为linuxprobe

comment = Do not arbitrarily modify the database file

警告用户不要随意修改数据库

path = /home/database

共享文件夹在/home/database

public = no

关闭所有人可见

writable = yes

允许写入操作

使用Samba服务口令验证方式可以让共享文件更加的安全,做到仅让信任的用户访问,而且验证过程也很简单,要想使用口令验证模式,我们需要先需要创建Samba服务独立的数据库。

第1步:检查当前是否为user验证模式

[root@host1 ~]# cat /etc/samba/smb.conf
……
security = user
passdb backend = tdbsam
……

 第2步:创建共享文件夹:

[root@host1 ~]# mkdir /database

 第3步:描述共享文件夹信息。

在SMB服务主配置文件(/etc/samba/smb.conf)的最下面追加共享文件夹的配置参数:

[database]
comment = Do not arbitrarily modify the database file
path = /database
public = no
writable = yes

 保存smb.conf文件后重启启动SMB服务:

[root@host1 ~]# service smb restart

 第4步:使用Windows主机尝试访问

在Windows主机的运行框中输入远程主机的信息

此时访问Samba服务报错:无法访问

这时我们需要关闭防火墙(或清空防火墙规则)和修改SElinux规则

第5步:清空防火墙规则链:

[root@host1 ~]# /etc/init.d/iptables stop
或者:
[root@host1 ~]# iptables -F
[root@host1 ~]# service iptables save

第6步:创建SMB服务独立的帐号。

现在Windows系统要求先验证后才能访问共享,而SMB服务配置文件中密码数据库后台类型为”tdbsam“,所以这个帐户和口令是Samba服务的独立帐号信息,我们需要使用pdbedit命令来创建SMB服务的用户数据库。

pdbedit命令用于管理SMB服务的帐户信息数据库,格式为:“pdbedit [选项] 帐户”。

参数

作用

-a 用户名

建立Samba用户

-x 用户名

删除Samba用户

-L

列出用户列表

-Lv

列出用户详细信息的列表

创建系统用户:

[root@host1 ~]# useradd smbuser

将此系统用户提升为SMB用户:

[root@host1 ~]# pdbedit -a -u smbuser
new password: //设置SMB服务独立密码
retype new password:
Unix username: smbuser
NT username:
……

第7步:允许SELinux规则

设置共享目录的ACL权限添加smbuser用户:

[root@host1 ~]# setfacl -m u:smbuser:rwx /database

允许SELinux对于SMB用户共享家目录的布尔值:

[root@host1 ~]# setsebool -P samba_enable_home_dirs on

将共享目录的SELinux安全上下文设置妥当:

[root@host1 ~]# chcon -t samba_share_t -R /database

重启服务:

[root@host1 ~]# service smb restart

第8步:使用Windows主机验证共享结果

使用第4步搜索主机,然后输入第6步创建的SMB账号和密码即可进入了

使用SMB服务并创建文件

实现Linux系统之间数据共享

客户端安装cifs-utils软件包:

[root@host2 ~]# yum -y install cifs-utils
[root@host2 ~]# smbclient -L 192.168.0.141 //查看141服务器提供了哪些共享
Enter root's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-20.el6]
Sharename Type Comment
--------- ---- -------
database Disk Do not arbitrarily modify the database file
IPC$ IPC IPC Service (Samba Server Version 3.6.23-20.el6)
……
此步如果有报错如下内容:
[root@host2 ~]# smbclient -L 192.168.0.141
Enter root's password:
session setup failed: NT_STATUS_LOGON_FAILURE
输入如下命令解决:
[root@host2 ~]# smbclient -L 192.168.0.141 -U smbuser
[root@host2 ~]# mkdir /mntsmb
[root@host2 ~]# vim /etc/fstab
//192.168.0.141/database /mntsmb cifs username=smbuser,password=123456,domain=MYGROUP,_netdev 0 0
[root@host2 ~]# mount -a
[root@host2 ~]# mount | grep /mntsmb
//192.168.0.141/database on /mntsmb type cifs (rw)
[root@host2 ~]# cat /mntsmb/smb.txt
hello

  PS:写的内容比较多,但是实际配置起来,步骤很少的,也比较简单的!

  如果是外网访问smb服务器,则需要设置端口转发,445端口一般默认被封的!

Samba文件共享服务的更多相关文章

  1. samba文件共享服务的配置

    samba文件共享服务的配置 服务端配置 一.安装samba软件包 命令:yum -y install samba 查看是否安装samba. [root@Centos7-Server haha]# [ ...

  2. Linux基础学习-Samba文件共享服务

    使用Samba文件共享服务 Samba起源: 早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了N ...

  3. 红帽7配置samba文件共享服务

    samba软件主要功能是为客户机提供共享使用的文件夹. 使用的协议是SMB(TCP 139).CIFS(TCP445). 所需的软件包:samba 系统服务:smb 1.安装samba服务 ~]#yu ...

  4. nfs samba文件共享服务

    (注意:实验之前强关闭selinux和防火墙) 一丶nfs ① 1.服务端 启动服务 systemctl start nfs.service   配置文件 vim /etc/exports share ...

  5. SAMBA 文件共享服务

    samba 通过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作,也可实现Linux与Linux之间的文件共享. 在配置samba前,有个小建议:虚拟机的ip地址最好配置成静态的 ...

  6. Linux Samba文件共享服务,安装与案例配置

    Samba服务器安装和配置 1:安装Samba服务器软件包 [root@localhost ~]# rpm -qa | grep samba [root@localhost ~]# yum -y in ...

  7. samba文件共享服务配置一(共2节)

    一.samba服务简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上 ...

  8. samba文件共享服务部署

    1.安装samaba服务程序 yum install -y samba 2.查看smaba文件,由于注释空行较多,选择过滤 egrep -v "#|;|^$" /etc/samba ...

  9. Samba文件共享服务设置

    SMB的主程序 smbd:SMB-TCP139,CIFS-TCP445 nmbd:NetBios-UDP137,138 SMB主程序对应的两个服务 /etc/init.d/smb /etc/init. ...

随机推荐

  1. Realm数据持久化方案的简单介绍和使用(二)

    接上篇... 4. 可空属性&默认值&忽略属性 默认情况下, 属性值可空, 如果强制要求某个属性非空, 可以使用如下方法: 遵循协议方法 + (NSArray *)requiredPr ...

  2. 3.Java日志框架slf4j、jcl、jul、log4j1、log4j2、logback大总结

    一.slf4j.jcl.jul.log4j1.log4j2.logback JUL:JDK中的日志记录工具,也常称为JDKLog.jdk-logging. LOG4J1:一个具体的日志实现框架. LO ...

  3. hive的安装和升级

    目录 [toc] 安装 升级 安装 nohup hive –service hiveserver & 启动: sudo nohup ./hive --service metastore &am ...

  4. C#设计模式之简单工厂模式

    简单工厂模式解释:  简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern) 是通过专门定义一 ...

  5. [编织消息框架][JAVA核心技术]动态代理应用10-水平扩展方案

    服务分为系统服务同用户服务两种 水平扩展是基于系统服务,而拆分方式又有几种方案,按数据跟业务情况来做决策 1.每个服务独立存储(图1):每个服务只负责一个或多个领域实体存储,A服务不能直接修改B服务的 ...

  6. Lambda&Java多核编程-7-类型检查

    本篇主要介绍Lambda的类型检查机制以及周边的一些知识. 类型检查 在前面的实践中,我们发现表达式的类型能够被上下文所推断.即使同一个表达式,在不同的语境下也能够被推断成不同类型. 这几天在码一个安 ...

  7. 跟着刚哥梳理java知识点——多线程(十六)

    创建多线程第一种方式:① 继承:继承Thread.② 重写:重写Thread类的run()方法③ 创建:创建一个子类的对象④ 调用:调用线程的start()方法,启动此线程,调用run()方法 cla ...

  8. 【小瑕疵】表单中的button会自动提交?

    在表单中使用button标签的时候会发现,即使什么类型都没有设置,但是在点击的时候会发现,表单会自动提交 比如: 我在一个表单的button中添加一个函数,当点击这个按钮时会增加一行内容: 但是当我实 ...

  9. 区分词法作用域(js)与动态作用域(精!)

    在js学习中,词法作用域是必须要掌握的! 在这里,我将总结一下<你不知道的JS>一书中词法作用域的重点并分享给大家! 首先带来一段代码示例: function foo(){ console ...

  10. pl/sql 笔记之存储过程、函数、包、触发器(下)

    一.存储过程.存储函数   1.What's This? ①.ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数. ②.存储过程.存储函数的唯 ...