红联Linux门户
Linux帮助

Samba使用和管理详细指南

发布时间:2009-08-18 14:39:07来源:红联作者:莫莫
Windows 最令人感到方便的特色莫过于『网上邻居』的档案分享功能,有了这项功能后,使得局域网络里资料的传递与分享得以落实。以往在 Linux 的世界里其实也有 NFS 可以在 Unix Like 的操作系统下做档案分享,但是与 Windows 作业环境的整合还是缺乏沟通的桥梁。
  Samba Server 建立了 Linux 与 Windows 环境的沟通管道,也可以做为Print Server提供Windows 远程联**印;若是使用 Samba Server 搭配 Apache Web Server,可在 Windows 环境下藉由『网上邻居』登入 Linux 主机里使用者的个人帐号放置网页目录(当然是在局域网络内才行),有了这项功能,编辑个人网页就如同在本机操作一般方便。除此之外,Samba Server 也可以完全取代 NT/2000 PDC(Primary Domain Controler)成为 NT/2000 网域主控者管理 NT/2000 网域机群,当然,Samba 也可以将目录、档案分享给其它 Unix Like、Mac、OS/2 的机器使用,应用层面可以说是相当广阔,更令人惊讶的是 Samba Server 也可做为WINS Server,若配合 DHCP Server 更可以管理大型 NT/2000 网域,想想!这个集合众多优点的服务器,是不是会对不同机种的操作系统工作环境在整合上有着极大的助益呢?

  Samba 可以定位为一套功能极为强大的档案服务器软件,所谓档案服务器就是将档案伺服主机上的目录分享出来,让您可以透过网络对分享出来的目录里的档案,做执行、读取、写入等动作。基本上 NT/2000 的网域是使用 NetBEUI 做计算机命名服务,使用广播封包来侦测网络上有哪些计算机、哪些目录提供资源共享,而 Samba 与UNIX主机间的沟通(如目录、档案分享)是透过 TCP/IP 协议达成任务,Samba 若要与NT网域做沟通,透过TCP/IP当然是行不通的,只好使用 NetBIOS 对NT网域做广播,让 Windows 机器能够认识它,进而成为NT网域成员;因此 Samba 是使用 smbd Daemon 透过 TCP/IP 联系 Unix Like 主机,而使用 nmbd Daemon 透过 NetBIOS 对 NT/2000 网域做联系,也就是说 Samba 使用两种机制达成资源共享的目的。

  注:smbd Daemon主要用来处理档案分享和打印分享服务;nmbd Daemon则用来处理WINS 名称解析服务及NT Browser Service(即网上邻居)。

  要使用 Samba Server 相当容易,在安装好 Redhat 后,只要设定好工作群组,激活Samba Server 后就可以正常运作,您可以立即在 Windows 下的『网上邻居』里看到执行Samba服务的Linux 主机名称。

  samba-2.0.7-21ssl

  samba-common-2.0.7-21ssl

  samba-client-2.0.7-21ssl(samba 所需要的套件,请随时更新!!)

  想让开机自动激活 samba 吗?

  #chkconfig --level 345 smb on

  或是手动激活

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

  以上是 samba 的简单设定,接着介绍 samba 的设定及其它应用

  当安装完 samba 套件后,也立即拥有以下的 samba 工具:

  smbclient:利用这个工具可连接其它 Unix like 的 Samba Server,或是连接 Windows 机器,以取得档案分享服务。

  testparm :这个工具可让您测试 smb.conf 组态档定义是否正确。

  testprns :这个工具可让您测试定义在 printcap 档里的列表机。

  smbstatus:这个工具可用来显示目前 client 端连接到 Samba Server 的联机状况。

  nmblookup:这个工具可使用 NT/2000 网域内的主机名称查询出对应的 IP 地址。

  smbpasswd:这个工具可用来建立、变更登入到 Samba server 的加密密码。

  swat:这个工具让您可使用 web接口(如:IE、Netscape)对Samba Server做组态设定。  

  先确定在 /etc/services 档案里面这些句子没有被批注掉:

  netbios-dgm 138/tcp # NETBIOS Datagram Service

  netbios-dgm 138/udp

  netbios-ssn 139/tcp # NETBIOS session service

  netbios-ssn 139/udp

  然后是建立 /etc/lmhosts 档案(如果它不存在的话),建立起各主机的对应。我们只需将 MS Winndows 主机对应建立起来则可,但一定要包括作为 SAMBA 服务器的 Linux 主机本身:

  vi /etc/lmhosts

  192.168.0.17 redhat52

  192.168.0.15 PII266

  192.168.0.12 nt4ser2

  192.168.0.22 redhat62

  192.168.0.16 w2000ad

  然后是修改 /etc/samba/smb.conf 这个档案

########################################################

设定Samba的组态档最基本可分为三个阶段:Server基本设定、使用者home目录的设定、目录分享设定。至于「共享列表机设定」则是当您有需要时再做设定。若是在Samba 的组态设定档/etc/smb.conf档里做设定,则是针对[global]、[homes]、[分享目录]三大项目做设定。
 

  vi /etc/samba/smb.conf

  若是在etc/smb.conf档里做设定,则是在[global]项目里设定如下:

  [global]

  workgroup = MYGROUP ;不分大小写

  unix password sync = Yes

  设定 Linux 与 samba 使用相同的密码

    domain master = yes

  设定 samba 成为 PDC (网域主控者),注意:若是将Samba设定为独立服务器,则无须设定此项。

    client code page = 950

  如果想使用者能看到中文文件名称,可以将这行加进 [global] 设定中

  [homes]

  browseable = yes

  writable = yes

  public = yes

  write list = @staff

  samba 内定帐号拥有者可对帐号目录做读写动作,若想让某些使用者也有权利对此目录做写入动作时,请在「Users」卷标的「write list」字段里输入其它使用者名称,如:abc、test、working。

  所谓的使用者home目录是指,以使用者帐号登入 Samba Server 后个人所拥有的帐号目录,如:以帐号 root 登入后,内定的个人目录是 /root。一般而言,对「使用者home目录的设定」着重于是否将此个人目录分享出来及设定存取的权限,其余项目大抵上是无需设定。

  注意:若您选择了「Public access」、「Writable」两个选项,并不代表所有的使用者皆有权利对您所分享的home目录下的档案具有写入权,还得视档案原来在Linux下的权限设定,例如,档案权限为rwxr-xr-x(chmod 755),表示只有拥有者具可写入权,此点务必留意。

  [works]

  comment = share works

  browseable = yes

  path = /works

  public = yes

  writable = yes

  目录分享设定

  使用 Samba 最大的用途当然是将特定的目录分享出去,分享目录的原则不外乎是读写权限及分享对象,把握此原则就可很迅速的设定好分享目录

  用 testparm 来测试一下smb.conf的语法是否正确,或是使用 smbclient -L (computer_name)

  重新激活 SAMBA

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

########################################################3

将 Samba 做为WINS Server
 

  Samba 最大的功用除了做 file Server 外,还可以做 WINS Server。Wins Server最大的好处是可在 NT/2000 网域内做名称解析,传统上在 Internet 上做 FQDN(Full Quality Domain Name)与 IP address 之间的转换是藉由 DNS 做解析,但在局域网络里尤其是 NT/2000 网域,当您使用 NT/2000 的 WINS Server 与 NT/2000 的 DNS 做配搭时,假设有一台主机名称叫做 abc,所属领域是 test.com.tw,IP地址是192.168.0.229,目前此部主机尚未在 DNS 上注册,但是在DNS 上激活正反查都可藉由 WINS 解析,当您使用 nslookup 查询 abc 主机时,您会发现可解析出 192.168.0.229,并且观察 DNS 上正查区域内,DNS自动将 abc 以A资源纪录指定 IP 192.168.0.229,而反查区域内,DNS 自动将229.0.168.192.in-addr.arpa 指到 abc.test.com.tw,这就是 WINS 的好处。

  以往在 NT/2000 网域内使用 DNS+WINS Server 可免去在 DNS 上登录主机记录,若再搭配 DHCP Server 那么连 Client 端主机的 IP 也免输入,一切由 DHCP Server分配动态 IP ,再由 DNS+WINS Server 自动登录主机 FQDN 与 IP 解析关系,这个简单、易用组织网域的方法,如今也可以由 DNS+Linux下的Samba+Linux下的DHCP来取代,因为 Samba 可担任 WINS Server 或指定 WINS Server做网域名称解析。假设目前欲做 WINS + DHCP 的 Linux主机IP为192.168.0.229,其设定方式如下:

  首先确定已激活 DNS Server,并且在 DNS 里启用正、反查皆可透过 WINS 做解析。

  以下设定Samba为Wins Server

  wins server = 192.168.0.229

  设定完成后,可使用 nmblookup 查询名称解析,假设目前有一主机其名称为 abc,使用动态分配 IP 联机,所配得的IP地址是192.168.0.100,那么当您使用nmblookup asp做名称查询时,则出现下列画面:

  [root@abc testing]# nmblookup abc

  192.168.1.100 abc<00>

  当然,使用 DNS + DHCP + WINS 除了可分配动态 IP 外,『网上邻居』、区域内主机 FQDN 与 IP 的对应关系皆可正常运作。

  Samba 除了可做为 File Server、Wins Server 外,还可做为 Printer Server,设定方法其为简单:

  首先使用 Redhat 的print tool,列表机类型设定使用本机列表机。

  # linuxconf。

  按一下「Config」、「Networking」、「Server tasks」。

  按一下「Samba file server」、「Default setup for printers」。

  选择 [X] This share is enable选项,可做打印分享。

  若选择 [X] Public access选项,任何人皆可使用此部Printer Server,不限定只有拥有登入Samba帐号使用者。

  接下来设定win95/98/NT Client端

  在桌面上按两下「我的计算机」、「打印机」、「新增打印机」。

  选择「网络打印机」、「下一步」。

  出现「网络队列或路径名称」对话窗后,请使用「浏览」钮挑选Samba Server所分享出来的打印服务,如:\\abc\lp。

  接着设定列表机的驱动程序后,即可大功告成。

  您会发现有了 Samba 后,NT/2000 所具备的优点似乎皆被取代了!

###################################################################

Samba存取控制
 

  NT/2000 对分享出的目录可针对特定群组、使用者做权限管理,同样的,Samba 也能做到,并且能够更精细的权限管理。在 Samba 里对于目录的管理可区分为『使用者帐号目录』与『共享目录』,『使用者帐号目录』是在 Samba 的「Defaults」项目里做设定,『共享目录』则是在Samba的「Disk shares」项目里做设定,其设定方式是不一样的。

  首先就以「Defaults」项目为例,说明如何做Samba存取控制:

  若要针对登入 Samba 的来源主机做允许登入Samba主机,请在Allow hosts栏里输入来源主机,如:

  192.168.0.0/255.255.255.0 ;表示允许192.168.0. class C登入Samba。

  abc,test,working ;表示允许此三部主机登入 Samba。

  @mygroup ;表示允许mygroup群组内的成员登入Samba。

  若要针对登入 Samba 的来源主机做不允许登入 Samba 主机,请在 Deny hosts栏里输入来源主机,如:

  192.168.0.25 ;表示不允许此部主机登入 Samba。

  cracker,badboy ;表示不允许此两部主机登入 Samba。

  @mygroup ;表示不允许这个工作群组成员登入 Samba。

  再以「Disk shares」项目为例,说明如何做 Samba 存取控制:

  Allow hosts栏、Deny hosts栏的设定方式与上述相同。

  「User list」栏可用来设定哪些使用者可使用分享目录,例如:

  aaa,bbb,ccc,ddd,root ;表示此五个帐号可使用分享目录。

  @cracker ;表示属于 cracker 群组的帐号可使用分享目录。

  @cracker,abc ;表示 cracker 群组成员及 abc 可使用分享目录。

  「Write list」栏可用来设定哪些使用者具有写入权,例如:

  aaa,bbb,root ;表示此三个帐号具有写入权。

  @cracker ;表示属于 cracker 群组的帐号具有写入权。

  @cracker,abc ;表示 cracker 群组成员及 abc 具有写入权。

  「Valid users」栏可用来设定哪些使用者可登入 Samba,例如:

  aaa,bbb,root ;表示此三个帐号登入Samba。

  @cracker ;表示属于 cracker 群组的帐号登入Samba。

  @cracker,abc ;表示 cracker 群组成员及 abc 登入Samba。

  「Max. connections」栏可用来设定此分享目录的最大联机数量,例如:10。内定值是0,表示没有联机限制。

 mba Client
  Samba 除了提供 Server 方面的服务外,也可以充当 Samba Client 端登入其它Samba Server 或 Windows 所分享出来的目录,要享用这些网络上的分享资源并不难,用法如下:

  mount -t smbfs -o username=test,password=test //abc/test /data/test


#################################################################

结果就跟网络芳邻一样,别人(//abc/test)的目录就如同是本机的(/data/test)!!
 

  网络芳邻 linux 版 -- LinNeighborhood

  上述指令是利用文字模式下 mount 指令达成的,那么在 XWindow 下是否可以像网络芳邻一样的操作呢??当然可以,这里介绍 LinNeighborhood

  原始网站 : http://www.bnro.de/~schmidjo/

  下载网址 : http://milkyway.thn.htu.se/~ds98rito/

  下载之后就直接安装

rpm -ivh LinNeighborhood-0.6.3-1.i386.rpm


  若是 GNOME ,则按左下角的大脚 --> "程序" --> "应用程序" --> "LinNeighborhood" 或者是从 xterm (终端窗口模式下) 执行 LinNeighborhood & (有分大小写)



  第一次执行的话要先设定 "Options" --> "Preferences" ,设定要登入的 Windows 工作群组



 

################################################################

然后在本机的图标上按鼠标右键,执行 "rescan group",重新搜寻工作群组
 

  然后找到其它 Windows 的机器名称,按鼠标右键,执行 "mount"

  设定要 mount 到 Linux 上的 path ,就大功告成了!!

检测

  若想要知道目前 Samba 的联机状态,可以使用 smbstatus 工具

  [root@vm_cle samba]# smbstatus

  Samba version 2.0.7

  Service uid gid pid machine

  ----------------------------------------------

  abc1234 abc1234 abc1234 1240 abcedf (192.168.0.229) Sun May 6 17:01:09 2001

  No locked files

  Share mode memory usage (bytes):

  1048464(99%) free + 56(0%) used + 56(0%) overhead = 1048576(100%) total

  另外要注意 /etc/hosts 里,是否有加入以下内容:

  IP hosts_name

  如果没有加入上面那一行, /etc/rc.d/init.d/smb start 时都是 [ OK ] ,但是其实都没激活,可以检查 /var/log/samba/* ,看看 log 讯息就知道了!!

#################################################################

Samba 的 Client 端设定
 

  若设定使用「Linux 主机的帐号与密码做为登入 Samba Server 的帐号与密码」时,由于 win95OSR2 之前版本及 NT SP3 之前版本的密码机制是不加密的纯文字密码,当登入 Samba Server 时可传送不加密的纯文字密码给 Samba,因而轻易认证登入。

  而 win98 及 NT SP3之后版本及 WIn2000 的密码机制是属于加过密的密码,当登入Samba Server 时所传送的是加密的密码给 Samba,因而无法认证登入,此时,必须为需要登入 Samba Server 的使用者帐号,利用 smbpasswd 这个工具程序建立登入Samba 的密码,当 windows Client 端登入 Samba 时,就可接受加过密的密码做为认证,不过此时就无需使用「Linux主机的帐号与密码做为登入Samba Server的帐号与密码」,因为已经为使用者建立属于登入 Samba 的密码。必须注意的是:登入Samba 的使用者帐号必须是已存在于 /etc/passwd 文件内的Linux系统帐号,唯有如此,才能确保能使用个人帐号目录。

不加密的联机

  由于 Samba 内定的接受密码机制属于纯文字密码,当设定好Samba Server 端后,此时若Client 端是 Windows 95 OSR2之前的版本或是 Win NT SP3 之前的版本,在登入本机时(假设使用 abc 帐号),直接使用『网上邻居』即可看「home」、「abc」、「works」三个分享目录,这是因为 Client 传送纯文字密码到Server端做为认证。

  若 Client 端是 Windows 95 OSR2以后的版本或是Win NT SP3以后或是 Win2000 的版本,因为 Client 传送加密码到 Samba Server 端做为认证,则需设定为纯文字密码才可以与 Samba Server 联机。您必须使用『登入记录编辑器』(regedit)对联机密码形式做设定:

  Windows 95/98 ==> samba_9x.reg

  REGEDIT4

  [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]

  "EnablePlainTextPassword"=dword:00000001

  Windows NT ==> samba_nt.reg

  REGEDIT4

  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters]

  "EnablePlainTextPassword"=dword:00000001

  Windows 2000 ==>samba_2000.reg

  REGEDIT4

  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkStation\Parameters]

  "EnablePlainTextPassword"=dword:00000001

  你可以手动用 regedit 改,也可以存成 *.reg 直接执行!!


#####################################################################

使用纯文字密码登入 Samba 的好处是:可享用现成的 Linux 帐号与密码,但却失去了安全性,此时可采用加密的密码登入 Samba。为了让 Samba 能对加密的密码做认证,除了在基本设定里需选择「Encrypted password required」外,还需要使用smbpasswd 为每一帐号建立samba密码,其步骤如下:
 

  vi /etc/samba/smb.conf

  [global]项目设定加密,如下所示:

  encrypt passwords = yes

  #smbpasswd -a abc

  如上设定后,Client 端是 Windows 95 OSR2以后的版本或是Win NT SP3以后的版本或是windows 2000,则不需要对 registry 的密码项目做纯文字密码设定,直接就可登入Samba Server。

  注意:使用smbpasswd -a username之前,请先确定 /etc/passwd 档里存在username帐号。

  smbpasswd -d username:停用username帐号

  smbpasswd -e username:启用username帐号

  相信您对 Samba 应该有了一些概念,Samba 是个相当强悍的 Server,在组织网域内的机群时,别忘了 Samba + DHCP + DNS 可帮您有效、快速的完成任务。

用 Browser 管理 Samba

  必须安装套件 -- samba-swat-xxx.rpm ,安装完之后记得 restart smb 才会生效(当然也可以用 Webmin 透过 browser 管理 samba !!)

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


  1.先使用 browser 联机, port 901



  为何会 error 呢??这是小编要提醒您的,透过 Browser 方式管理固然方便,但是 security 可不要忘记,可以利用 /etc/samba/smb.conf 里面的 hosts allow 来设定开放给谁使用 Browser 管理!!(千万不要对 internet 全部开放,太危险了!!)

  2.输入 ID , password (会依据不同 user 的权限出现不同的 menu )


######################################################

 3.这是 Anderson 这位 user 的 menu !!

  4.另外使用 root 登入

  5.有些 root 才有的权限才会出现!!

  一样,用了 Browser 并不表示不需要学 samba 的 conf ,它只是个"更"方便的工具,对于 samba 的设定还是要熟悉才会操作!!
文章评论

共有 32 条评论

  1. 雾月O秋水 于 2011-12-29 15:18:37发表:

    学习下

  2. yjh277 于 2011-12-10 12:14:02发表:

    学习

  3. LinusLin 于 2011-11-05 15:05:56发表:

    我自己配置过Samba,也写过。楼主的太详细了,我~~o(>_<)o ~~

  4. haoge512 于 2011-10-31 22:19:33发表:

    辛苦了

  5. maogu1986 于 2011-04-29 07:53:30发表:

    辛苦了

  6. yanqin8008 于 2011-04-25 16:00:15发表:

    真长,先收藏了

  7. yxintai 于 2011-04-19 22:04:40发表:

    真长

  8. lyc2010 于 2011-01-20 15:26:00发表:

    真是很详细啊,以后慢慢看吧

  9. bbsworks 于 2011-01-19 16:33:25发表:

    感谢楼主太细致了

  10. qzwine 于 2011-01-18 10:31:44发表:

    但是DOS系统与linux怎么访问了?
    我想用guest用户去访问linux共享,并且不要密码也能访问linux共享

  11. wl0123abc 于 2011-01-13 22:17:10发表:

    正想配置samba

  12. 2012linuxroot 于 2011-01-12 16:26:51发表:

    收藏了】{:3_110:}

  13. aiguo110 于 2011-01-08 09:08:41发表:

    看起来貌似很难

  14. xcyhl 于 2011-01-07 21:21:50发表:

    samba 可惜不太稳定

  15. weixiaoyu111 于 2011-01-04 13:09:27发表:

    等都地对地导弹点点滴滴

  16. nolphin 于 2010-11-08 16:06:22发表:

    这个就比较详细,适合初学者~

  17. anson338 于 2010-03-21 22:39:01发表:

    不太了解

  18. attica 于 2010-03-19 17:18:20发表:

    正好在用,谢谢LZ

  19. zshg8 于 2010-03-02 01:14:53发表:

    好东西,谢谢了哦、

  20. as192203 于 2010-02-23 17:41:26发表:

    好东西,收下了!!谢谢

  21. linshao.Solin 于 2010-02-10 18:20:24发表:

    {:2_102:}{:2_105:}

  22. Cineut 于 2009-10-09 00:41:17发表:

    有难度

  23. shenhao0129 于 2009-09-14 21:59:12发表:

    只知道一些简单的共享的用法,没有想到这么复杂!看来还要继续修炼了

  24. xrjxs 于 2009-09-13 14:33:53发表:

    有人知道为什么在 coLinux, slirp 联网方式下, 为什么死活用不了 smb 吗? 所有需要的端口都已经打开了。

  25. zuoer777 于 2009-09-07 17:12:11发表:

    hhh xuexi xuexi

  26. xieshaohu 于 2009-09-04 12:34:44发表:

    简单点,在Ubuntu里面直接右键一个文件夹,然后选择共享...就可以了
    系统会自动添加访问权限。

  27. flyman76 于 2009-09-04 10:11:46发表:

    不错,正好要用到

  28. dongch123 于 2009-09-02 16:12:25发表:

    {:2_92:}{:2_92:}

  29. szjx 于 2009-08-30 15:14:53发表:

    这东西讲起来还真是复杂

  30. 卡呆 于 2009-08-20 17:35:34发表:

    引用:
    Windows 最令人感到方便的特色莫过于『网上邻居』的[color=black]游戏公会档案分享功能,有了这项功能后,使得局域网络里资料的传递与分享得以落实。以往在 Linux 的世界里其实也有 NFS 可以在 Unix Like 的操作系统下做档案分享,但是与 ...
    莫莫 发表于 2009-8-18 14:39
    [/color]

    太详细啊,看不下去了

  31. liorange 于 2009-08-20 16:56:35发表:

    飘过,o(∩_∩)o...

  32. boats 于 2009-08-18 15:09:55发表:

    这东西讲起来还真是复杂