免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1325 | 回复: 0
打印 上一主题 下一主题

SAMBA服务器架设 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-28 15:52 |只看该作者 |倒序浏览
SAMBA服务器简介
1、SAMBA服务主要用途是要在Windows和Unix Like主机间共享数据。
SAMBA的功能:

  • 提供用户登陆SAMBA主机时进行身份认证,从而提供不同的身份识别。

  • 可以进行NetBIOS名称解析。

  • 可以进行设备共享(如:CD-ROM、打印机)。

    2、SAMBA使用的NetBIOS通信协议:
    就像NFS是架构在RPC Server上一样,SAMBA是架设在NetBIOS通信协议上的。NetBOIOS最初是为局域网设计的,所以它无法跨路由工作。但是可以通过NetBIOS over TCP/IP技术我们就可以跨路由使用SAMBA服务器提供的功能了。
    3、SAMBA使用的daemons
    SAMBA是如何工作的?(1)、获取对方的NetBIOS名,并定位到该主机。我们要想登入某台Windows主机使用它所提供的文件时,必须加入该Windows主机的群组(Workgroup),并且我们的主机也必须设置一个NetBIOS名称。NetBIOS名称与主机名称的区别是NetBIOS名称最多有15个字符组成,在Windows上如果计算机名超过15个字符通常截取前15个字符作为NetBIOS名称。NetBIOS名称必须在同一群组中是唯一的。(2)、利用对方给予的权限存取可用资源。
    SAMBA主要使用两个daemons来管理这俩个不同的服务:

  • smbd:这个daemon主要功能是用来管理SAMBA主机共享目录、文件与打印机信息。

  • nmbd:这个daemon则是用来管理群组和NetBIOS名称解析的。

    4、SAMBA主要使用工作组模式和域模式进行连机。工作组模式适合于小型的工作环境,用户独立拥有计算机的控制权。域模型适合于大型的多人共性计算机环境。
    SAMBA服务器的基础架设
    1、SAMBA服务器所需要的软件:

  • SAMBA:主要提供smbd和nmbd两个daemons、SAMBA文档以及相关的logrotate设置文件等。

  • samba-common:主要提供了SAMBA的主要配置文件(smb.onf)、smb.conf的语法检验测试程序(testparm)。

  • samba-client:提供客户端工具指令,如用于挂载SAMBA文件格式的smbmount等。

    SAMBA的软件结构:

  • /etc/samba/smb.conf SAMBA的主要配置文件,这个文件主要设置工作组、NetBIOS名称以及分享的目录等。

  • /etc/samba/lmhosts 用于NetBIOS名称与主机IP的对应,类似与/etc/hosts文件。

  • /etc/samba/smbpasswd 这个文件默认并不存在,他是SAMBA默认的用户密码对应表。这个文件因为包含了密码,所以权限一定要设置好,一般设置为root所有,权限为600。

  • /etc/samba/smbusers Windows主机和Unix Like主机间账号的对应关系,此文件必须通过配置文件中的“username map”设置项目启动才能生效。

  • testparm 用于检查sam.conf的语法。

  • smbstatus 列出目前的SAMBA Server状态。

  • smbpasswd 用来创建SAMBA的密码文件。

  • smbclient 用在自己的SAMBA主机上面检查服务是否设置成功。

  • smbmount 挂载远程共享目录到本地挂载点。

  • nmblookup NetBIOS名称查询。

  • smbtree 显示工作组与计算机名称的树状目录分布图。

  • /usr/share/doc/samba- SAMBA的相关技术手册。

    2、SAMBA设置流程:

  • 在smb.conf中设置好工作组、NetBIOS名称、密码使用状态等与主机相关的信息。

  • 在smb.conf中设置好预共享的目录、装置已经可以使用的用户数据。

  • 根据步骤2的设置在Linux文件系统中建立好文件或装置的使用权。

  • 根据步骤2的设置通过smbpasswd建立用户账号及密码。

  • 启动SAMBA的smbd、nmbd服务。
    3、SAMBA配置文件
    SAMBA的配置文件可以分成两部分,一是主机信息部分,在smb.cfg文件的[global]下设置;二是共享信息部分,以目录名问设置依据。
    主机信息部分设置:
    workgroup:设置工作组名称。
    netbios name:设置主机的NetBIOS名称。
    server string:主机的简易说明。
    display charset:自己服务器上面显示的编码,一般与下面的unix charset相同。
    unix charset:在Linux服务器上面所使用的编码,一般为/etc/sysconfig/il8n内的编码。
    dos charset:Windows客户端的编码。
    log file:日志文件存放位置,文件名可能会以变量处理。
    max log size:日志文件的最大尺寸。
    security:设置值包括user、server、domain、share。user:使用SAMBA本身的密码数据库,密码数据库与下面的smb passwd file有关;share:共享的数据不需要密码即可访问;server和domain:使用外部主机的密码,与password server=IP配合使用。
    encrypt passwords:yes代表密码需要加密。
    smb passwd file:密码放置文件,一般为/etc/samba/smbpasswd。
    共享目录参数:
    [共享名称]:设置共享名。
    comment:目录说明。
    path:共性目录在操作系统上的实际路径。
    read only:设置是否只读。
    public:设置是否所用可以登陆的用都能看到这个共享名。
    writable:设置是否可以写入。
    create mode与directory mode与权限有关。
    valid users = user (@group):设定能够访问此共享资源的特定用户或用户组。
    invalid users = user (@group) :设定禁止访问该共享资源的用户或者组。
    read list = user (@group) :设定可以读取该共享资源的用户或者组。
    write list = user (@group) :设定可以读取和写入该共享资源的用户或者组。
    admin list = user (@group) :设定可以管理该共享资源的用户或者组。
    guest ok = yes|no :设定该共享资源是否能被来宾帐号访问。
    SAMBA里的变量:
    %S 任何可以登陆的用户均可以登陆起自己的默认目录(/home/username)。如:
    [homes]
    valid users=%S
    ……
    Jim登陆后,[homes]会变成[Jim],%S用来替换掉homes。
    %m 代表客户端的NetBIOS名称。
    %M 代表客户端的Host Name。
    %L 代表SAMBA主机的NetBIOS名称。
    %H 代表用户的默认目录。
    %U 代表目前登陆的用户名称。
    %g 代表登陆的群组名称。
    %h 代表目前这台SAMBA主机的Host Name。
    %I 代表客户端的IP。
    %T 代表当前的时间日期。
    SAMBA服务器架设示例
    1、软件安装
    [root@server ~]# rpm -qa |grep samba
    samba-common-3.0.25b-0.el5.4
    samba-client-3.0.25b-0.el5.4
    [root@server ~]# mount /dev/cdrom /mnt/
    mount: block device /dev/cdrom is write-protected, mounting read-only
    [root@server ~]# cd /mnt/CentOS
    [root@server CentOS]# rpm -ivh samba-3.0.25b-0.el5.4.i386.rpm
    Preparing... ########################################### [100%]
    1:samba ########################################### [100%]
    2、设置lmhosts文件
    [root@server samba]# vi /etc/samba/lmhosts
    127.0.0.1 localhost
    192.168.0.20 smbserver
    192.168.0.30 smbclient
    192.168.0.103 somode
    3、检查语言资料
    为了避免中文乱码问题,必须了解以下编码:
    源文件(共享的文件)的编码格式,中文一般是GB2312。
    Linux的默认语言编码。
    SAMBA的显示编码,一般与Linux的默认编码相同。
    连接到SAMBA主机的软件的语言编码。
    RedHat系统默认语言编码可以通过查看i18n文件:
    [root@server ~]# vi /etc/sysconfig/i18n
    LANG="zh_CN.UTF-8"
    所以SAMBA的配置文件可以这样设置编码:
    unix charset=utf8
    display charset=utf8
    dos charset=cp936
    4、设置smb.conf配置文件
    #======================= Global Settings =====================================
    [global]
    workgroup = WORKGROUP
    server string = iStone's Samba Server,Server Version %v .
    netbios name = smbserver
    # 设置监听的接口,默认在所有网络接口监听
    interfaces = lo eth0
    # 用于限制可以访问这台samba服务器的客户机的IP地址范围,以提供安全限制。
    # 缺省情况下,这行配置被注释了,即所有的客户都可以访问这台计算机,
    # 这样就存在一定的安全问题
    hosts allow = 127. 192.168.0.
    # --------------------------- 语言编码设置 -----------------------------
    #
    unix charset=utf8
    display charset=utf8
    dos charset=cp936


    # --------------------------- Logging Options -----------------------------
    #
    # 定义日志的存储位置及名称,%m代表客户端的NetBIOS名称
    log file = /var/log/samba/%m.log
    # max 50KB per log file, then rotate
    # 定义每个日志文件的存储限制。默认是0(无限制)
    # 一定要定义好,防止硬盘被爆掉
    max log size = 50
    # ----------------------- Standalone Server Options ------------------------
    #
    # Scurity can be set to user, share(deprecated) or server(deprecated)
    #
    # Backend to store user information in. New installations should
    # use either tdbsam or ldapsam. smbpasswd is available for backwards
    # compatibility. tdbsam requires no further configuration.
    # 认证方式,包括简单的共享级认证和用户级认证。Unix为多用户操作系统,缺省就使用用户级认证方式。当使用用户级认证的时候,Samba服务器使用 Unix操作系统的用户(来自/etc/passwd )对用户进行认证,这是一种独立的认证方式。而有时候希望所有的服务器使用同一个认证数据库进行统一认证,因此就导致出现了基于域的统一认证模式。为了使Samba服务器支持域认证方式,可以有两种不同的设置方式,一种为真正的域认证,另一种为服务器认证方式,将Samba服务器配置为通过服务器验证用户,这需要指定security=server,以及指定 password server的名字为NT的域控制器。认证服务器的方式不能实现域认证方式提供的一些特征,但它的适用范围并不仅限于域,使用工作组的网络也能通过统一的认证服务器来使用统一认证模式。
    # 一共有4种服务级别,分别是
    # share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。
    # user:samba的默认配置,要求用户在访问共享资源之前必须先提供用户名和密码进行验证。
    # server:和user安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级,以此类推。
    # domain:这个安全级别要求网络上存在一台Windows的主域控制器,samba把用户名和密码递交给它去验证。
    security = user


    # --------------------------- password Options -----------------------------
    #
    # 新版本使用数据库存储用户密码,但可以先后兼容,既可以使用密码文件来存储密码。
    passdb backend = tdbsam
    # 客户机和服务器之间进行认证时,把口令加密传输,这样保证了安全性。
    ; encrypt passwords = yes
    # 在以前的版本中使用smbpasswd文件来定义smb帐号密码,现在使用tdbsam来定义帐号密码
    ; smb passwd file = /etc/samba/smbpasswd
    #用户映射文件客户机的用户是admin或者administrator连接时会被当作用户root看待。
    ; username map = /etc/samba/smbuser
    # ----------------------- Domain Members Options ------------------------
    #
    ; security = domain
    ; passdb backend = tdbsam
    ; realm = MY_REALM


    ; password server =
    # ----------------------- Domain Controller Options ------------------------
    #
    ; security = user
    ; passdb backend = tdbsam


    ; domain master = yes
    ; domain logons = yes


    # 如果你采用domain方式登陆,必须设置登陆脚本。
    # the login script name depends on the machine name
    # 每个工作站登陆脚本。
    ; logon script = %m.bat
    # the login script name depends on the unix user used
    # 每个用户的登陆脚本
    ; logon script = %u.bat
    ; logon path = \\%L\Profiles\%u
    # disables profiles support by specifing an empty path
    ; logon path =


    ; add user script = /usr/sbin/useradd "%u" -n -g users
    ; add group script = /usr/sbin/groupadd "%g"
    ; add machine script = /usr/sbin/useradd -n -c "Workstation (%u)" -M -d /nohome -s /bin/false "%u"
    ; delete user script = /usr/sbin/userdel "%u"
    ; delete user from group script = /usr/sbin/userdel "%u" "%g"
    ; delete group script = /usr/sbin/groupdel "%g"
    # ----------------------- Browser Control Options ----------------------------
    #
    # set local master to no if you don't want Samba to become a master
    # browser on your network. Otherwise the normal election rules apply
    #
    # OS Level determines the precedence of this server in master browser
    # elections. The default value should be reasonable
    #
    # Preferred Master causes Samba to force a local browser election on startup
    # and gives it a slightly higher chance of winning the election
    # 当访问共享资源时,首先要先获取网络中的资源列表,默认情况下browser是由网络中的每个计算机来维护的。但没有必要每个计算机都维护整个资源列表,维护网络中当前资源列表的任务由网络上的几个特殊计算机完成的,这些计算机被称为Browser
    # 设定sam服务器是否能做为网络中的主browser
    ; local master = no
    # browser优先权的设置
    ; os level = 33


    ; preferred master = yes
    # --------------------------- Printing Options -----------------------------
    #
    # Load Printers let you load automatically the list of printers rather
    # than setting them up individually
    #
    # Cups Options let you pass the cups libs custom options, setting it to raw
    # for example will let you use drivers on your Windows clients
    #
    # Printcap Name let you specify an alternative printcap file
    #
    # You can choose a non default printing system using the Printing option
    # 这些设置是用于设置samba服务器的打印机资源。
    # load printer=yes就允许samba服务器对外共享服务器的打印机。
    load printers = yes
    cups options = raw


    ; printcap name = /etc/printcap
    #obtain list of printers automatically on SystemV
    ; printcap name = lpstat
    # 定义打印系统的类型
    ; printing = cups
    #============================ Share Definitions ==============================
    # 每个有登陆权限的用户均可访问他们自己的默认目录
    [homes]
    comment = Home Directories
    browseable = no
    writable = yes
    valid users = %S
    create mode = 0664
    directory mode = 0775
    ; valid users = MYDOMAIN\%S
    # 一个共享文件夹,除istone组能写外其他组只能读取文件
    [public]
    comment = Public istone
    path = /home/public
    public = yes
    writable = no
    printable = no
    write list = @istone
    # 打印机共享,共享名必须是printers
    [printers]
    comment = All Printers
    # 打印队列的存放位置
    path = /var/spool/samba
    # 是否允许他人浏览
    browseable = no
    # 是否允许gest用户使用
    guest ok = no
    writable = no
    printable = yes
    # 使用testparm检查smb.conf配置文件是否有语法错误,每次修改配置文件后都需要先进行一下语法检查。
    [root@server ~]# testparm


    5、创建共享目录,并赋权
    特别注意用户在文件系统中的权限,只有在文件系统和SAMBA配置文件中都有相应权限时用户才真正具有此共享权限。
    [root@server ~]# mkdir /home/public
    # 将public的用户组改为istone,在配置文件中设置了istone组有写入权限。
    [root@server ~]# chgrp -R istone /home/public/
    [root@server ~]# chmod 775 /home/public/
    # 添加用户并设置密码
    [root@server ~]# useradd istone
    root@server ~]# passwd istone
    Changing password for user istone.
    New UNIX password:
    Retype new UNIX password:
    passwd: all authentication tokens updated successfully.
    [root@server ~]# useradd jim
    [root@server ~]# passwd jim
    Changing password for user jim.
    New UNIX password:
    Retype new UNIX password:
    passwd: all authentication tokens updated successfully.
    [root@server ~]# ls -l /home/
    总计 12
    drwx------ 2 istone istone 4096 05-27 16:01 istone
    drwx------ 2 jim jim 4096 05-28 10:13 jim
    drwxrwxr-x 2 root istone 4096 05-28 10:12 public


    6、创建SAMBA密码文件
    [root@server ~]# mkdir /etc/samba/smbpasswd
    [root@server ~]# chown root /etc/samba/smbpasswd
    [root@server ~]# chmod 600 /etc/samba/smbpasswd
    smbpasswd [-adem] username
    -a 在密码文件中新增一个用户
    -d 停用一个已经存在的账号
    -e 从新启用已经停用的账号
    -m username为计算机名,与domain mode有关
    如果没有加任何参数表示修改用户的SAMBA密码。
    # 访问共享的用户使用的是此处设置的密码,可以与系统用户的密码不同。
    [root@server ~]# smbpasswd -a istone
    New SMB password:
    Retype new SMB password:
    Added user istone.
    [root@server ~]# smbpasswd -a jim
    New SMB password:
    Retype new SMB password:
    Added user jim.
    [root@server ~]# cat /etc/samba/smbpasswd
    istone:500:E8450C7E07112982AAD3B435B51404EE:2D7F1A5A61D3A96FB5159B5EEF17ADC6:[U ]:LCT-483CC0E6:
    jim:501:E8450C7E07112982AAD3B435B51404EE:2D7F1A5A61D3A96FB5159B5EEF17ADC6:[U ]:LCT-483CC0EC:


    7、启动SAMBA服务
    [root@server samba]# /etc/init.d/smb start
    启动 SMB 服务: [确定]
    启动 NMB 服务: [确定]
    [root@server samba]# netstat -tunlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 20281/smbd
    tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 20281/smbd
    udp 0 0 192.168.0.20:137 0.0.0.0:* 20284/nmbd
    udp 0 0 0.0.0.0:137 0.0.0.0:* 20284/nmbd
    udp 0 0 192.168.0.20:138 0.0.0.0:* 20284/nmbd
    udp 0 0 0.0.0.0:138 0.0.0.0:* 20284/nmbd


    8、验证共享目录
    smbclient –L [//主机或IP] [-U 用户账号]
    [root@server ~]# smbclient -L //127.0.0.1 -U istone
    Password:
    Domain=[SMBSERVER] OS=[Unix] Server=[Samba 3.0.25b-0.el5.4]


    Sharename Type Comment
    --------- ---- -------
    public Disk Public istone
    IPC$ IPC IPC Service (iStone's Samba Server,Server Version 3.0.25b-0.el5.4)
    istone Disk Home Directories //在此看到的是istone用户的默认目录
    Domain=[SMBSERVER] OS=[Unix] Server=[Samba 3.0.25b-0.el5.4]


    Server Comment
    --------- -------


    Workgroup Master
    --------- -------
    WORKGROUP
    [root@server ~]# smbclient -L //127.0.0.1 -U jim
    Password:
    Domain=[SMBSERVER] OS=[Unix] Server=[Samba 3.0.25b-0.el5.4]


    Sharename Type Comment
    --------- ---- -------
    public Disk Public istone
    IPC$ IPC IPC Service (iStone's Samba Server,Server Version 3.0.25b-0.el5.4)
    jim Disk Home Directories //在此看到的是jim用户的默认目录


    Domain=[SMBSERVER] OS=[Unix] Server=[Samba 3.0.25b-0.el5.4]


    Server Comment
    --------- -------


    Workgroup Master
    --------- -------
    WORKGROUP


    利用类似于FTP命令行方式访问共享
    get 下载一个文件
    put 上传一个文件
    mget 批量下载文件
    mput 批量上传文件
    ls/dir 查看所在目录的文件
    rm/del 删除文件





    查看SAMBA的连机状态(smbstatus)



    Windows下访问Linux共享




    jim账号登陆时看到的是Jim的默认目录。

    iStone用户在public共享下有写入权限,因为他属于istone组,public共享下只有istone组有写入权限。




    查看网络中的共享计算机:
    在网上邻居中查看工作组计算机。

    利用搜索功能搜索计算机。



    Linux下挂载Windows下的共享目录


    mount -t smbfs -o codepage=cp936,iocharset=utf8,username=istone,password=haha123.com //192.168.0.103/winshare /home/istone/winshare/
    或者:
    smbmount -o codepage=cp936,iocharset=utf8,username=istone,password=haha123.com //192.168.0.103/winshare /home/istone/winshare/
    iocharset是指本机的语言编码方式,codepage则与远程软件有关。


    Windows系统的网上邻居支持不同网段的IP连机


    开始-->控制面板-->安全中心-->Windows防火墙
    点击例外选项卡-->选择文件和打印共享-->点击编辑按钮

    在此可以编辑4组端口修改为所需的IP来源。




    如果445端口开放便可以在开始运行中按以下格式输入来访问共享。



    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/26560/showart_1913151.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP