Chinaunix首页 | 论坛 | 博客
  • 博客访问: 89991
  • 博文数量: 99
  • 博客积分: 55
  • 博客等级: 民兵
  • 技术积分: 510
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-20 21:29
文章分类

全部博文(99)

文章存档

2013年(5)

2012年(94)

我的朋友

分类:

2012-11-04 20:36:23

原文地址:rhel5中搭建samba服务器 作者:l495051275

RHEL5中搭建samba服务器

一、samba的作用

简而言之,能够实现windowslinux之间的资源共享和NFS一样,sanbaftp的区别就是:用户可以直接在本地进行操作,而不必下载之后才能进行操作。

二、samba相关协议

大家都知道NFS是构建在RPC Server之上的,与之类似,Samba是建立在NetBIOSnetwork basic input/output system)之上的。netbiosIBM开发,作用是互联局域网中的计算机,由于并非针对大型网络设计,所以netbios并不能跨路由,但是它在局域网中的应用是较为有效和便利的。windows使用了这个协议来互连局域网中的用户,同样samba也建立在此协议上。

由于netbios不可以跨越路由,那么是否基于此协议的服务器也受到服务器这样的限制呢?答案是不会。这里可以使用netbios over tcp/ip 来使得不同网络的服务器和客户端之间沟通。虽然netbios局限于局域网,但是凭借tcp/ip的传送功能,可以使得不同网络的主机具有像在局域网内一样的沟通的能力。这样,samba可以在互联网范围内进行与不同主机的沟通,尽管samba的常见应用范围是在局域网络之内。

三、samba的守护进程

在运行着netbios的主机之间的通信,需要通过他们的netbios名称来定位对方。通信流程如下:首先互通的主机需要在一个工作组(workgroup)内,然后通过netbios名称识别找到对方主机,接下来就是进行连接及身份和权限方面的验证。

samba有两个守护进程,分别做netbios名称解析和权限验证。

nmbd:此守护进程用于对工作组和netbios名称的判断和解析。它监听udp137138端口。

smbd:此守护进程管理着服务器上的文件、目录和打印机。资料传输时使用tpc协议,他监听139445端口。

 

四、Samba的安装

RHEL5光盘上,有5Samba服务器/客户端相关的包,其中,3个事需要安装的,另外两个图形化配置工具可选。下面的列表介绍了这些RPM包得作用。

samba-3*rpm           包含samba主要的程序、文档及脚本等。

samba-common*rpm     包含samba的配置程序及语法检查程序等。

samba-client            samba客户端所需要的程序。

samba-swat*rpm        samba的图形化配置工具,需要xinetd的支持。

system-config-samba*rpm samba的图形化配置工具。

手动启动samba服务:

service smb start

chkconfig smb on

现在,samba的安装完成了,并且已经顺利启动。

iptable设定这里,需要打开udp137129端口,以及tcp139445端口.

如果系统开启了SElinux,那么需要执行下面的命令,让samba可以正常访问/home目录.

setsebool –P samba_enable_home_dirs=1

此外,如果只需要开放samba的只读共享,那么需要执行:

setsebool –P samba_export_all_ro=1

如果需要开放samba的文件读写功能,则需要执行:

setsebool –P samba_export_all_rw=1

五、samba相关文件介绍

下面的列表介绍了samba相关文件。

/usr/sbin/smbd           samba主守护进程

/usr/sbin/nmbd           netbios解析守护进程

/etc/samba/smb.conf      samba主配置文件

/usr/bin/smbclient         samba客户端程序,界面类似与ftp程序

/usr/bin/testparm          samba主配置文件测试程序

/etc/rc.d/init.d/smb         samba启动/停止/重载脚本

/sbin/mount.cifs           挂在samba文件系统的程序,它取代了早期的samba中的smbmount.

/user/bin/smbpasswd       设定samba用户的密码

/usr/bin/smbprint          此脚本文件可以将要打印的内容打印到samba主机连接的打印机上。

/usr/bin/smbstatus         列出samba的连接情况

六、samba主配置文件smb.conf

         /etc/samba/smb.conf中,“#”号和“;”号都是注释符号。下面讲解smb.conf中的常用参数:

        

1、全局设定

[global]

全局设定的起始标签

2、网络相关设定

        workgroup = MYGROUP

工作组名称

        server string = Samba Server Version %v

服务器说明,这里显示了samba版本信息

;       netbios name = MYSERVER

主机的netbios名称,每一台主机的netbios名称是不同的

;       interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

interfaces参数可以让samba使用多个网卡或网络界面,使用这个参数的时候不要遗漏了localhost界面。

;       hosts allow = 127. 192.168.12. 192.168.13.

主机允许列表。

3、登录设定

        # logs split per machine

;       log file = /var/log/samba/%m.log

日志文件路径和名称设定

        # max 50KB per log file, then rotate

;       max log size = 50

如果日志到了50KB,则重新记录。

4security=user

这里的security参数可以设定为4:userserverdomain、和share。下面分别说明这4种安全级别的区别。

*  user:使用samba自身的数据库验证用户。

*  share:无需共享密码。任何人都可以访问samba资源。

*  server:在此级别下,设分验证由windows主机或samba主机负载。

*  domian:身份验证由另一台windows主机负责。

passdb backend = tdsam

passdb backend的参数设定有3种:smbpasswdtdbsam、和ldapsam。默认设定为tdsam

*  smbpasswd:使用smbpasswd给系统用户设定samba密码。smbpasswd文件在/etc/samba目录下。

*  tdbsam:使用数据库文件passdb.tdb,该文件在/etc/samba下。如果使用smbpasswd设定samba用户的话,则用户必须为系统用户。同时可以使用pdbedit命令建立samba账户。

*  ldapasam:使用ldap方式验证用户。

5、与成员选项

    ;       realm = MY_REALM

指定Active Directory

;       password server =

指定密码验证服务器。

6、域控制器选项

  

;       domain master = yes

设定samba服务器是否成为网域主浏览器

;       domain logons = yes

设定samba服务器是否成为域控制器

        # the login script name depends on the machine name

;       logon script = %m.bat

如果用户从windows客户机登录,则执行samba提供的登录文件。

        # the login script name depends on the unix user used

;       logon script = %u.bat

;       logon path = \\%L\Profiles\%u

用户配置文件存放位置,%L表示服务器名,%u表示用户名

        # disables profiles support by specifing an empty path

;       logon path =

 

;       add user script = /usr/sbin/useradd "%u" -n -g users

添加用户时调用系统的命令。这里,%u是用户名,-n表示不创建和用户名同名的组(在RHEL5中添加用户,默认会创建一个与用户名同名的组),-g users表示假如users组。

;       add group script = /usr/sbin/groupadd "%g"

添加组时调用系统的命令。%g表示组名。

;       add machine script = /usr/sbin/useradd -n -c "Workstation (%u)" -M -d /nohome -s /bin/false "%u"

添加机器时调用系统的命令。-c为注释,-sshell-d为家目录,-M表示不创建用户家目录。

;       delete user script = /usr/sbin/userdel "%u"

删除用户时调用系统的命令。

 

;       delete user from group script = /usr/sbin/userdel "%u" "%g"

从组中删除用户时调用系统的命令。

;       delete group script = /usr/sbin/groupdel "%g"

删除组时调用系统的命令。

7、浏览器控制选项。

   ;       local master = no

samba服务器不作为主浏览器。在windows网络中有一台机器保存浏览表,这台机器由网络中的机器进行竞争得到。当local master设定为Yes的时候,则samba服务器参加浏览器竞争。

;       os level = 33

如果让samba服务器参与网络中浏览器的竞争,则这个选项可以让samba在竞争中胜出。os level的值可以是0~255windows NT os level33windows 95/981windows 200064,。如果os level0,则samba服务器将不参与浏览器选择。为了让samba成为主域控制器(Primary Domain Controller,PDC,os level的值需要设置的大一些。

;       preferred master = yes

samba服务器工作量不足时,此选项将服务器作为优先选择的主浏览器。

8、名称解析

   ;       wins support = yes

支持winds解析

;       wins server = w.x.y.z

wins服务器地址

;       wins proxy = yes

为了兼容比较旧的windows系统,需要打开这个选项,使这些机器也能访问wins

;       dns proxy = yes

DNS支持。如果计算机不在wins中,则由dns来完成解析。

9、打印选项

           load printers = yes

自动加载打印机列表

        cups options = raw

向打印机cpus驱动传递的参数。

 

;       printcap name = /etc/printcap

选择一个Printcap文件

        #obtain list of printers automatically on SystemV

;       printcap name = lpstat

;       printing = cups

使用cpus驱动。

10、文件系统选项。

;       map archive = no

文件的归档属性。

;       map hidden = no

文件的隐藏属性。

;       map read only = no

文件的只读属性。

;       map system = no

文件的系统属性。

;       store dos attributes = yes

可存储DOS文件属性。

11、共享设定部分

1)家目录共享

[homes]

家目录设定的起始标签

        comment = Home Directories

注释

        browseable = no

是否可以被浏览

        writable = yes

是否可写

;       valid users = %S

具有合法身份的用户登录时,家目录变更为自己的家目录。

;       valid users = MYDOMAIN\%S

2)共享打印机

[printers]

打印机设定起始标签

        comment = All Printers

注释

        path = /var/spool/samba

打印队列路径

        browseable = no

是否可被浏览

        guest ok = no

是否允许guest访问

        writable = no

是否可写

        printable = yes

是否可打印

3)域登录目录设定

;       [netlogon]

域登录目录的起始标签。

;       comment = Network Logon Service

注释。

;       path = /var/lib/samba/netlogon

配置文件所在路径。

;       guest ok = yes

是否允许guest登录。

;       writable = no

是否可写

;       share modes = no

共享模式设定为关闭

4)本地配置文件设定

    ;       [Profiles]

;       path = /var/lib/samba/profiles

;       browseable = no

是否可被浏览

;       guest ok = yes

是否允许guest访问。

5)公共目录共享

    ;       [public]

;       comment = Public Stuff

 

;       path = /home/samba

公共目录路径。

;       public = yes

配置为公共使用。

;       writable = yes

该目录是否可写。

;       printable = no

是否可以打印。

;       write list = +staff

该目录除了staff的组员可以拥有读写权限之外,其它用户仅只读。

七、samba作为独立服务器

一***立服务器可以是一台工作组服务器,或者在工作组环境下的成员之一。独立服务器不是域控制器并且也不属于某个域。下面将给出两个实例来讲解samba作为独立服务器的配置。

1、  匿名用户可访问目录和打印机

[global]

           workgroup=MYGROUP

           server string=Samba Server Version %v

           security=share

[test]

           comment=Directory for sharing

           path=/tmp/test

           read only=yes

           guest only=yes

                   [printers]

                                     comment=All Printers

                                     path=/var/spool/samba

                                     browseable=yes

                                     guest ok=yes

                                     printables=yes

在这个例子中,匿名用户可以访问/tmp/test目录,并且拥有只读权限;同时匿名用户可以使用samba打印机。这里的security使用了share,也就是共享的级别。客户端访问目录的权限由两处决定:目录本身的权限和samba配置文件中设定的权限。所以在设定/tmp/test目录时,需要确认该目录本身的权限至少应为755

2、  访问目录和打印机需要身份验证

[global]

         workgroup=MYGROUP

         server string=Samba Server Version %v

         security=user

[homes]

         comment=Home Directories

         valid users=%S

         read only = no

         browseable=no

[test]

         comment=Directory for testing

         path=/tmp/test

         force user=leon

         force group=leon

         guest ok=no

         read only=no

[printers]

         comment=All Printers

         path=/var/spool/samba

         browseables=yes

         guest ok=no

         printable=yes

此例中,访问/tmp/test目录需要身份验证。并且因为有force userforce group设定,所有具有合法的身份账号登陆之后,在/tmp/test下创建的文件的用户身份为leon,用户组为Leon。在这个配置文件中,用户访问热河资源均需要合法账号,匿名用户将不能访问任何资源。

3、  创建samba用户账号

samba的用户和Linux系统用户有一定的区别,但是首先samba用户必须是系统用户,其次samba用户的密码与用户的系统密码无关,该密码由damba软件包中提供的工具设定。

假设在linux系统中有一个用户名为leon,那么使用下面的命令来设定密码:

pdbedit –au leon

                   pdbedit是一个用来管理SAM数据库的工具。它的常用参数解释如下:

        

-L               列出所有在用户数据库中的用户

-v               显示详细信息。

-u               这个参数后指定用户名,在打印/增加/删除用户时可以用到

-a               增加用户。一般与-u一起使用

-r                修改用户。一般与-u一起使用

-x               删除用户

         设定密码后,samba用户就可以进行身份验证了。

八、samba客户端的使用

1、查看samba服务器共享情况

Linux系统中,如果 samba-client软件包,那么可以使用smbclient命令来查看samba服务器的共享情况:

smbclient –L 服务器名 –U Samba用户名

如果服务器为share共享级别,那么无需-U参数;如果服务器需要身份验证,那么需要-U参数及合法的samba用户账号登录。

Gnome图形界面下,可以用文件管理器Nautius来查看samba服务器的共享。在Nautilus的地址栏输入如下命令。

smb://samba服务器主机或IP

可以看到服务器上的共享情况,如图所示1所示,如果访问需要身份验证的资源,Nautilus会提示输入用户信息,如图2所示。

1

2

2、使用samba共享资源

   前面提到了smbclient命令,这个命令除了可以查看samba服务器的共享资源列表之外,还可以对共享目录和资源进行操作。smbclient提供了类似于命令行ftp工具的界面,假设samba服务器“baby.com”上有一个工项目目录为testleonsamba用户,那么执行如下命令:

smbclient –L //baby.com/test –U leon

之后会要求输入密码,在身份验证之后,就可以对共享目录进行操作了。

此外,使用mount命令也可以将samba共享目录直接挂载到本地目录下,然后可以像操作本地文件那样去操作samba共享资源。命令格式如下:

mount –t cifs –o username=samba用户名 //samba主机名或者ip/共享目录/本地挂载点

如果需要访问上例中的资源,则可以执行:

mount –t cifs –o username=leon //baby.com/test /mnt

这样,test目录的内容就被挂载在/mnt目录下了。与卸载本地分区一样,使用umount命令可以卸载samba共享目录。

3、客户端为windows系统

   windows中,可以在资源管理器输入来访问samba资源。使用”net use”命令可以查看连接情况。如果需要删除已存在的ipc连接,可以使用”net use\\samba主机名或IP\ipc$/delete”命令。这些操作与访问windows文件服务器资源的操作是一样的。

阅读(198) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~