linux架构学习第二十九天之samba文件共享服务

内容:

1、samba的作用以及由来

2、samba的特性

3、samba的工作过程

4、samba的安装以及配置

5、samba的搭建测试

一、samba的作用以及由来

SAMBA历史溯源(摘自百度百科):

在早期网络世界当中,档案数据在不同主机之间的传输大多是使用 FTP 这个好用的服务器软件来进行传送。不过,使用FTP 传输档案却有个小小的问题,那就您无法直接修改主机上面的档案数据!也就是说您想要更改Linux 主机上的某个档案时,必需要由 Server 端将该档案下载到 Client端后才能修改,也因此该档案在 Server 与 Client 端都会存在。这个时候,万一如果有一天您修改了某个档案,却忘记将数据上传回主机,那么等过了一阵子之后,如何知道那个档案才是最新的?!

既然有这样的问题,可不可以在 Client 端的机器上面直接取用Server 上面的档案,如果可以在 Client 端直接进行 Server 端档案的存取,那么在Client 端就不需要存在该档案数据,也就是说,只要有 Server 上面的档案资料存在就可以!有没有这样的档案系统( File System )?很高兴的是, NetworkFile System, NFS 就是这样的档案系统之一!我只要在 Client 端将 Server所提供分享的目录挂载进来,那么在 Client 的机器上面就可以直接取用 Server上的档案数据,而且,该数据就像 Client 端上面的partition 一般!而除了可以让 Unix Like 的机器互相分享档案的NFS 服务器之外,在微软 ( Microsoft ) 上面也有类似的档案系统,那就是 CommonInternet File System, CIFS 这个咚咚啦!CIFS 最简单的想法就是目前常见的『网上邻居』。Windows 系统的计算机可以透过桌面上『网上邻居』来分享别人所提供的档案数据。不过,NFS仅能让 Unix 机器沟通, CIFS 只能让 Windows 机器沟通。伤脑筋,那么有没有让Windows 与 Unix-Like 这两个不同的平台相互分享档案数据的档案系统?

1991 年一个名叫Andrew Tridgwell 的大学生就有这样的困扰,他手上有三部机器,分别是跑DOS 的个人计算机、DEC公司的 Digital Unix 系统以及 Sun 的 Unix 系统。在当时,DEC 公司有发展出一套称为 PATHWORKS 的软件,这套软件可以用来分享 DEC 的Unix 与个人计算机的 DOS 这两个操作系统的档案数据,可惜让 Tridgwell 觉得较困扰的是,Sun的 Unix 无法藉由这个软件来达到数据分享的目的。这个时候 Tridgwell 就想说:『咦!既然这两部系统可以相互沟通,没道理Sun 就必需这么苦命吧?可不可以将这两部系统的运作原理找出来,然后让 Sun这部机器也能够分享档案数据呢?』,为了解决这样的的问题,这老兄就自行写了个program 去侦测当 DOS 与 DEC 的 Unix 系统在进行数据分享传送时所使用到的通讯协议信息,然后将这些重要的信息撷取下来,并且基于上述所找到的通讯协议而开发出ServerMessage Block (SMB) 这个档案系统,而就是这套 SMB软件能够让 Unix 与 DOS 互相的分享数据!( 注:再次的给他强调一次,在Unix Like 上面可以分享档案数据的 file system 是 NFS,那么在 Windows 上面使用的『网络邻居』所使用的档案系统则称为Common Internet File System, CIFS )

因此 Tridgwell就去申请了 SMBServer ( Server Message Block 的简写 ) 这个名字来做为他撰写的这个软件的商标,可惜的是,因为SMB 是没有意义的文字,因此没有办法达成注册。既然如此的话,那么能不能在字典里面找到相关的字词可以做为商标来注册呢?翻了老半天,呵呵!这个SAMBA刚好含有 SMB ,又是热情有劲的拉丁舞蹈的名称,不如就用这个名字来做为商标好了。如此,这成为我们今天所使用的SAMBA 的名称由来。

二、samba的特性

Samba是在linux机unix上实现SMB协议的一个免费软件,有服务器及客户端程序构成,SMB协议是建立在NetBIOS 协议之上的应用协议,是基于TCP138/139两个端口的服务。被用于Lan Manager和Windows服务器系统中,实现不同的计算机直接共享打印机和文件等。

Samba的服务器程序可以实现以下主要功能:

1、文件及打印共享;

2、计算机名与IP的解析;

3、windows服务的支持;

4、用户权限的设置

samba可以实现linux间和linux与windows间的文件共享

三、samba的工作过程

Samba工作流程:

对于Samba服务器来说,其主配置文件smb.conf记录了共享的目录列表。比如share目录,temp目录等。对于每个共享目录,需要配置相应权限,服务器会根据smb.conf文件中的设置,判断客户端是否有权限访问,只有拥有权限才可以访问服务器的资源。Samba服务器同样会对用户的行为进行记录,每一次访问的信息都会记录在日志文件中,以便查询哪些客户端访问过Samba服务器。

四、samba的安装以及配置

1、samba是C/S架构,所以分为客户端和服务端软件:

samba-*.rpm:该包为Samba服务的主程序包。服务器必须安装该软件包,后面的数字为版本号

samba-client-*.rpm:该包为Samba的客户端工具,是连接服务器和连接网上邻居的客户端工具并包含其测试工具

samba-common-*.rpm:该包存放的是通用的工具和库文件,无论是服务器还是客户端都需要安装该软件包

samba-swat-*.rpm:当安装了这个包以后,就可以通过浏览器(比如IE等哈)来对Samba服务器进行图形化管理

程序环境:

配置文件:

/etc/samba/smb.conf

主程序:

nmbd:Network Naming Service, NetBIOS

smbd:SMB/CIFS Service;

监听的端口:

137/udp, 138/udp

139/tcp, 445/tcp

客户端程序:

mount -t cifs = mount.cifs

smbclient:交互式命令行客户端工具;

2、samba的配置

smb.conf文件的开头部分为samba配置简介,告诉我们smb.conf文件的作用及相关信息。

smb.conf中以“#”开头的为注释,为用户提供相关的配置解释信息,方便用户参考。

smb.conf中还有以“;”开头滴,这些都是samba配置的格式范例,默认是不生效滴,可以通过去掉前面的“;”并加以修改来设置想使用的功能

注意:samba的用户是当前的系统用户,但是处于安全机制,密码却不是当前的系统登录密码,而是另外设置的密码。

smb.conf的配置文件可以分成两部分:Global Settings全局的环境配置和Share Definitions共享的定义设置,其中Global Settings又有几个分类,我们可以对sam.conf进行信息处理查看

[22:19 [email protected]~]# grep -E "^#[[:space:]]?-----|=====" /etc/samba/smb.conf
#---------------
#--------------
#======================= Global Settings =====================================
# ----------------------- Network Related Options -------------------------
# --------------------------- Logging Options -----------------------------
# ----------------------- Standalone Server Options ------------------------
# ----------------------- Domain Members Options ------------------------
# ----------------------- Domain Controller Options ------------------------
# ----------------------- Browser Control Options ----------------------------
#----------------------------- Name Resolution -------------------------------
# --------------------------- Printing Options -----------------------------
# --------------------------- Filesystem Options ---------------------------
#============================ Share Definitions ==============================

全局配置Global Settings:

[global]
workgroup = MYGROUP #指定工作组
server string = Samba Server Version %v #服务器名说明
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24  指明要监听的地址或网络接口;、
hosts allow = 127. 192.168.12. 192.168.13.  #白名单
log file = /var/log/samba/log.%m #日志的记录位置
max log size = 50 #日志的大小,单位为K
security = user #基于用户安全认证
share (depricated) #废弃
server (depricated) #废弃
domain #域名
passdb backend = tdbsam #生成的帐号密码存在的数据库
load printers = yes
cups options = raw

共享文件系统Share Definitions:

[shared_ID]

有三类:

[homes]:每个samba用户是否能够通过samba服务访问其家目录;

[printers]:打印服务;

[shared_FS]:用户自定义的共享目录;

常用指令:

comment:注释信息;

path:本地文件系统路径;

browseable:是否可浏览,是否为用户可见;

guest ok:是否允许来宾账号访问;

public:是否公开给所有来宾;

writable:是否可写;

read only = no

write list:拥有写权限的用户或组列表;

用户名

@组名, +组名

自定义共享的方式:

[shared_ID]

comment =  #添加注释内容

path =  #添加要共享的文件路径

guest ok =  #是否允许来宾账号访问;

read only =  #只读也可以

public =  #

browseable =  #是否可以浏览

write list =  #有写权限的列表

注意:定义所用户在服务级的写权限write = yes (read only = no)不建议与write list同时使用;

3、samba用户管理:

smbpasswd, pdbedit

smbpasswd [OPTIONS] USERNAME

-a:添加

-x:删除

-d:禁用

-e:启用

pdbedit:

-L:列出samba服务中的所有用户;

-a:添加用户为samba用户;

-u USERNAME:

-x:删除

-t:从标准输出接收密码;

访问服务:

(1) smbclient交互式客户端程序:

(1) 查看目标服务上的共享

smbclient -L SMB_SERVER [-U USERNAME]

(2) 访问共享服务

smbclient //SMB_SERVER[/SHARE_NAME] [-U USERNAME]

(2)mount.cifs

mount -t cifs //SMB_SERVER/SHARED_ID  /MOUNT_POINT  -o username=USER,password=PASS

注意:挂载操作中的用户,与-o选项中指定的用户直接产生映射关系;访问挂载,是以-o选项指定的用户身份运行,与本地用户以ID产生映射;

4、smbstatus命令:

显示samba服务的相关共享的访问状态信息;

-b:显示简要格式信息;

-v:显示详细格式信息;

五、samba的搭建测试

1、一台linux主机安装samba作为服务端,客户端程序一般默认已经安装,主要安装服务程序即可

#yum install -y samba

2、配置smb.cof,在Share Definitions段下添加配置和需要共享的目录:

[windows]
    comment = windows
    path = /etc
    browseable = yes
    guest ok = yes
    writable = yes

使用testparm命令可以检查语法是否错误

[23:02 [email protected]~]# testparm 
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[windows]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
client signing = required
idmap config * : backend = tdb
cups options = raw
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
print ok = Yes
browseable = No
[windows]
comment = windows
path = /etc
read only = No
guest ok = Yes

启动samba服务

[23:10 [email protected]~]# service nmb start
Starting NMB services:                                     [  OK  ]
[23:10 [email protected]~]# service smb start
Starting SMB services:                                     [  OK  ]

添加一个samba帐号,并设置密码:

[23:16 [email protected]~]# useradd samba
[23:16 [email protected]~]# id samba
uid=505(samba) gid=505(samba) groups=505(samba)
[23:17 [email protected]~]# smbpasswd -a samba
New SMB password:
Retype new SMB password:
Added user samba.

3、在linux的客户机挂载测试:

[[email protected] ~]# yum install -y samba-client
[[email protected] ~]# mount.cifs //10.1.252.109/windows /mydata/samba/ -o username=samba,password=nihao
[[email protected] ~]# ls /mydata/samba/
abrt                     ethers            latrace.d         passwd-                       sasl2
acpi                     exports           ld.so.cache       pbm2ppa.conf                  scl
alsa                     favicon.png       ld.so.conf        pcmcia                        securetty
alternatives             fcoe              ld.so.conf.d      php.d                         security
anacrontab               festival          lftp.conf         php.ini                       services
anthy-conf               filesystems       libaudit.conf     pinforc                       sestatus.conf

4、在windows的客户机挂载测试:

这里需要注意权限的问题,默认的安全法则是把本机的root(linux系统)映射为nobody账户,同时要对文件有相关的权限,除了在配置文件中设置,也要满足samba服务端的本地文件系统的权限,另外samba是根据UID来进行权限确认,即客户端和服务端的samba帐号只要UID是相同的其权限也是相同的。

时间: 2024-10-16 14:21:12

linux架构学习第二十九天之samba文件共享服务的相关文章

linux架构学习第二十六天之LAMP架构原理及搭建详解

内容: 1.何为LAMP 2.LAMP的架构以及通信过程 3.LAMP的搭建过程(rpm包) 4.基于LAMP搭建wordpress博客 一.何为LAMP LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl.PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,LAMP具有通用.跨平台.高性能.低价格的优势,因

linux架构学习第二十五天HTTP协议详解

内容: 1.http协议概述 2.http协议特点 3.http的工作模式(过程) 4.http请求报文.响应报文格式.常见状态码解析 5.web资源概述(静态资源.动态资源) 1.http协议概述 http协议工作在TCP/IP模型的应用层,其定义web服务间通信的约定通信方式,HTTP基于tcp传送数据,默认是80端口(服务器端) 几个名词: http:hyper text transfer protocol,超文本传输协议,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(

linux架构学习第二十四天-DNS详解及bind搭建各种DNS测试

内容: 一.DNS 1.域名系统概述 2.域名的结构 3.域名服务器 4.域名解析过程 5.域名服务器的资源记录(resource record RR) 二.bind搭建DNS服务器 1.bind的安装 2.搭建DNS服务器 3.搭建主从DNS服务器 4.实现DNS子域 5.实现DNS视图view(智能DNS) 一.DNS 1.域名系统概述 域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址.域名系统其实就是名字系统.为什么

linux架构学习第二十六天之web服务搭建(apache)以及https的实现

内容: 1.httpd版本以及安装 2.httpd的配置文件详解 3.httpd的用户身份验证实现 4.httpd的虚拟主机的实现 5.https的通信过程以及实现演示 1.httpd版本以及安装 centos默认的httpd版本是2.2,而centos默认的httpd版本是2.4,这里演示的是centos6的httpd-2.2版本 安装的方式有两种,一个是rpm包安装,一个是编译安装,编译安装相关的配置文件需要手动设置,这里演示的是rpm包安装 httpd2.2和2.4的区别: 2.2的MPM

linux架构学习第二十七天 编译安装LAMP(php-fpm)

内容: 第一部分:编译安装LAMP(php以模块的方式工作) 第二部分:编译安装LAMP(php以fpm的方式工作) 第一部分: 前面介绍我们知道, apache + php结合的方式大概几种: 第一种:把php编译时直接编译成apache的模块.module模块化的方式进行工作 第二种:CGI.通用网关接口.apache基于CGI跟hph通信 第三种:fastcgi方式,他也是一种协议,在这种模块下他们两个是这样结合的: 本来php是做为一个模块或都是php解析器运行的,不是监听在某个套接字上

linux架构学习第二十八天之Mysql/MariaDB数据库入门

内容: 1.数据库简介以及mysql/mariadb背景介绍 2.数据库的一些名词 3.mysql的服务结构 4.mysql客户端的使用 5.数据类型 6.SQL语句介绍 7.mysql的事务机制 一.数据库简介以及mysql/mariadb背景介绍 数据可以存放在多种位置,如普通文件.专门的数据库中,而两者有什么区别,而为什么选择数据库存储?我们知道,假如数据存在普通文件中,当我们要查找其中的一个数据时,要把整个文件加载到内存中,再进行检索,这样速度慢不说,一旦文件较大,直接把内存撑爆了,而数

linux基础学习第十九天-系统启动流程(cenots6)以及配置系统服务(chkconfig)

内容:   CentOS 的启动流程   服务管理(chkconfig)   手动制定系统开机服务脚本 一.centos6系统启动流程 综述过程: POST-->BIOS(Boot Sequence)-->MBR(grub,446)-->Kernel-->initramfs(虚根文件)-->(ROOTFS)/sbin/init(/etc/inittab) 步骤详解: 1.POST: POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分.负责完

linux架构学习第二十八天之FTP协议以及vsftpd的使用

内容: 1.ftp协议 2.vsftpd的搭建及配置 一.FTP协议     1.FTP协议: FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".工作在第七层,而且是基于TCP协议传输数据. FTP工作原理与其它的应用协议有些不同.它是用两个端口进行通信的.一个端口用于命令交互.这个端口在用户连接之后一直保持:而另一个端口只是在数据传时打开(比如:上传文件,下载文件,获取服务端文件列表),在数据传输时有两种不同的模式,一是用户开

第二十九天 月出惊山鸟 —Spring的AOP_AspectJ @annotation

6月14日,阴转雨."四面垂杨十里荷,向云何处最花多, 画楼南畔夕阳和.天气乍凉人寂寞, 光阴须得酒消磨,且来花里听笙歌." 面向切面的框架AspectJ邂逅Spring,不仅造就一种简洁,更带来更多的选择空间. 上篇的切面与代理配置方式,麻烦且繁琐.好在Spring 与 AspectJ 进行了集成,从接口和配置的泥潭爬出,善莫大焉. 下面把上一篇Spring的AOP 的例子改写一下,达到同样的效果. 1-3步骤不变. 4.定义一个 Aspect 切面类BallHandler.java