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

简介:

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用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主目录中


  具体配置参数:   

1
2
3
4
5
6
7
8
9
10
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命令

1
testparm


web界面配置samba:

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


Samba访问方式:作为客户端

  交互式数据访问:

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

  基于挂载的方式访问:

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


smbpasswd命令:

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

  -d:禁用用户帐号

  -e:启用用户帐号

  -x:删除用户帐号


Samba示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#使用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










本文转自 忘情OK  51CTO博客,原文链接:http://blog.51cto.com/itchentao/1929471,如需转载请自行联系原作者
目录
相关文章
|
9月前
|
机器学习/深度学习 存储 监控
内部文件审计:企业文件服务器审计对网络安全提升有哪些帮助?
企业文件服务器审计是保障信息安全、确保合规的关键措施。DataSecurity Plus 是由卓豪ManageEngine推出的审计工具,提供全面的文件访问监控、实时异常告警、用户行为分析及合规报告生成功能,助力企业防范数据泄露风险,满足GDPR、等保等多项合规要求,为企业的稳健发展保驾护航。
255 0
|
10月前
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
480 61
|
Ubuntu 网络协议 Unix
02理解网络IO:实现服务与客户端通信
网络IO指客户端与服务端通过网络进行数据收发的过程,常见于微信、QQ等应用。本文详解如何用C语言实现一个支持多客户端连接的TCP服务端,涉及socket编程、线程处理及通信流程,并分析“一消息一线程”模式的优缺点。
478 0
|
11月前
|
网络协议 安全 Devops
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
Infoblox DDI (NIOS) 9.0 - DNS、DHCP 和 IPAM (DDI) 核心网络服务管理
434 4
|
12月前
|
机器学习/深度学习 人工智能 安全
从攻防演练到AI防护:网络安全服务厂商F5的全方位安全策略
从攻防演练到AI防护:网络安全服务厂商F5的全方位安全策略
318 8
|
安全 网络协议 网络安全
【Azure APIM】APIM服务配置网络之后出现3443端口不通,Management Endpoint不健康状态
如果没有关联的网络安全组,则阻止所有网络流量通过子网和网络接口。
334 30
|
云安全 人工智能 安全
公共云网络安全即服务!阿里云稳居市占率第一!
公共云网络安全即服务!阿里云稳居市占率第一!
|
算法 安全 网络安全
网络安全服务
机密主要利用密码学技术加密文件实现,完整主要利用验证码/Hash技术,可用**主要灾备来保障。 网络环境下的身份鉴别,当然还是依托于密码学,一种可以使用口令技术,另一种则是依托物理形式的鉴别,如身份卡等。其实更为安全的是实施多因子的身份认证,不只使用一种方式。数字签名可以用来保证信息的完整性,比如RSA就可以用于数字签名: 若A向B发送信息m则先用自己的保密密钥(私钥)对m加密,然后用B的公钥第二次加密,发送个B后,B先用自己的私钥解密一次,再用A的公钥解密即可。 Kerberos使用对称密码算法来实现通过可信第三方密钥分发中心的认证服务,已经成为工业界的事实标准。
259 3
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
399 17
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
308 10