数据共享服务器配置(即:Windows中的网上邻居)

一、相关名词:
    samba:软件名称
    smb和nmb:smb是Samba 的主要启动服务器,让其它机器能知道此机器共享了什么;如果不打开nmb
服务器的话,只能通过IP来访问(如:在windows的我的电脑中,输入"\\10.0.0.1")。nmb是解析用的,
就是把Linux机器所共享的工作组及在此工作组下的netbios name解析出来。打开了nmb,才能用机器名
(如:在windows的我的电脑中,输入"\\centos")来访问。

二、安装samba(smb、nmb)服务:
    yum install samba

三、启动、关闭samba服务:

1、/etc/init.d/smb start (stop reload restart等)
           /etc/init.d/nmb start (stop reload restart等)
    2、service smb start (stop restart等)
           service nmb start (stop restart等)
    3、设置开机启动:
           chkconfig  smb  on
           chkconfig  nmb  on



四、查看samba(smbd、nmdd)服务是否在运行:

1、pstree | grep smbd
            pstree | grep nmbd
    2、pgrep smbd
            pgrep nmbd
    3、netstat -nuptl  | grep smbd
            netstat -nuptl  | grep nmbd



五、有关的配置文件:
    /etc/samba/smb.conf                  主配置文件
    可使用:testparm对配置文件进行测试。

六、常见考核点:(有关配置参见下载的文档)
    主要考核文件夹权限的设置:
    1、指定用户可以访问哪些文件夹:
    如:tom用户,可以访问data、share文件夹。
    2、指定用户具备何种权限:
    如:tom用户,对data文件夹具备写权限,但对share文件夹不具备写权限。
    3、指定用户是否可以访问自己的家文件夹。
    4、打印机共享。

七、samba相关常用工具:
    1、smbpasswd:设置共享密码。
            默认情况下,密码文件存放在:/var/lib/samba/private下。

    2、smbclient:smbclient 是Samba 的Linux 客户端,在Linux机器上用来查看服务器上的共享资源,
               也可以象FTP一样,用户可以登录Samba服务器,也可以上传put和下载get文件,对中文支持不友好;

    使用方法:
 

smbclient -L //ip地址或计算机名                     查看服务器上的资源。
    smbclient -L //ip地址或计算机名 [-U 用户名]         如果您的Samba服务器配置为user模式,就要加
                                                        "-U 用户名",如果是share模式,可以省略。如:
    smbclient -L //192.168.1.3 -U sir01
    Password: 请输入用户sir01的密码

  如果您是用share模式,就可以不必理会用户和密码,直接用;
    smbclient -L //192.168.1.3
    Password: 直接按回车

  以用户身份登录共享后,能象FTP用户一样,下传和下载文件;用put表示上传,用get表示下载;如:
    smbclient //IP地址/共享文件夹 -U 用户

    说明:共享文件夹是我们在smb.conf中定义的[共享文件夹],比如[sir01]。-U 用户名表示Samba的用户;比如:
    smbclient //192.168.1.3/sir01 -U sir01
    Password: 
    Domain=[LINUXSIR] OS=[Unix] Server=[Samba 3.0.21b-2]
    smb: \> ls
  说明:登录到Samba服务器上,就可以用smbclient的一些指令,可以象用FTP指令一样上传和下载文件;

        smbclient 命令说明 
        命令         说明 
        ?或help [command]   提供关于帮助或某个命令的帮助 
        ![shell command]   执行所用的SHELL命令,或让用户进入 SHELL提示符 
        cd[目录]       切换到服务器端的指定目录,如未指定,则 smbclient 返回当前本地目录 
        lcd [目录]      切换到客户端指定的目录; 
        dir或ls        列出当前目录下的文件; 
        exit或quit      退出smbclient
        get file1[file2]   从服务器上下载file1,并以文件名file2存在本地机上;如果不想改名,可以把file2省略 
        mget file1 [file2 file3 filen]   从服务器上下载多个文件; 
        md或mkdir 目录    在服务器上创建目录 
        rd或rmdir 目录    删除服务器上的目录 
        put file1[file2]   向服务器上传一个文件file1,传到服务器上改名为file2; 
        mput file1 [file2 filen]       向服务器上传多个文件 

    3、在Linux中smbfs文件系统的挂载:可以使用mount和smbmount。
        mount的方法:mount -t cifs -o username=xxx,password=xxx //hostname/dir /mnt/dir
        注意:老版本的Linux中,文件系统格式是smbfs,新版本已经不用了,而是用cifs。

    4、开机自动挂载,需要在/etc/fstab中加入:
         //server/share           /mount/point             cifs   username=[username],password=[password] 0 0
            server是Samba服务器的名称或者IP地址。 
            share是Samba的共享目录。 
            /mount/point是本机挂载的目录。 
            username和passow是访问Samba服务器的用户名和密码。



八、配置示例:
    要求:将文件夹/share和/data共享,其中用户tom和jack,可以访问/data文件夹,但只能进行读操作;
    用户alice和jack,可以访问/share文件夹,并用可以执行写操作;所有用户都可以访问自己的主文件夹。

    具体配置:
    1、新建两个组:data和share。目的是控制文件夹所在的组,同时将用户加到指定组中,以实现权限控制。
    groupadd data
    groupadd share

    2、新建三个用户,并指定到不同组中。目的是通过用户组,控制用户权限,以实现对相应文件夹的访问。

useradd -g data tom             新建用户tom,同时加入data组。
    useradd -g share -G data jack   新建用户jack,同时加入share组,并加入data组。即:jack属于两个组。
    useradd -g share alice          新建用户alice,同时加入share组。
    passwd tom
    passwd jack
    passwd alice                    设置三个用户的密码

    3、新建需要共享的两个文件夹,并指定文件夹所属的组及权限。
    mkdir /data
    mkdir /share
    chgrp data /data                指定所属的组,目的是控制相应组的权限。
    chgrp share /share
    chmod 770 /share
    chmod 750 /data                 修改改组的权限,目的是控制相关用户的操作权限。

    4、修改smb.conf。注意:默认的smb.conf中已经设置了用户可以访问自己的主目录([homes]段)。
    添加:
    [share]
    comment = Public Share
    path = /share                 共享文件夹的路径
    public = no
    valid users = @share          有效的用户,这儿用@表示后面是一个组,即share组中的所有用户。
    writable = yes                可写
    create mask = 0764

    [data]
    comment = Public Data
    path = /data                  共享文件夹的路径
    public = no
    valid users = @data           有效的用户,这儿用@表示后面是一个组,即data组中的所有用户。
    writeable = no                只读

    5、修改smb账号的密码。
    smbpasswd -a tom              -a是添加新的密码行的意思,如果已经有了这个用户对应的密码,则自动忽略。
    smbpasswd -a jack
    smbpasswd -a alice

    6、可以用testparm测试一下配置文件是否有效。

    7、启动smb服务。
    service smb start (或restart)
    service nmb start (或restart)


    8、测试:
       a、在windows下,打开我的电脑输入“\\IP地址或机器名”即可访问。
          用不同的用户登录,看看哪些文件夹可以访问。
       b、在fedora下,输入smbclient -L //ip地址或计算机名 -U 用户名,即可看到有关共享的信息。