Samba

一、Samba 是什么

        Samba(SMB是其缩写)是一个网络服务器。Samba使用SMB 协议来通过网络连接共享文件和打印机。支持该协议的操作系统包括 Microsoft Windows、OS/2、和 Linux。

二、为什么要使用Samba

        如果你的网络中既有 Windows 机器又有 Linux 机器,Samba 就会发挥作用。Samba 会允许文件和打印机被网络中的所有系统共享。

        Samba 既可以用于Windows和Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件。

在日常工作中我们一般会使用Samba的共享文件与共享服务器的服务。 在windows中我们可以使用网络邻居直接访问它。

三、安装Samba

      1.所需包
                  samba-3.0.10-1.4E.2.i386.rpm                        //服务器端软件包
                  samba-client-3.0.10-1.4E.2.i386.rpm              //客户端软件包
                  samba-common-3.0.10-1.4E.2.i386.rpm     //通用软件包
      
      2.安装
                  # rpm -ivh    samba-3.0.10-1.4E.2.i386.rpm
                  # rpm -ivh    samba-client-3.0.10-1.4E.2.i386.rpm
                  # rpm -ivh    samba-common-3.0.10-1.4E.2.i386.rpm

      3.启动Samba
                  # service smb start
               开机启动samba
                  # chkconfig smb on

      4.查看进程,确定Samba是否起来
                 # pgrep smb
                   3879
                   3883
               如果出现两个进程号,就表示已经起来。

四、配置samba实例

      1.例一:做一个共享目录public ,使匿名用户可读,可写。
            
            第一步    编辑samba配置文件 /etc/samba/smb.conf
                            smb.conf配置我不一一列举, 下面列出的是变动的部分。

              [global]    全局配置
                 workgroup = MYHOME                 // 指定工作组
                 server string = File Server             //    服务器的说明 
                 security = share                          //    安全级别:    共分四种 share (任何用户都不需要密码,直接可以访问)
                                                               //    user     要提供用户名和密码才能访问
                                                               //    server    将用户和密码提交到另一服务器验证,如果递交失败,就退到user安全级。
                                                                //    要求网络上存在一台Windows的主域控制器,samba把用户名和密码递交给它去验证。
              [public]                       
                 comment = Public Stuff            
                 path = /home/public              
                 public = yes                        
                 browseable = yes              
                 writeable = yes

            常用参数:
                  comment :              目录说明  
                  path :                      目录路径
                  public                      开放共享 默认为no , 如果=yes 表示无需身份验证
                  browseable:            显示共享名称。
                  valid users:             允许列表中的用户访问
                  read only:                默认为yes,共享目录只读 。
                  write able:              write able =no 与read only = yes 一样的效果
                  wire list:                   如果前面只读,只有在此里面的用户才有写的权利
                  creat mask:             指定在共享目录里面建立文件的权限, 权限最高只能为 766
                  directory mask:       指定建立目录的权限
                  force user:               指定存取的用户张号
                  force group:          指定用户存取组
        
                第二步     建立共享目录,并设定目录的权限
                      #    mkdir /home/public
                     #    chmod 777 /home/public

                  第三步 重起samba
                      # service smb restart

                第四步 测试





                     这样基本就可以了.

                第五步 windows下访问
                        如果一切顺利,可以直接通过网络邻居直接访问了。

        
             2.例二  
                          公司有三个部门分别是: 业务 财务 经理
                    每个部门假设有2个人员,分别为 yewu01,yewu02    caiwu01,caiwu02 jingli01 jingli02
                   1)每个用户可以访问自己的宿主目录,并且只有该用户能访问宿主目录,并具有完全的权限,而其他人不能看到你的宿主目录。
                   2)建立一个caiwu 的文件夹,    要求对财务组和领导组的可看到, 只有caiwu01有写入的权限 , 其他的不能访问
                   3)建立一个yewu的文件夹, 要求对业务组可读写, 经理组的可查看.
                   4)建立一个公司文件共享目录, 要求全部人可查看,    但每个人只能删除自己的文件,    不能删除别人。

               第一步 先建立用户的帐号与所属工作组, 建立对应的目录并给目录777的权限
                     #    groupadd caiwu
                     #    groupadd yewu
                     #    groupadd jinli
                     #    useradd caiwu01 -g caiwu
                     #    useradd caiwu02 -g caiwu
                     #    userdel yewu01 -g yewu
                     #    useradd yewu01 -g yewu
                     #    useradd yewu02 -g yewu
                     #    useradd jinli01 -g jinli
                     #    useradd jinli02 -g jinli
                     #    mkdir -p /home/samba/caiwu
                     #    mkdir -p /home/samba/yewu
                     #    mkdir -p /home/samba/public
                     #    chmod 777 -R /home/samba
                     这里给777的权限,避免后面的因为权限而产生的麻烦.
                     #    使用smbpasswd -a caiwu01(caiwu02...)将6个用户加到samba用户中.
                  
                第二步    设定samba配置文件.
                       一般主要修改下面几个选项就可以了
                       #=========== Global Settings ==============
                      [global]
                      workgroup = MYHOME
                      hosts allow = 192.168.1.     (安全设定允许访问的网段, 注释掉意思不加限制允许任意网络访问)
                      security = user
                      #=========== Share Definitions ===============
                      [homes]
                      comment = Home Directories
                      browseable = no
                      writable = yes
                      上面是设定每个用户的宿主目录, 一般samba是设定好的,无需更改.
                      [caiwu]
                      comment = caiwu directory
                     path = /home/samba/caiwu
                     public = no
                     write list = caiwu01
                     valid users = @caiwu,@jinli

                      [yewu]
                      comment = yewu directory
                      path = /home/samba/yewu
                      public = no
                      write list = @yewu
                      valid users = @jinli

                      [public]
                      comment = Public Stuff
                      path = /home/samba/public
                      public = yes
                      browseable = yes
                      writeable = yes
                  
                     完成后记得重起samba
                     # service smb restart

                第三步    设定public的权限,因为samba的不能做到每个人只能删除自己的文件,不能删除别人的功能,linux设置目录Sticky bit权限. 目录设定了Sticky的权限,在这个目录下的文件只有root与文件的所有者才能删除, 这样可以实现我们上面第四个要求.
                     # chmod 1777 /home/samba/public

五、测试

        用windows或samba client测试你所做的是否正确.
先用samba的cilent端命令来测试一下

smbclient -L 服务器ip -N

guest帐户查询你的服务器的samba共享情况,你可以检验一下是否lingdao目录时候能被guest帐户看到,应该是看不到的,当然你也可以以某个用户的名义查看

smbclient -L 服务器ip -U caiwu01

系统会提示密码,只要输入smb密码就行。

smbclient //服务器ip/caiwu -U caiwu01

#以caiwu01用户的名义登录caiwu目录

smbmount //服务器ip/caiwu /mnt/caiwu -o username=caiwu01

#把服务器的财务目录映射到本地的/mnt/caiwu目录

用WINDOWS测试时应注意 net use 里面的内容。