zoukankan      html  css  js  c++  java
  • (转)CentOs上配置samba服务

    前  言
    在我们使用 Windows 作为客户机的时候,通常有文件、打印共享的需求。作为Windows 网络功能之一,通常可以在 Windows 客户机之间通过 Windows Network 固有的功能实现这些要求。然而,通过 Samba 我们也可以让一台 CentOS 主机来兼容 Windows 网络,实现同样的功能,进而充分发挥 CentOS 主机的可用性。

    本篇文档主要介绍怎样通过 Samba 服务器的构建实现 Windows 网络中的文件共享。

    安装 Samba

      首先,通过 yum 来在线安装 Samba 。



    [root@sample ~]# yum -y install samba  ← 安装 Samba

    Setting up Install Process
    Setting up repositories
    update 100% |=========================| 951 B 00:00
    base 100% |=========================| 1.1 kB 00:00
    addons 100% |=========================| 951 B 00:00
    extras 100% |=========================| 1.1 kB 00:00
    Reading repository metadata in from local files
    primary.xml.gz 100% |=========================| 73 kB 00:00
    update : ################################################## 212/212
    Added 212 new packages, deleted 0 old in 4.94 seconds
    primary.xml.gz 100% |=========================| 569 kB 00:00
    base : ################################################## 1500/1500
    Added 1500 new packages, deleted 0 old in 28.97 seconds
    primary.xml.gz 100% |=========================| 157 B 00:00
    Added 0 new packages, deleted 0 old in 0.03 seconds
    primary.xml.gz 100% |=========================| 32 kB 00:00
    extras : ################################################## 124/124
    Added 124 new packages, deleted 0 old in 1.93 seconds
    Parsing package install arguments
    Resolving Dependencies
    --> Populating transaction set with selected packages. Please wait.
    ---> Downloading header for samba to pack into transaction set.
    samba-3.0.10-1.4E.9.i386. 100% |=========================| 101 kB 00:00
    ---> Package samba.i386 0:3.0.10-1.4E.9 set to be updated
    --> Running transaction check
    --> Processing Dependency: samba-common = 0:3.0.10 for package: samba
    --> Restarting Dependency Resolution with new changes.
    --> Populating transaction set with selected packages. Please wait.
    ---> Downloading header for samba-common to pack into transaction set.
    samba-common-3.0.10-1.4E. 100% |=========================| 37 kB 00:00
    ---> Package samba-common.i386 0:3.0.10-1.4E.9 set to be updated
    --> Running transaction check Dependencies Resolved
    =============================================================================
    Package Arch Version Repository Size
    =============================================================================
    Installing:
    samba i386 3.0.10-1.4E.9 base 13 M
    Installing for dependencies:
    samba-common i386 3.0.10-1.4E.9 base 5.0 M
    Transaction Summary
    =============================================================================
    Install 2 Package(s)
    Update 0 Package(s)
    Remove 0 Package(s)
    Total download size: 18 M
    Downloading Packages:
    (1/2): samba-common-3.0.1 100% |=========================| 5.0 MB 00:04
    (2/2): samba-3.0.10-1.4E. 100% |=========================| 13 MB 00:11
    warning: rpmts_HdrFromFdno: V3 DSA signature: NOKEY, key ID 443e1821
    Public key for samba-common-3.0.10-1.4E.9.i386.rpm is not installed
    Retrieving GPG key from http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
    Importing GPG key 0x443E1821 "CentOS-4 key <>"
    Key imported successfully
    Running Transaction Test
    Finished Transaction Test
    Transaction Test Succeeded
    Running Transaction
    Installing: samba-common ######################### [1/2]
    Installing: samba ######################### [2/2]
    Installed: samba.i386 0:3.0.10-1.4E.9
    Dependency Installed: samba-common.i386 0:3.0.10-1.4E.9
    Complete!
    配置 Samba

      然后,通过编辑 /etc/samba/smb.conf ,根据需求配置 Samba。在这里,本文的原则是只将文件共享应用于内网,并让将要被共享的目录拥有充分的读写权限属性。


    [root@sample ~]# vi /etc/samba/smb.conf  ← 编辑 Samba 的配置文件

    #======================= Global Settings =====================================
    [global]   ← 找到这一行(全局设置标签),在此行下面添加如下行:

    dos charset = GB2312  ← 将 Windows 客户端的文字编码设置为简体中文 GB2312
    unix charset = GB2312  ← 指定 Samba 所在的 CentOS 服务端新建文件或目录时的编码为 GB2312
    display charset = GB2312  ← 指定使用 SWAT(一种通过浏览器控制Samba的工具)时页面的默认文字编码
    directory mask = 0777  ← 指定新建目录的属性(以下4行)
    force directory mode = 0777
    directory security mask = 0777
    force directory security mode = 0777
    create mask = 0777  ← 指定新建文件的属性(以下4行)
    force create mode = 0777
    security mask = 0777
    force security mode = 0777

    workgroup = MYGROUP  ← 找到此行,将工作组名称改为 Windows 网络所定义的工作组名

    workgroup = WORKGROUP  ← 变为此状态,这里以 Windows XP 默认的“WORKGROUP”为例

    ; hosts allow = 192.168.1. 192.168.2. 127.  ← 找到此行,去掉行首的“;”,并制定访问限制

    hosts allow = 192.168.0. 127.  ← 变为此状态,指定内网IP地址及本地,只允许这两种情况的访问

    然后在配置文件的末尾填如下几行,定义公众共享目录:

    [public]
    comment = Public Stuff
    path = /home/samba  ← 指定共享目录位置
    public = yes
    writable = yes  ← 赋予共享目录写入权限的属性

      接下来,创建将要通过 Samba 共享给 Windows 网络的专用目录。


    [root@sample ~]# mkdir /home/samba  ← 建立共享文件专用目录

    [root@sample ~]# chown -R nobody. /home/samba  ← 设置专用目录归属为 nobody

    [root@sample ~]# chmod 777 /home/samba  ← 将专用目录属性设置为 777

      在进行到服务端的连接之前,需要预先对用于登录 Samba 的用户进行设置。这里我们以 CentOS 中 Samba 标准的 Samba 用户数据库管理工具“smbpasswd”为例,创建用于登录 Samba 的用户数据。这里需要注意的一点:用 smbpasswd 创建用户的前提是,系统用户中存在该用户 -- 在基于系统用户之上,才可以创建该用户在 Samba 用户数据库中的信息。



    [root@sample ~]# smbpasswd -a centospub  ← 将系统用户 centospub(例)加入到 Samba 用户数据库

    New SMB password:  ← 输入该用户用于登录 Samba 的密码
    Retype new SMB password:  ← 再次确认输入该密码
    Added user centospub.
    启动 Samba 服务

      在启动 Samba 服务之前,首先将防火墙设置中 Samba 所用到的端口进行开放。


    [root@sample ~]# vi /etc/sysconfig/iptables  ← 编辑 iptables 配置文件

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT  ← 找到此行,在下面添加如下行:
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
    -A RH-Firewall-1-INPUT -p udp -m udp --dport 137 -j ACCEPT
    -A RH-Firewall-1-INPUT -p udp -m udp --dport 138 -j ACCEPT

    [root@sample ~]# /etc/rc.d/init.d/iptables restart  ← 重新启动 iptables ,使新的规则生效
    Flushing firewall rules:          [ OK ]
    Setting chains to policy ACCEPT: filter   [ OK ]
    Unloading iptables modules:       [ OK ]
    Applying iptables firewall rules:      [ OK ]

      最后,启动 Samba 服务。


    [root@sample ~]# chkconfig smb on  ← 设置 Samba 自启动

    [root@sample ~]# chkconfig --list smb  ← 确认 Samba 启动标签,确认 2-5 为 on 的状态
    smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    [root@sample ~]# /etc/rc.d/init.d/smb start  ← 启动 Samba 服务
    Starting SMB services:       [ OK ]
    Starting NMB services:       [ OK ]
    从 Windows 客户端连接到 Samba 服务器

      在服务端启动 Samba 服务后,我们就可以从 Windows 客户端通过 Windows 网络连接到 Samba。这里以 Windows XP 为例,说明如下连接过程:


    1、从桌面打开“网上邻居”,并点击“查看工作组计算机”选项;




    2、确认出现 Samba 服务端的连接,并双击该连接;(本站文档的主机名以 Sample 为例)




    3、输入在服务端预先设置好的 Samba 用户的用户名及密码;(用户名同系统用户名,密码需要输入在通过 smbpasswd 为该系统用户设置的 Samba 专用的密码。)




    4、然后确认能够连接到 Samba 服务器,并出现根目录及 Samba 专用共享目录。




      最后,在相应目录进行新建、修改以及删除文件的操作,测试相应权限的可操作性。

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Samba是基于SMB协议的一个应用程序,目前的版本是2.3.x。Samba的功能很强大  
        ,但易用性也极差。究其原因是它的配置文件太大和不容易理解,新手和熟手都  
        对其望而却步。其实仅仅实现文件共享这一单纯目的,配置Samba很简单,只需熟  
        悉几个操作即可。下面我用一个例子说明这几个操作。  
        假设你已熟悉Linux的基本操作,例如VI编辑器的使用、基本的操作文件命令。  
        现在我们有三台PC,一台安装了window2000,名字是test2000,其上有共享文件  
        夹share;其余两台安装了Linux,一台名字是testsamba,其上有一目录/pub;另  
        一台名字是testlinux,其上也有一目录/pub。我们要实现的目标是把testsamba  
        上的/pub共享,供test2000和test_linux的使用。  
        对test_samba我们进行下面操作:  
        在/etc/下找到smb.conf,用VI编辑器打开,  
        #   vi   /etc/smb.conf或vi   /etc/samba/smb.conf  
        在【gobal】字段下,添加netbios记录,一般加在workgroup记录的下一行  
        ;netbios   name   =   testsamba  
        在【gobal】字段下,修改secrity记录;  
        secrity   =   share  
        在【public】字段下,修改path记录;  
    path   =   /pub  
    在【public】字段下,添加geuest   ok记录;  
    guest   ok   =   yes  
    删除【public】字段每行行首的";"标示;  
    保存退出。  
    简单解释一下,添加的netbios   name是可以在test2000网络邻居中看得见的机器  
    名;添加的/pub是可以在网络邻居中看见的共享目录;添加guest   ok是允许所有  
    用户都可以guest帐户访问共享;删除";"标示是要整个【public】字段成为可执  
    行。  
    现在/pub就成为可以被test2000和testlinux两台机器共享的目录了。  
    试试看:  
    在testsamba下,为使用test2000下的共享文件夹可以进行以下操作:  
    #   smbclient   -L   //test2000  
    此命令为查看test2000下的共享情况,注意在系统要求输入password时,直接回  
    车即可进入test2000,此时屏幕上列出test2000下的共享。  
    #smbclient      -U   share   (或smbmount   //test2000/share  
    /pub)  
    此命令可进入test2000的share目录,屏幕上出现MS-DOS的提示符:时说明用户进  
    入了share目录。此时可以在提示符后输入"?"查找你可使用的命令。  
    在test2000下,使用testsamba的共享目录/pub,可以进行以下操作:  
    查找计算机testsamba,当testsamba目标出现时,双击图标pub,即进入共享文件  
    夹pub了。  
    在testlinux下,使用testsamba的共享目录pub,可进行如下操作:(假设已  
    知pub存在)  
    #smbmount   //testsamba/pub   pub  
    此命令可把testsamba下的pub挂到本机的pub上,同上在系统要求输入password时  
    ,直接回车,接着依次输入#cd   /pub/pub、#ls,屏幕即列出testsamba的pub目录  
    下的文件了。  
    Win2000和Linux实现文件共享了!

  • 相关阅读:
    配置svn
    驱动开发问题error 2019: __ftol2_sse 找不到的错误哦
    ollydbg,ring3级别的调试软件
    IoAttachDevice源码
    新手搭建 eclipse+winDDK驱动开发平台
    IoCallDriver源码剖析
    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
    error LNK2019: 无法解析的外部符号 "int __cdecl wsprintf
    (转)3ds Max 和 Away3D工作流程
    页游客户端热更新时获取的是旧资源的处理办法
  • 原文地址:https://www.cnblogs.com/kittychentao2013/p/3227763.html
Copyright © 2011-2022 走看看