samba服务器搭建

   

   局域网中,windows主机之间通过网络可以访问彼此共享的文件,此时依靠的协议是CIFS(common internet file system);linux主机之间也可以通过NFS共享文件;但windows和linux主机之间不可以直接访问彼此之间的文件。此时需要使用samba,使用samba服务可以使同一网络中的linux和windows相互访问文件,还可以将linux上面的打印机成为打印服务器(printer server)。所以在局域网中samba的功能还是非常强大的。

   虽然windows也可以共享打印机,但是linux相对而言更加稳定和安全,所以使用linux共享的打印机更加安全和稳定。

   windows主机之所以能在网上邻居里能够看到主机名,是因为使用了NETBIOS协议,此协议实现主机之间名称解析,而samba在创建时,也借助了此协议。


samba安装:

   linux系统上默认samba的客户端已经安装:samba-client

   通用工具即库文件也已经安装:samba-common

   基于web的图形工具:samba-swat

   所以想要使用samba只需要安装服务器端的包即可(samba受selinux的控制,所以要关掉selinux):  

[root@localhost ~]# yum install samba
[root@localhost ~]# service smb start
启动 SMB 服务:                                            [确定]
启动 NMB 服务:                                            [确定]

         

   samba的两个进程:

       nmbd:实现NETBIOS的名称解析功能,利用UDP协议开启137,138端口来进行名称解析。

       smbd:实现文件共享,打印机共享等。利用TCP协议进行文件传输,使用139端口和445端口。


   /etc/samba/smb.conf:主配置文件,常用选项如下:

 

[global]        //全局配置
    workgroup = MYGROUP    //定义工作组,要和windows中的工作组一致。
    server string = Samba Server Version %v    //主机说明,随意定义
;   netbios name = MYSERVER    //netbios名称,不同主机设定不同
    ......
        security = user    //常用选项有user和share,当使用user时需要smb passwd file项;当为share时表示不许要密码即可共享。
        encrypt passwords = yes    //表示密码要加密
        smb passwd file = /etc/samba/smbpasswd
    ......
[homes]    //家目录,定义每一个用户通过samba是否可以访问它的家目录
    comment = Home Directories    //目录说明
    browseable = no    //除了特殊设置的目录外,其它目录不可见
    writable = yes    //是否可写
;   valid users = %S    //使用者,
;   valid users = MYDOMAIN\%S
[printers]    //打印机段
    comment = All Printers
    path = /var/spool/samba
    browseable = no
    guest ok = no
    writable = no
    printable = yes
                                                                                                                                                                                                                                                                                       
 //自定义段,管理员可定义自己的共享,主配置文件中默认不存在此段。
[NAME]   //网络发现里显示的名字,可自己编写
     comment = my tools    //描述
     path = /share       //系统中共享文件在系统中路径
     browseable = yes   //是否可浏览
     guest ok = yes  //是否让来宾账户访问
     writeable = yes   //是否可写
//       write list = gentoo,redhat   //定义谁可写

   

   /etc/samba/lmhosts:文件主要是netbios name和对应主机名称的ip,此文件会在安装了samba后自动获得,一般不用配置。

   /etc/smaba/smbpasswd:此文件需自己创建,当samba共享需要用户名和密码认证时,使用此文件。应注意此文件属主应为root,权限为600.


常用命令

       testparm:用于查看sbm.conf的语法正确性。    

[root@localhost ~]# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[tmp]"
Loaded services file OK.   //说明没有问题
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions    //按enter键可查看有效配置

       smbstatus:用于查看samba服务器的状态。

      smbpasswd:创建帐号和密码。    

#smbpasswd
    -a  将用户加入到samba用户里
    -s 从samba中删除某用户,以后此用户不能访问samba了
    -d  临时禁用某用户,不能访问samba
    -e  启用被禁用的用户

例如:    

root@localhost samba]# smbpasswd -a user1
New SMB password:
Retype new SMB password:
Added user user1.
[root@localhost samba]# cat smbpasswd
user1:500:FC26CDB2863917C1AAD3B435B51404EE:00B2C85DDFBD8CC81602D6FC7340EB0B:[U          ]:LCT-51A269B7:


      smbclient:查看某主机的samba共享

#smbclient -L HOSTNAME/IP  可以查看此主机的samba共享
#smbclient -L HOSTNAME/IP -U username 以某个用户身份查看此主机的samba共享


       smbmount:可以将windows主机共享的文件挂载到linux主机上,使用mount命令也可挂载,但是必须指定挂载方式为cifs,指定用户使用-o username=redhat:

#mount -t cifs //192.168.0.20/tmp /mnt -o username=user1


可以在windows主机上访问linux主机共享,此时提示需输入用户名和密码:

 ​samba服务器搭建_ ​samba


输入user1和密码后可访问linux主机上共享:

 ​samba服务器搭建_ ​samba_02


至此一个简单的samba服务器搭建完成。





扩展:

安装基于web的图形工具,用于samba的管理配置,默认使用901端口:

#yum install samba-swat

配置文件在/etc/xinetd.d/swat

   

only_from = 192.168.0.0/24    允许谁访问
     disable = no    //不禁用此功能

然后重启xinetd:

#service xinetd  restart 

然后在浏览器上输入:192.168.0.20:901  即可访问,注意登录时使用root用户的密码。

 ​samba服务器搭建_配置_03




 ​samba服务器搭建_搭建_04