Samba网络文件共享服务

一、samba简介

Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。后来微软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得Samba具有了更强大的功能。

Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。

使用samba和windows共享文件时候,请确保windows的NetBIOS(就是网上邻居功能)开启了。

Samba组成

一个samba服务器实际上包含了两个服务器程序:smbd和nmbd。

Smbd是samba的核心。它负责建立对话进程、验证用户身份、提供对文件系统和打印机的访问机制,只有smb服务启动,才能实现文件的共享。【TCP 445】

Nmbd实现了“Network Brower”(网络浏览服务器)的功能,实现NETBIOS(本地名称解析)功能【UDP137/138TCP 139】,如果该服务没有启动,则客户端不能通过Linux系统共享的工作组名称访问共享文件,而只能通过IP地址来访问共享的文件。

Samba还包含了一些实用工具。Smbclient是一个SMB客户工具,有shell-based用户界面并同FTP有些类似。应用它可以复制其它的SMB服务器资源,还可以访问其它SMB服务器提供的打印机资源。

二、samba的配置

# 安装samba

yuminstall samba samba-client samba-common samba-swat -y

说明:光盘源里面已有samba4版本的软件包,这里没有进行安装测试,仍然用的samba3.6版本的。

samba:主要提供了 SMB 服务器所需的各项服务程序 (smbd 及 nmbd)、的文件档、以及其他与 SAMBA 相关的 logrotate 配置文件及开机默认选项档案等;

samba-client:提供了当 Linux 做为 SAMBA Client 端时,所需要的工具指令,例如挂载 SAMBA 文件格式的 mount.cifs、取得类似网芳相关树形图的 smbtree 等等;

samba-common:提供服务器与客户端都会使用到的数据,包括 SAMBA 的主要配置文件 (smb.conf)、语法检验指令 (testparm) 等等;

启动脚本:

/etc/rc.d/init.d/nmb  start|stop|restart|status

/etc/rc.d/init.d/smb  start|stop|restart|status

日志文件目录:

/var/log/samba/

配置文件目录/etc/samba/:

smb.conf: 这是 Samba 的主要配置文件,主要由3个标准节[global]、[homes]、[printers]和若干个自定义的共享节组成。【grep -v "^#" /etc/samba/smb.conf|grep -v"^$"|grep -v "^;"】

[Global]节:定义Samba服务器的全局参数,与Samba服务整体运行环境紧密相关。

[Homes]节:定义共享用户主目录。

[Printers]节:定义打印机共享。

[自定义目录名]节:定义用户自定义的共享目录。

smbusers: 由于 Windows 与 Linux 在管理员与访客的账号名称不一致,例如: administrator (windows) 及 root(linux), 为了对应这两者之间的账号关系,可使用这个档案来设定

lmhosts: 早期的 NetBIOS name 需额外设定,现在基本上用不到了。

# 配置smb配置文件

vi/etc/smaba/smb.conf

暂时先这样简单的配置下,后面会有更严格的权限设置
security = share      #share免密码
[Discuz]
comment = Discuz datas
path = /web/discuz           #建议修改/web/discuz为nobody:nobody防止远程权限不够
public = yes
browseable = yes         #指定共享目录是否可浏览,默认为yes
writeable = yes          #指定共享目录是否可写,默认为no
guest ok = yes           #指定是否允许guest帐号访问

说明:

workgroup = WORKGROUP
说明:设定 SambaServer 所要加入的工作组或者域。server string = Samba Server Version %v
说明:设定 SambaServer 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。netbios name = smbserver
说明:设置SambaServer的NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分。netbios name和workgroup名字不要设置成一样了。interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
说明:设置SambaServer监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。hosts allow = 127. 192.168.1. 192.168.10.1
说明:表示允许连接到SambaServer的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。hosts deny 与hosts allow 刚好相反。
例如:hostsallow=172.17.2.EXCEPT172.17.2.50
表示容许来自172.17.2.*的主机连接,但排除172.17.2.50
hosts allow=172.17.2.0/255.255.0.0
表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接
hosts allow=M1,M2
表示容许来自M1和M2两台计算机连接
hosts allow=@pega
表示容许来自pega网域的所有计算机连接max connections = 0
说明:maxconnections用来指定连接Samba Server的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制。deadtime = 0
说明:deadtime用来设置断掉一个没有打开任何文件的连接的时间。单位是分钟,0代表Samba Server不自动切断任何连接。time server = yes/no
说明:timeserver用来设置让nmdb成为windows客户端的时间服务器。log file = /var/log/samba/log.%m
说明:设置SambaServer日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每台访问Samba Server的机器都单独记录一个日志文件。如果pc1、pc2访问过Samba Server,就会在/var/log/samba目录下留下log.pc1和log.pc2两个日志文件。
max log size = 50
说明:设置SambaServer日志文件的最大容量,单位为kB,0代表不限制。security = user
说明:设置用户访问SambaServer的验证方式,一共有四种验证方式。
1. share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。
2. user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。
3. server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用 Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。
4. domain:域安全级别,使用主域控制器(PDC)来完成认证。passdb backend = tdbsam
说明:passdbbackend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam应该是security account manager(安全账户管理)的简写。
1.smbpasswd:该方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。
2.tdbsam:该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。pdbedit命令的参数很多,我们列出几个主要的。
pdbedit –a username:新建Samba账户。
pdbedit –x username:删除Samba账户。
pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit –Lv:列出Samba用户列表的详细信息。
pdbedit –c “[D]” –u username:暂停该Samba用户的账号。
pdbedit –c “[]” –u username:恢复该Samba用户的账号。
3.ldapsam:该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”encrypt passwords = yes/no
说明:是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。不过配置文件默认已开启。smb passwd file = /etc/samba/smbpasswd
说明:用来定义samba用户的密码文件。smbpasswd文件如果没有那就要手工新建。username map = /etc/samba/smbusers
说明:用来定义用户名映射,比如可以将root换成administrator、admin等。不过要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆SambaServer,更贴近windows用户的习惯。guest account = nobody
说明:用来设置guest用户名。socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
说明:用来设置服务器和客户端之间会话的Socket选项,可以优化传输速度。domain master = yes/no
说明:设置Samba服务器是否要成为网域主浏览器,网域主浏览器可以管理跨子网域的浏览服务。local master = yes/no
说明:localmaster用来指定Samba Server是否试图成为本地网域主浏览器。如果设为no,则永远不会成为本地网域主浏览器。但是即使设置为yes,也不等于该Samba Server就能成为主浏览器,还需要参加选举。preferred master = yes/no
说明:设置SambaServer一开机就强迫进行主浏览器选举,可以提高Samba Server成为本地网域主浏览器的机会。如果该参数指定为yes时,最好把domain master也指定为yes。使用该参数时要注意:如果在本Samba Server所在的子网有其他的机器(不论是windows NT还是其他Samba Server)也指定为首要主浏览器时,那么这些机器将会因为争夺主浏览器而在网络上大发广播,影响网络性能。
如果同一个区域内有多台SambaServer,将上面三个参数设定在一台即可。os level = 200
说明:设置samba服务器的os level。该参数决定SambaServer是否有机会成为本地网域的主浏览器。os level从0到255,winNT的os level是32,win95/98的os level是1。Windows 2000的os level是64。如果设置为0,则意味着Samba Server将失去浏览选择。如果想让Samba Server成为PDC,那么将它的os level值设大些。domain logons = yes/no
说明:设置Samba Server是否要做为本地域控制器。主域控制器和备份域控制器都需要开启此项。logon script = %u.bat
说明:当使用者用windows客户端登陆,那么Samba将提供一个登陆档。如果设置成%u.bat,那么就要为每个用户提供一个登陆档。如果人比较多,那就比较麻烦。可以设置成一个具体的文件名,比如start.bat,那么用户登陆后都会去执行start.bat,而不用为每个用户设定一个登陆档了。这个文件要放置在[netlogon]的path设置的目录路径下。wins support = yes/no
说明:设置samba服务器是否提供wins服务。wins server = wins服务器IP地址
说明:设置SambaServer是否使用别的wins服务器提供wins服务。wins proxy = yes/no
说明:设置SambaServer是否开启wins代理服务。dns proxy = yes/no
说明:设置SambaServer是否开启dns代理服务。load printers = yes/no
说明:设置是否在启动Samba时就共享打印机。printcap name = cups
说明:设置共享打印机的配置文件。printing = cups
说明:设置Samba共享打印机的类型。现在支持的打印系统有:bsd, sysv, plp, lprng, aix, hpux, qnx

samba共享权限说明:

共享目录的权限不仅与smb.conf文件中设定的共享权限有关,而且还与其本身的文件系统权限有关。Linux规定:Samba共享目录的权限是文件系统权限与共享权限中最严格的那种权限。

testparm                    #测试smb.conf语法是否有错误

service smbrestart          # 重启服务

在本机上执行smbclient -L//192.168.2.10查看是否已经共享成功。

命令格式:

smbclient [-L NetBIOS名|IP地址] 共享资源路径 -U 用户名【说明:无密码登陆时,可以省略-U用户名】

smbclient//192.168.2.10/discuz 命令查看能否看到文件

在smb:\>界面执行 ?可以列出smb命令行支持的命令有哪些。

客户端如果需要挂载共享文件的话,执行mount-t cifs //192.168.2.10/discuz /webfiles/

df -hP命令可以查看是否挂载成功。

在Windows下执行\\192.168.2.10也能查看到,如下图:

改进版

Discuz为论坛文件目录,应禁止其它人访问。

# 添加几个可以远程访问本机共享目录的账户

useradd -s /sbin/nologin server1
useradd -s /sbin/nologin server2
useradd -s /sbin/nologin mysql
smbpasswd -a server1               # 这里演示的,密码都设置为123456
smbpasswd -a server2               # 这里演示的,密码都设置为123456
smbpasswd -a mysql                 # 这里演示的,密码都设置为123456

# 编辑smb.conf设置共享目录访问权限:

hosts allow = 127.0.0.1 192.168.7  192.168.2.11  192.168.2.12
[Discuz]
comment = Discuz datas
path = /web/discuz
public = yes
browseable = yes
writeable = yes
valid users = @server1,@server2,@mysql              # 注意在原来的基础上增加了这条

复制

# 挂载测试

# 在其它的虚拟机上执行挂载测试    【注意: -o username=用户名%密码】
mount -t cifs //192.168.2.10/discuz /webfiles/ -o username=mysql%123456

复制

补充,smbpasswd命令:

格式:smbpasswd[选项] [用户名]
几个常用选项:
-a 用户名        增加samba用户
-d 用户名        暂时锁定指定的samba用户
-e 用户名        解锁指定的samba用户
-n 用户名        设置指定的samba用户无密码
-x 用户名        删除samba用户
无选项时可修改已有的samba用户的密码。

复制

更多有关Samba的高级的使用方法请参考:

  1. 1. http://www.cnblogs.com/mchina/archive/2012/12/18/2816717.html
  2. 2. http://blog.csdn.net/mybluetiankong/article/details/20525263

Samba网络文件共享服务介绍相关推荐

  1. Linux实战教学笔记22:企业级NFS网络文件共享服务

    第二十二节 企业级NFS网络文件共享服务 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载 ...

  2. (转)企业级NFS网络文件共享服务

    企业级NFS网络文件共享服务 原文:http://www.cnblogs.com/chensiqiqi/archive/2017/03/10/6530859.html --本教学笔记是本人学习和工作生 ...

  3. 28 网络文件共享服务

    文章目录 网络文件共享服务 本章内容 存储类型 FTP服务 NFS服务 SAMBA服务 网络数据同步 1 存储类型 存储类型分为三种 1.1 DAS存储 1.2 NAS存储 但NAS有一个关键性问题, ...

  4. Linux网络文件共享服务(一)存储类型和文件传输协议FTP

    成功不易,加倍努力! 网络文件共享服务 本章总目录 1 存储类型 1.1 DAS存储 1.2 NAS存储 1.3 SAN存储 1.4 三种存储比较 2 文件传输协议 FTP 2.1 FTP工作原理介绍 ...

  5. NFS网络文件共享服务

    NFS网络文件共享服务 1.1 NFS介绍 1)什么是NFS? NFS是Network File System的缩写,中文意思是网络文件系统.它的主要功能是通过网络(一般是局域网)让不同的主机系统之间 ...

  6. 【内网穿透服务器】公网环境访问内网服务器(以使用samba(smb)文件共享服务为例)

    公网环境访问内网服务器,以使用samba(smb)文件共享服务为例 Frp 挂载 Frp SSH端口 访问 访问 samba Linux cifs Windows Winscp等客户端 SFTP协议登 ...

  7. Linux 网络文件共享服务详细介绍

    Linux 网络文件共享介绍 一.常见的存储类型 1.1 DAS 类型的存储 1.2 NAS 类型的存储 1.3 SAN 类型的存储 1.4 三种存储类型的比较 二.文件传输协议 FTP 2.1 FT ...

  8. 23.网络文件共享服务

    文章目录 1 存储类型 1.1 DAS存储 1.2 NAS存储 1.3 SAN存储 1.4 三种存储比较 2 FTP 文件传输协议 2.1 FTP工作原理介绍 2.2 常见 FTP 相关软件 2.3 ...

  9. Samba(文件共享服务)

    系统版本:CentOS7.X 概念 Samba是Linux上用于局域网内文件和打印机共享的一个软件.Samba相对vSFTP传输效率较好,但是安全性较低.Samba支持NetBios协议,可以让Win ...

最新文章

  1. C语言指针高级部分:void指针和数据指针
  2. 快速排序算法QuickSort(二)
  3. SHT知识库操作要点
  4. php 扩展 返回字符串,基于PHP7的PHP扩展开发之四(字符串的处理)
  5. Unicode编码 转载 侵权删
  6. Postfix无法在centos上启动
  7. delphi webservice 如何 共享 变量_医疗质量|如何实现非药物医嘱闭环管理?
  8. 3.支付平台架构:业务、规划、设计与实现 --- 支付后端技术实战
  9. 在线luhn算法 php,Luhn算法说明及PHP实现
  10. OpenCV身份证离线识别技术实战(一)
  11. eclipse maven jersey项目搭建
  12. 移动端IOS自动化测试框架搭建-无坑
  13. 基于SSM的校园订餐管理系统
  14. 日语翻译中文-大家都再用的日语转换中文的转换器
  15. CMMB手机电视到了芯片企业创新的时侯
  16. 运放失调电压和开环增益,PSRR,CMRR的关系
  17. 正态分布、对数正态分布参数(mu, sigma)与数据本身均值方差(m, v)的关系
  18. Python全量字段校验
  19. PHPMyWind支持PDF粘贴
  20. 四川嘉弘恒信:拼多多店铺广告主怎么开

热门文章

  1. Excel计算Fleiss Kappa分数
  2. JS观察者模式和发布订阅模式的区别
  3. SAP 从零起步之 1.3 定义会计年度变式
  4. springboot+html图书借阅管理
  5. 成功解决 PL/SQL Developer 报错 ORA-00911: invalid character
  6. C# 报错ORA-00911: invalid character
  7. 浅谈物联网中的信息安全
  8. Git关联远程仓库和分支
  9. 蓝桥杯2022年第十三届省赛真题-积木画
  10. TuSimple数据集格式标注自己的数据集