• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

Linux服务:Samba文件共享

网络服务 彭东稳 9年前 (2015-09-25) 28600次浏览 已收录 2个评论

一、Samba介绍

Samba是在LinuxUNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMBServer Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

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

既然有这样的问题,可不可以在 Client 端的机器上面直接取用Server 上面的档案,如果可以在 Client 端直接进行 Server 端档案的存取,那么在Client 端就不需要存在该档案数据,也就是说,只要有 Server 上面的档案资料存在就可以!有没有这样的档案系统( File System )?很高兴的是,NFS(NetworkFile System)就是这样的档案系统之一!我只要在 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这部机器也能够分享档案数据呢?为了解决这样的的问题,这老兄就自行写了个程序去侦测当 DOS DEC Unix 系统在进行数据分享传送时所使用到的通讯协议信息,然后将这些重要的信息撷取下来,并且基于上述所找到的通讯协议而开发出ServerMessage Block (SMB) 这个系统,而就是这套 SMB软件能够让 Unix DOS 互相的分享数据!

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

二、安装Samba

Samba-common:这个套件则主要提供了 SAMBA 的主要设定档(smb.conf) smb.conf 语法检验的测试程序 ( testparm )等等。

samba:这个套件主要包含了 SAMBA 的主要 daemon档案 ( smbd nmbd ) SAMBA 的文件档 ( document )、以及其它与 SAMBA 相关的logrotate 设定文件及开机预设选项档案等。

samba-client:这个套件则提供了当 Linux 做为SAMBA Client 端时,所需要的工具指令,例如挂载 SAMBA 档案格式的执行档 smbmount等等。

三、Samba用户

Samba用户必须是系统用户但密码是Samba密码。

或者

Samba账户设置别名(/etc/samba/smbusers

四、Samba配置文件

启动服务

五、Linux挂载Samba共享

需要注意的是挂在端也需要安装cifs相关的文件系统包

Linux开机自动挂载samba共享

Linux挂载windows共享

六、免密码版

上面都是设置密码,安全访问模式。有时候你可能需要免密码访问,本人是碰到不同Linux内核版本导致有用户密码模式下总是无法挂载成功,后来就使用免密码模式。共享目录基本配置如下:

然后客户端挂载的时候需要注意,比如:

还是会出现让输入密码的交互模式,你一回车就会挂载上了。有没有办法去掉这个输出呢?再加一个password参数就ok了。

CIFS协议在我的使用过程中还是比较稳当和性能不错的,我经常拿来作为数据库备份目录挂载。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (0)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!

(2)个小伙伴在吐槽
  1. 楼主 如果我电脑是域环境 比如test.com\zhangsan 那么linux主机应该如何挂载Windows上的共享文件呢?按照如下方式一直报错 [root@localhost ~]# mount -o username=chenli6@kingsoft.cn //192.168.39.50/share /mnt Password: Retrying with upper case share name mount error(6): No such device or address Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) [root@localhost ~]# mount -o username=CHENLI6@kingsoft.cn //192.168.39.50/share /mnt Password: Retrying with upper case share name mount error(6): No such device or address Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) [root@localhost ~]# mount -o username=administrator //192.168.39.50/share /mnt Password: mount error(13): Permission denied Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) [root@localhost ~]# mount -o username=Administrator //192.168.39.50/share /mnt Password: mount error(13): Permission denied
    阿立2018-11-02 12:33 Windows 7 | Chrome 68.0.3440.106
    • 域有什么特殊性我也不太清楚,都很成熟的东西了,借助搜索引擎试试看
      彭东稳2018-11-02 13:18 Mac OS X | Chrome 69.0.3497.100