深入浅出Samba服务

给自己起了一个大言不惭的标题。希望能给众位读者一起启发吧。不过我本文基本上是按照Redhat Enterprise Linux 5来说的,如果你发现跟我描述的不一样,只能自己去网上搜一些相关资料了。

首先抄一段维基百科上面的定义,其实主要就是说这个是用来设置Windows共享服务用的。官网在这里

Samba服务简介

Samba,是种用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协定做连结的自由软件。目前的版本(v3)不仅可存取及分享SMB的资料夹及打印机,本身还可以整合入Windows Server的网域,扮演为网域控制站(Domain Controller)以及加入Active Directory成员。简而言之,此软件在Windows与UNIX系列OS之间搭起一座桥梁,让两者的资源可互通有无。

Samba是许多服务以及协议的实现,其包括TCP/IP上的NetBIOS(NBT)、SMB、CIFS(SMB的增强版本)、 DCE/RPC或者更具体来说MSRPC(網絡鄰居协议套件)、一种WINS服务器(也被称作NetBIOS Name Server(NBNS))、NT 域协议套件(包括NT Domain Logons、Secure Accounts Manager(SAM)数据库、Local Security Authority(LSA)服务、NT-style打印服务(SPOOLSS)、NTLM以及近来出现的包括一种改进的Kerberos协议与改进的轻型目录访问协议(LDAP)在内的Active Directory Logon服务)。以上这些服务以及协议经常被错误地归类为NetBIOS或者SMB。Samba也能够用于共享打印机。

Samba能够为选定的Unix目录(包括所有子目录)建立网络共享。该功能使得Windows用户可以像访问普通Windows下的文件夹那样来通过网络访问这些Unix目录。Samba之所以能够与Windows共享并不是首先因为Windows专门开发了支持他的软件,而是他整合了自己开发的SMB(Server Message Block,服务器信息模块)和微软的NetBIOS协议。但是到了Windows 95开始微软就开始在操作系统中提供支持客户机和服务器SMB协议。微软还提供了CIFS(通用Internet文件系统)。

Samba服务功能

  • 首先提供与Windows 操作系统网络的文件和打印机共享。
  • 提供FTP命令行操作(smbclient)
  • 可以用Windows的NetBIOS名字服务器解析IP地址

Samba服务安装

首先要确定自己是否已经安装了这个,可以通过下面的命令来检查

rpm –qa|grep samba

一般都是会提示已经安装Client和Common包。但是还要是让Windows访问还是要安装主程序,如果提示not install就要安装所有的了。

如果你已经可以正常上网的话只需要yum安装就可以了,但是Redhat一般都是用作服务器有些还不是允许上网的,就要安装下面的这些软件了。

    root@sample ~]# yum -y install samba
  • Samba。服务主文件
  • samba-common。 Samba的配置文件的支持。
  • samba-Client。客户端软件,主要是提供smbclient命令支持。
  • perl。perl(Convert::ASN1)环境软件,有时候你装Samba的时候提示依赖性错误的时候可以检查一些这个是否安装上。
  • rpmdb。有时候Fedora装不上的时候可以检查是不是安装了这个rpm包。
  • samba-config。Samba的图形化配置界面。

Samba的主文件也位于Redhat 第二张光盘中,挂在到mnt目录下,然后输入

rpm –ivh /mnt/Server/samba-3.0.23c-i386.rpm

就可以安装了。

至于源代码安装这次我就不讲了,大家有兴趣可以去他的官网去看下。

Samba服务配置

安装完毕以后的Samba的主要配置文件密码文件等都是在/etc/samba目录下,配置文件为smb.conf,运行vi或是vim就可以查看。/etc/samba/smbpasswd主要是放用户的samba密码。

Samba用户创建

Samba账号类似于VNC账号,不能像ftp用户一样直接创建,他必须要有跟操作系统同名的用户,这点类似于Windows,但是Samba帐号可以和系统用户密码不同,但是Windows不能。系统用户可以用useradd user命令来创建,创建成功以后用smbpasswd –a user命令添加密码(有点类似与VNC)

Samba文件配置

smb.conf配置文件主要包括全局配置【global】、用户配置【homes】和打印配置【printers】。

首先说全局配置,一些不常用的我就不提了。

  • workgroup :工作组名,跟Windows一样,一般默认WORKGROUP就可以了
  • server string:描述信息,可以使用变量的,篇幅有限也不是很重要我就不讲了,有兴趣的朋友可以自己搜索一下。
  • security:安全模式,有share(匿名访问)、user(samba用户名密码访问)、server(使用另外服务器验证)、domain(Windows服务器主域控验证)、ads(活动目录)
  • hosts allow:IP地址控制,只允许某个IP段访问

其次说用户目录,这里就是一些介绍。

comment=this is Linux share directory ----------对此目录的说明
path=/home/share -------Linux系统真实的共享目录,必须为绝对路径,这里就是说在home主目录下的share子目录

browsabe=yes-------是否允许所有人浏览资源时显示共享目录,no为不允许
public=yes -------是否允许所有人都能够看到此目录,no为看不到
writable=yes -------是否允许用户在此目录下可写,no为不可些,如果可写,还需要目录具有w权限,与read only冲突时忽略read only。
read only=yes --------设置用户是否只读
create mode=0700 --------如果有可写权限,建立的文件默认的权限掩码
directory mode=0755 --------如果有可写权限,建立的目录默认的权限掩码

最后如果你安装了samba-config就可以图形化配置。

Samba服务启动

启动

/etc/rc.d/init.d/smb start
service smb start

重启

/etc/rc.d/init.d/smb restart
service smb restart

关闭

/etc/rc.d/init.d/smb stop
service smb stop

自启动

  • ntsysv? 终端输入这个命令,然后找到smb服务,点击空格选中,然后单击【确定】
  • Chkconfig –level 5 smb on 终端输入这个命令。
  • 图形化窗口配置? 在服务的选项卡里面。

Samba服务使用

连接samba服务器

格式为smbclient –L 服务器IP地址/主机名

后面可以加参数,例如使用abc用户访问192.168.0.1的服务器为

smbclient –L 192.168.0.1 –U abc

也可以直接输入共享目录

smbclient –L 192.168.0.1/share_pub? –U abc

输入完命令以后就就变成类似于ftp的操作。

挂载到本地

也可以像Windows映射一样挂载到本地,首先要建一个文件夹作为挂载目录,例如/home/share

然后输入类似于这样

mount –t cifs //192.168.0.1/share_pub /home/share –o username-abc

最后输入目标服务器192.168.0.1中abc的密码就可以了。

Windows客户端访问

只需要在运行对话框或是地址栏中输入

\\192.168.0.1\share_pub

然后就可以了,如果设置的是匿名就自动打开,如果设置的是user就要使用samba的用户名密码打开。在Windows的资源管理器中可以右键选择映射。

网友评论3

  1. 沙发
    免费资源部落:

    文章相当专业,可以当作学习资料了。

    2012-10-12 22:34 [回复]
    • Nicky:

      嗯,书上的知识的一些总结,还是就是个人经验教训的积累。那个图形化界面就是自己积累的,至于mount那个完全是教训啊,书上说mount没有说清楚,而且举例子举得是/root/Desktop,我就试了mount一个Windows服务器共享文件夹到home目录,结果服务器上所有用户VNC全部被直接T掉了,吓死爹了,赶紧unmount回来。

      2012-10-12 22:46 [回复]
      • 免费资源部落:

        有些东西还得亲自实践才会有明白,以前大学学的书本知识现在都忘光了。

        2012-10-13 17:29 [回复]

发表评论

表情
还能输入210个字