SAMBA简介


NFS只能实现在linux和unix系统之间实现文件共享,而CIFS(公共因特网文件系统)只能实现windows系统之间的文件共享。那么linux或unix系统怎么和windows系统之间共享文件呢?这就要用到SAMBA服务器了,SAMBA服务器能真正实现在不同主机、不同系统之间的文件共享。

 

主要程序

smbd:提供对文件/文件资源的共享访问

     监听端口 TCP139、TCP445

nmbd:提供基于NetBIOS协议的主机名解析

     监听端口 UDP137、UDP138


环境拓扑:

                                          Linux Client

-----------RHEL5.9(vmnet1)-------------(vmnet1)

                                          Win7 Client


要求一:Samba匿名共享

工作组为Tarena

将目录 /usr/src 共享给所有人

共享名设为 tools

允许所有人访问、无需密码验证

访问权限为只读


1、安装软件包

[root@localhost ~]# rpm -q samba-client  samba   samba-common     //检查samba服务是否安装

package samba-client is not installed

package samba is not installed        

package samba-common is not installed      

提示没有安装Samba包


2、修改yum主配置文件

[root@localhost ~]# cd /etc/yum.repos.d/                       

[root@localhost yum.repos.d]# cp rhel-debuginfo.repo rhel- server.repo

[root@localhost yum.repos.d]# cat rhel-server.repo 

[rhel-server]                                                    //源名称

name=Red Hat Enterprise Linux Server                             //本软件源的描述

baseurl=file:///misc/cd/Server                                   //指定YUM服务端的URL地址

enabled=1                                                        //是否启此通道

gpgcheck=0                                                       //是否验证待安装的RPM包

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release        //用于RPM验证的密钥文件

//放入rhel5.9 iso


[root@localhost yum.repos.d]# yum clean all                      //清空yum缓存


3、安装samba服务

[root@localhost yum.repos.d]# yum -y install samba samba-client  samba-common


4、修改主配置文件

[root@localhost ~]# cd /etc/samba/

[root@localhost samba]# cp smb.conf smb.conf.bak                   //修改前备份

[root@localhost samba]# vim /etc/samba/smb.conf                    //samba主配置文件

...

 74         workgroup = Tarena                                     //工作组名称

 75         server string = Win File Ser                           //服务器描述

...

 89         log file = /var/log/samba/%m.log                       //日志路径,%m客户机地址

...

 91         max log size = 50  //日志最大容量(KB)

...

101         security = share      //使用的安全级别(share:匿名、user:用户认证、server:由指定的服务器认证、domain:Windows域认证)

...

221         load printers = no                          //屏蔽共享时看到的打印图标

...

289 [tools] //共享文件名

290         comment = Tools Public                      //描述

291         path = /usr/src                             //共享目录的位置

292         public = yes                                //所有人可用

293         read only = yes                             //可读(wrtable可写


5、启动服务

[root@localhost ~]# service smb restart                 //开启smb服务

[root@localhost ~]# chkconfig smb on                 //设置开机自动启动

[root@localhost ~]# netstat -anptu | grep mbd           //检查端口

tcp    0  0 0.0.0.0:139    0.0.0.0:*      LISTEN      7008/smbd    

tcp    0  0 0.0.0.0:445    0.0.0.0:*      LISTEN      7008/smbd    

udp    0  0 192.168.10.10:137     0.0.0.0:*           7011/nmbd    

udp    0  0 0.0.0.0:137           0.0.0.0:*           7011/nmbd    

udp    0  0 192.168.10.10:138     0.0.0.0:*           7011/nmbd    

udp    0  0 0.0.0.0:138           0.0.0.0:*           7011/nmbd 

  

6、客户端测试:

Windown:

UNC路径 \\192.168.10.10


Linux:

[root@localhost ~]# yum -y install samba-client        //安装samba客户端

[root@localhost ~]# smbclient -L 192.168.10.10         //查询

[root@localhost ~]# smbclient //192.168.10.10/tools    //连接

[root@localhost ~]# mkdir -p /data/smb

[root@localhost ~]# mount -t cifs //192.168.10.10/tools   /data/smb/        //挂载

[root@localhost ~]# grep smb /etc/fstab         //设置开机自动挂载

//192.168.10.10/tools   /data/smb    cifs   defaults  0  0


要求二 Samba用户验证

修改原有的 [tools] 匿名共享设置

不再允许所有人访问

只允许nick读取、tom写入

拒绝其他用户或匿名访问

上传目录的权限为755

上传文件的权限为644


1、新建相应账户与samba密码

[root@localhost ~]# useradd nick                             //建立系统用户

[root@localhost ~]# useradd tom

[root@localhost ~]# echo "redhat" | passwd --stdin nick      //设置系统用户密码

[root@localhost ~]# echo "redhat" | passwd --stdin tom

[root@localhost ~]# pdbedit -a nick  //添加为共享账号并设置密码(可以测试哪个密码会生效)

[root@localhost ~]# pdbedit -a tom 


2、修改主配置文件

[root@localhost ~]# vim /etc/samba/smb.conf 

...

101         security = user                          //启用用户认证

...        

289 [tools]                                          //共享名

290         comment = Tools Public                    

291         path = /usr/src                          //指定共享路径

292         public = no                              //不对所以人开放

293         valid users = nick,tom                   //指定合法用户

294         write list = tom                         //用户tom可读可写

295         read only = yes                          //默认权限为只读

296         directory mask = 0755                    //上传的目录权限

297         create mask = 0644                       //上传的文件权限

...

[root@localhost ~]# setfacl -m u:tom:rwx /usr/src/   //指定用户tom对这个目录具有读写执行权限


3、启动服务

[root@localhost ~]# service smb restart               


4、客户端测试

[root@localhost ~]# smbclient -U nick //192.168.10.10/tools        

[root@localhost ~]# mount -o username=nick //192.168.10.10/tools  /data/smb   //建立挂载



要求三  Samba账户别名与访问地址控制

把普通帐户nick设置别名为kaka

设置只允许192.168.10.5地址访问


1、修改Samba用户别名文件

[root@localhost ~]# vim /etc/samba/smbusers

# Unix_name = SMB_name1 SMB_name2 ...

root = administrator admin

nobody = guest pcguest smbguest

nick = kaka


2、修改主配置文件

[root@localhost ~]# vim /etc/samba/smb.conf 

...

 76         username map = /etc/samba/smbusers

...

289 [tools]

290         comment = Tools Public

291         path = /usr/src

292         public = no

293         valid users = nick,tom

294         write list = tom

295         read only = yes

296         directory mask = 0755

297         create mask = 0644

298         hosts allow = 192.168.10.5


3、客户端测试