Samba文件共享服务
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文件共享服务的更多相关文章
- samba文件共享服务的配置
samba文件共享服务的配置 服务端配置 一.安装samba软件包 命令:yum -y install samba 查看是否安装samba. [root@Centos7-Server haha]# [ ...
- Linux基础学习-Samba文件共享服务
使用Samba文件共享服务 Samba起源: 早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了N ...
- 红帽7配置samba文件共享服务
samba软件主要功能是为客户机提供共享使用的文件夹. 使用的协议是SMB(TCP 139).CIFS(TCP445). 所需的软件包:samba 系统服务:smb 1.安装samba服务 ~]#yu ...
- nfs samba文件共享服务
(注意:实验之前强关闭selinux和防火墙) 一丶nfs ① 1.服务端 启动服务 systemctl start nfs.service 配置文件 vim /etc/exports share ...
- SAMBA 文件共享服务
samba 通过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作,也可实现Linux与Linux之间的文件共享. 在配置samba前,有个小建议:虚拟机的ip地址最好配置成静态的 ...
- Linux Samba文件共享服务,安装与案例配置
Samba服务器安装和配置 1:安装Samba服务器软件包 [root@localhost ~]# rpm -qa | grep samba [root@localhost ~]# yum -y in ...
- samba文件共享服务配置一(共2节)
一.samba服务简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上 ...
- samba文件共享服务部署
1.安装samaba服务程序 yum install -y samba 2.查看smaba文件,由于注释空行较多,选择过滤 egrep -v "#|;|^$" /etc/samba ...
- Samba文件共享服务设置
SMB的主程序 smbd:SMB-TCP139,CIFS-TCP445 nmbd:NetBios-UDP137,138 SMB主程序对应的两个服务 /etc/init.d/smb /etc/init. ...
随机推荐
- 云计算之路-阿里云上:数据库连接数过万的真相,从阿里云RDS到微软.NET Core
在昨天的博文中,我们坚持认为数据库连接数过万是阿里云RDS的问题,但后来阿里云提供了当时的数据库连接情况,让我们动摇了自己的想法. 帐户 连接数 A 4077 B 3995 C 741 D 698 E ...
- 【转载】关于c++中的explicit
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示: class String { String ( const char* p ); ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(九)数据层优化-jdbc连接池简述、druid简介
日常啰嗦 终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和da ...
- 【zzulioj 2135】 这里是天堂!
先考虑当前情况可行与否: 如果当a>n或者b>m时是绝对不行的,概率为0: 当a+b<m+n时,k一定等于a+b,否则概率为0: 当a+b==m+n时,k>=a+n,否则概率为 ...
- python scrapy 抓取脚本之家文章(scrapy 入门使用简介)
老早之前就听说过python的scrapy.这是一个分布式爬虫的框架,可以让你轻松写出高性能的分布式异步爬虫.使用框架的最大好处当然就是不同重复造轮子了,因为有很多东西框架当中都有了,直接拿过来使用就 ...
- 【小瑕疵】在div里插入img后在底部留有缝隙怎么解决
[本文转载自http://blog.sina.com.cn/s/blog_9fd5b6df01013mld.html] 图片IMG与容器下边界之间有空隙怎么办?这里介绍3中简单的解决方法. 第一,给图 ...
- 浅谈 angular新旧版本问题
一直在学习angularJs,之前用的版本比较老,前些天更新了一下angularJs的版本,然后发现了一些问题,希望和大家分享一下. 在老的版本里控制器直接用函数定义就可以 比如: 在angularJ ...
- "fatal: protocol error: bad line length character: No This"
git clone 远程地址时候出现 "fatal: protocol error: bad line length character: No This" 错误 在stackov ...
- 如何使用HTML5自定义数据属性
在本文中,我将向你介绍如何使用HTML5自定义数据属性.我还将向你介绍一些开发人员在工作中经常使用的优秀实例. 为什么需要自定义数据属性? 很多时候我们需要存储一些与不同DOM元素相关联的信息.这些信 ...
- Linux 3.2中回写机制的变革
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://alanwu.blog.51cto.com/3652632/1109952 wri ...