第十一章网络文件共享服务之samba

author author     2022-09-01     619

关键词:

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。

在此之前我们已经了解了NFS和FTP,NFS与samba一样,也是在网络中实现文件共享的一种实现,但不幸的是,其不支持windows平台,而本章要提到的samba是能够在任何支持SMB协议的主机之间共享文件的一种实现,当然也包括windows。


SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

SMB协议是C/S型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网主机分享资源,还能与全世界的电脑分享资源。


Samba监听端口有:

  tcp的139,445号端口

  udp的137,138号端口


tcp端口相对应的服务是smbd服务,其作用是提供对服务器中文件、打印资源的共享访问

udp端口相对应的服务是nmbd服务,其作用是提供基于NetBIOS主机名称的解析


Samba服务脚本:

  /etc/rc.d/init.d/nmb

  /etc/rc.d/init.d/smb


Samba进程:

  nmbd:对应netbios

  smbd:对应cifs协议

  winbindd + ldap:对应Windows AD活动目录


Samba用户:

  帐号:都是系统用户,/etc/passwd

  密码:Samba服务自有密码文件,通过smbpasswd -a USERNAME命令设置


Samba安全级别:

  Samba服务器的安全级别有四个,分别是share,user,server,domain

  share:表示匿名访问

  user:表示基于本地的验证

  server:表示由另一台指定的服务器对用户身份进行认证

  domain:表示由域控进行身份验证


Samba配置文件:/etc/samba/smb.conf

  Samba主配置文件的配置内容默认包含三个部分,分别是[global]全局配置、[homes]宿主目录共享设置、[printers]打印机共享设置

  [global]全局配置的设置项对整个samba服务器都有效

  [homes]则用来设置Linux用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主目录中


  具体配置参数:   

workgroup    #表示设置工作组名称;
server string  #表示描述samba服务器;
security     #表示设置安全级别,其值可为share、user、server、domain;
passdb backend #表示设置共享帐户文件的类型,其值可为tdbsam(tdb数据库文件)、ldapsam(LDAP目录认证)、smbpasswd(兼容旧版本samba密码文件);
comment      #表示设置对应共享目录的注释,说明信息,即文件共享名;
browseable    #表示设置共享是否可见;
writable     #表示设置目录是否可写
path         #表示共享目录的路径;
guest ok    #表示设置是否所有人均可访问共享目录;
printable    #表示设置是否为打印机

  测试配置文件是否有语法错误,以及显示最终生效的配置:使用testparm命令

testparm


web界面配置samba:

  samba-swat包提供了在web界面上配置samba的功能,其自带web服务,默认端口为901,通过xinetd来管理


Samba访问方式:作为客户端

  交互式数据访问:

smbclient -L HOST -U USERNAME
smbclient //SERVER/shared_name -U USERNAME

  基于挂载的方式访问:

mount -t cifs //SERVER/shared_name -o username=USERNAME,password=PASSWORD


smbpasswd命令:

  -a Sys_User:添加系统用户为samba用户并为其设置密码

  -d:禁用用户帐号

  -e:启用用户帐号

  -x:删除用户帐号


Samba示例:

#使用yum命令安装samba服务器:
yum -y install samba-*

#配置selinux安全机制(去除26行与29行的#号):
sed -i ‘26d‘ /etc/samba/smb.conf
sed -i ‘25 a setsebool -P samba_domain_controller on‘ /etc/samba/smb.conf
sed -i ‘29d‘ /etc/samba/smb.conf
sed -i ‘28 a setsebool -P samba_enable_home_dirs on‘ /etc/samba/smb.conf
#这两行生效后,自己的home目录就可以正常读写了。

#如果想将/test目录设置成完全的共享就要改变文件目录的selunux:
#chcon -t samba_share_t /test

#设置共享类型,有匿名访问,有本地用户验证,默认为user用户验证:
#设置为匿名共享:
#sed -i ‘101d‘ /etc/samba/smb.conf
#sed -i ‘100 a security = share‘ /etc/samba/smb.conf
#设置为本地用户验证:
#sed -i ‘101d‘ /etc/samba/smb.conf
#sed -i ‘100 a security = user‘ /etc/samba/smb.conf
#设置为另一台服务器进行远程验证:
#sed -i ‘101d‘ /etc/samba/smb.conf
#sed -i ‘100 a security = server‘ /etc/samba/smb.conf
#设置为域控验证:
#sed -i ‘101d‘ /etc/samba/smb.conf
#sed -i ‘100 a security = domain‘ /etc/samba/smb.conf

#假设现在有一个文件夹为test,那么就像下面这样来设置共享:
#设置共享的标识:
echo ‘[test]‘ >> /etc/samba/smb.conf

#设置共享的显示名,即在访问时看到的共享名,假设这里共享名为test:
echo ‘comment = test‘ >> /etc/samba/smb.conf

#设置共享路径:
echo ‘path = /test‘ >> /etc/samba/smb.conf

#设置共享是否可见:
echo ‘browseable = yes‘ >> /etc/samba/smb.conf

#设置是否所有人均可访问:
echo ‘guest ok = yes‘ >> /etc/samba/smb.conf

#设置目录是否可写:
echo ‘writable = yes‘ >> /etc/samba/smb.conf

#设置是否允许匿名用户访问:
echo ‘public = yes‘ >> /etc/samba/smb.conf

#设置可以写的用户或组:
echo ‘write list = root,@root‘ >> /etc/samba/smb.conf

#限制访问端:
#设置可以访问的用户或组:
echo ‘valid users = root,@root‘ >> /etc/samba/smb.conf

#设置拒绝来自192.168.72.1的用户访问:
echo ‘hosts deny = 192.168.72.1‘ >> /etc/samba/smb.conf

#设置允许来自192.168.72.2的用户访问:
echo ‘hosts allow = 192.168.72.2‘ >> /etc/samba/smb.conf

#映射共享目录:
#创建用户one:
#useradd one
#为one用户创建smb共享密码:
#smbpasswd -a one

#假设这里映射one用户为aaa用户,那么就要在/etc/samba/smbusers文件中添加如下内容:
#echo ‘one = aaa‘ >> /etc/samba/smbusers

#在全局配置中添加如下内容:
sed -i ‘244 a username map = /etc/samba/smbusers‘ /etc/samba/smb.conf

#启动smb服务:
#service smb start

#重启smb服务:
service smb restart

#重新加载smb服务:
#service smb reload

#设置smb服务随系统启动而启动:
chkconfig smb on

#建立共享文件夹:
mkdir /test


本文出自 “忘情居” 博客,请务必保留此出处http://itchentao.blog.51cto.com/5168625/1929471

第十一章

由于Linux驱动可能使用全局数据(也称为共享数据〉,如果同时对这些共享数据进行读写,可能会出现脏数据,这就要求Linux驱动具有控制对其字数据访问的能力,例如,在读共享数据时不能修改共享数据;不能同时菁两个或两... 查看详情

网络操作系统第十十一章习题

  第十章习题1.什么是域名系统?描述域名解析的过程。  答:域名系统用于实现IP地址和主机名之间的映射。域名解析过程(1)DNS客户机提出域名解析请求,并将该请求发给本地的域名服务器(2)当本地的域名服务器接收... 查看详情

构建之法第十一章读后感

本周进行了构建之法的第十一章软件设计与实现的学习;第十一章主要讲了典型的开发流程,常见的分析和设计方法:ERD,DFD,UML,开发阶段的一些管理方法:每日构建,小强地狱,构建大师;分析和设计方法包括以文字为主的... 查看详情

第十一章心得体会

通常一个Linux驱动并不是为某个特定的用户空间程序编写的。调用Linux驱动的程序可能会很多,也很有可能会有很多程序同时对Linux驱动进行读、写等操作。由于Linux驱动可能使用全局数据(也称为共享数据〉,如果同时对这些共... 查看详情

构建之法第十十一章

一、动作类游戏(ACT)  玩家控制游戏人物以各种方式技巧、利用各种武器工具等消灭敌人或保全自己或完成游戏任务来过关的游戏。动作类游戏大体分为2D、2.5D、3D三类。  特点:  1.这类游戏讲究打击的爽快感和流畅的游... 查看详情

rhel7--第十一章

使用Vsftpd服务传输文件文件传输协议1:FTP文件传输协议——为了解决各种复杂多样的系统之间在网络中的文件传输问题而诞生的;FTP协议基于客户端/服务器模式;默认端口:20  2120:进行数据传输;21:接受客户端发出... 查看详情

第十一章——训练深度神经网络

上一章我们训练了一个浅层神经网络,只要两个隐层。但如果处理复杂的问题,例如从高分辨率图像中识别上百种类的物品,这就需要训练一个深度DNN。也行包含十层,每层上百个神经元,几十万个连接。这绝不是闹着玩的:首... 查看详情

第十一章网络编程

每个网络应用都是基于客户端-服务端模型的。根据这个模型,一个用用是由一个服务器和一个或多个客户端组成的。服务器管理资源,以某种方式操作资源,为客户端服务。例如,一个Web服务器管理着一组磁盘文件,它会代表... 查看详情

第十一章_文件下载

11.1、文件下载概述1、将响应的内容类型设置为文件的内容类型。标头Content-type用来规定实体主体中的数据类型,包括媒体类型和子类型标识符。2、加入一个名为Content-Disposition的HTTP响应头,给它赋值attachment;filename=filename,这... 查看详情

第十一章

因为是手机上传,有些图没有上传好,晚上回去重新弄。 查看详情

我的学习之路_第十一章_字符流

【字符流】IO流的分类★字节流操作的文件不是文本文件字节输入流:InputStream抽象类FileInputStream操作文件的字节输入流字节输出流:OutputStream抽象类FileOutputStream操作文件的字节输出流★字符流 操作的文件是文本文件 字符输入流:Re... 查看详情

深入理解计算机系统第十一章网络编程

 每个网络应用都是基于客户端-服务器模型的。根据这个模型,一个应用是由一个服务器和一个或多个客户端组成的。服务器管理资源,以某种方式操作资源,为它的客户端提供服务。客户端-服务器模型中的基本操作是客户... 查看详情

第十一章:线程(代码片段)

 多进程在代码中并不多见,因为它有很大的局限性,如分配大量资源、进程的PID个数有限等。现在更多地是使用多线程实现代码并发。一、线程的概念线程是一种轻量级的代码并发技术,对资源的要求较小。线程隶属于某个... 查看详情

第十一章练习压缩和远程传输文件

<<<第十二单元练习>>>在server主机中把/etc目录打包压缩到/mnt中,名字为etc.tar.gztar zcvf /mnt/etc.tar.gz /etc2.复制server主机中的etc.tar.gz到desktop主机的/mnt中 scp /mnt/etc.tar.gz[email pr 查看详情

第十十一章

第十章典型用户和场景 1、典型用户的模版Persona/典型用户 (1)名字(越自然越好) (2)年龄(不同年龄和收入的用户有不同的需求) (3)收入 (4)代表的用户在市场上的比例和重要性(比例大不等同于... 查看详情

第十一章django框架学习——cookie和session

第十一章Django框架学习——Cookie和session 一、Cookie简介二、装饰器版登录校验三、session简介四、如何在CBV中使用装饰器 一、Cookie简介什么是Cookie(what):Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上... 查看详情

操作系统第十一章文件系统的实现

文件系统的实现文件控制块 设备驱动和中断处理硬件指令 注意:不同的产商,硬件指令不同 由逻辑系统让大家看到的东西  设备层处理来自I/O控制层的指令逻辑文件系统 文件控制块FCBFileControlBlock虚拟文... 查看详情

网络文件共享服务-samba(代码片段)

...简介SMB:ServerMessageBlock服务器消息块,IBM发布,最早是DOS网络文件共享协议Cifs:commoninternetfilesystem,微软基于SMB发布SAMBA:1991年AndrewTridgell,实现windows和UNIX相通SAMBA的功能:共享文件和打印,实现在线编辑实现登录SAMBA用户的身份... 查看详情