1、实训目的

(1)掌握samba服务器的安装和配置方法;

(2)掌握Linux与Windows的资源共享和互访方法;

(3)了解使用Samba共享用户认证和文件系统。 

2、项目背景

某公司有system、develop、productdesign和test等4个小组,个人办公机操作系统为Windows 2000/XP/2003,少数开发人员采用Linux操作系统,服务器操作系统为RHEL 4,需要设计一套建立再RHEL 4之上的安全文件共享方案。每个用户都有自己的网络磁盘,develop组到test组有共用的网络硬盘,所有用户(包括匿名用户)有一个只读共享资料库;所有用户(包括匿名用户)要有一个存放临时文件的文件夹。

网络拓扑如下图所示:

企业samba服务器实用案例实验 samba服务器配置实验_Windows

项目目标:

●  System组具有管理所有Samba空间的权限。

● 各部门的私有空间:各小组拥有自己的空间,除了小组成员及system组有权限以外,其他用户不可访问(包括列表、读和写)。

● 资料库:所有用户(包括匿名用户)都具有读权限而不具有写入数据的权限。

●  Develop组与test组的共享空间,develop组与test组之外的用户不能访问。

● 公共临时空间:让所有用户可以读取、写入、删除。

3、实训内容

(1)在windows系统和Linux之间进行文件共享,使用samba服务器。

(2)Samba保证了Linux与windows之间方便快捷的共享文件。


具体的配置过程:

 1、samba是干什么的?它有什么用?

  Samba(SMB是其缩写) 是一个网络服务器,它是Linux作为本地服务器最重要的一个服务,用于Linux和Windows共享文件之用;
  Samba可以用于Windows和Linux之间的共享文件,也一样用于  Linux和Linux之间的共享文件;
  不过对于Linux和Linux之间共享文件有更好的网络文件系统NFS,NFS也是需要架设服务器的;
  大家知道在Windows 网络中的每台机器即可以是文件共享的服务器,也可以同是客户机;

  Samba 也一样能行,比如一台Linux的机器,如果架了Samba Server 后,它能充当共享服务器,同时也能做为客户机来访问其它网络中的Windows共享文件系统,或其它Linux的Sabmba 服务器;


  我们在Windows网络中,看到共享文件功能知道,我们直接就可以把共享文件夹当做本地硬盘来使用。
  在Linux的中,就是通过Samba的向网络中的机器提供共享文件系统,也可以把网络中其它机器的共享挂载在本地机上使用;这在一定意义上说和FTP是不一样的。
  Samba 应该范围主要是Windows和Linux 系统共存的网络中使用;如果一个网络环境都是Linux或Unix类的系统,没有必要用Samba,应该用NFS更好一点;
那Samba 能为我们提供点什么服务呢?主要是共享文件和共享打印机;

  samba包括两个服务器守护进程,smbd和nmbd。这两个进程各司其职,功用不同:smbd是samba服务的内核,是建立对话、验证用户、提供文件系统和打印服务的基础,负责硬盘驱动器和打印机的共享。用户通过客户端访问这个进程来进行文件和打印机共享;nmbd实现的是网络浏览,使得samba服务器显示在windows的网络邻居中,同时允许用户浏览可用资源。它负责NETBIOS信息的管理和传递,使得windows的用户可以在Explorer中使用“\\serverip”来访问samba的共享文件。

2、安装及服务操作命令
安装samba程序非常简单,使用rpm -q samba查看当前系统是否已经安装了samba软件。
如果没有那就进入光盘,rpm -ivh *samba*.rpm即可。
仔细说下安装的包:

samba-common-3.0.28-0.el5.8    //samba服务器和客户端中的最基本文件
  
 samba-3.0.28-0.el5.8           //samba服务器核心软件包
 system-config-samba-1.2.39-1.el5     //samba图形配置界面
 samba-client-3.0.28-0.el5.8          //samba客户端软件 
 启动、暂停和停止服务:/etc/init.d/smb start
 /etc/init.d/smb stop
 /etc/init.d/smb restart
 或service smb start
 service smb stop
 service smb restart


 
SAMBA方案的工作目标
有4个小组:develop productdesign test system 
1.system组具有管理所有samba空间的权限
2.各部门的私有空间:各小组拥有自己的空间,除了小组成员及system组外,其它用户不可访问
3.资料库:所有用户都有读权限,不能写入
4.develop组与test组的共享空间,只有develop组与test组有权限,其它用户都不能访问
5.公共临时空间,所有用户都有读,写,删除的权限

1、创建共享资源目录

[root@xuweidabian /]# mkdir -p /data/share
 [root@xuweidabian /]# cd /data/share
 [root@xuweidabian share]# mkdir develop productdesign test library develop_testrw temp



各目录说明如下:

/data/share:管理员目录,负责管理其下所有目录。
 /data/share/develop:develop的主目录,除了用户本身和system之外,其他用户都是不可读不可写。
 /data/share/productdesign:productdesign的主目录,除了用户本身和system组以外,其他用户都是不可读不可写。
 /data/share/test:test的主目录,除了用户本身和system组以外,其他用户都是不可读不可写。
 /data/share/library:资料库目录,所有用户(除了system组有权限写入外)只读目录。
 /data/share/develop_testrw:develop组和test组的共享空间,develop组与test组之外的用户不能访问。
 /data/share/temp:用于所有用户(包括匿名用户)的可读可写。



2、添加用户组。

[root@xuweidabian share]# groupadd system  
 [root@xuweidabian share]# groupadd develop
 [root@xuweidabian share]# groupadd productdesign
 [root@xuweidabian share]# groupadd test
 [root@xuweidabian share]# groupadd develop_test



3、添加用户。

[root@xuweidabian share]# useradd -g test -G develop_test -d /data/share/test -s /sbin/nologin test
 [root@xuweidabian share]# useradd -g develop  -G develop_test -d /data/share/develop  -s /sbin/nologin develop
 [root@xuweidabian share]# useradd -g productdesign   -d /data/share/productdesign  -s /sbin/nologin productdesign
 [root@xuweidabian share]# useradd -g system -d /data/share/ -G system,develop,productdesign,test,develop_test  -s /sbin/nologin system



4、添加Samba用户。
为了实现文件的共享添加Samba用户

[root@xuweidabian share]# smbpasswd -a system
 New SMB password:
 Retype new SMB password:
 Added user system.
 [root@xuweidabian share]# smbpasswd -a develop
 New SMB password:
 Retype new SMB password:
 Added user develop.
 [root@xuweidabian share]# smbpasswd -a productdesign
 New SMB password:
 Retype new SMB password:
 Added user productdesign.
 [root@xuweidabian share]# smbpasswd -a test
 New SMB password:
 Retype new SMB password:
 Added user test.



5、配置相关目录的权限与归属。

[[root@xuweidabian ~]# chown system:system /data/share
 [root@xuweidabian ~]# cd /data/share
 [root@xuweidabian share]# chmod 2770 develop develop_testrw productdesign test temp library
 [root@xuweidabian share]# chown develop:system develop
 [root@xuweidabian share]# chown productdesign:system productdesign
 [root@xuweidabian share]# chown develop:system develop 
 [root@xuweidabian share]# chown system:system /data/share
 [root@xuweidabian share]# chown test:system test
 [root@xuweidabian share]# chown system:system library
 [root@xuweidabian share]# chown system:develop_test develop_testrw
 [root@xuweidabian share]# chmod 755 library
 [root@xuweidabian share]# chown system:system temp
 [root@xuweidabian share]# chmod 777 temp
 [root@xuweidabian ~]# chmod 755 /data/share



6、Samba服务器/etc/samba/smb.conf全局环境配置。
[root@xuweidabian ~]# vi /etc/samba/smb.conf

配置文件详解:

[pzk]                                      # 自定义共享名
 comment = Home Directories                 # 描述符,是给系统管理员看的
 path = /tmp                                # 共享的路径
 public = yes                               # 是否公开,也就是是否能在网上邻居看到该共享
 browseable = yes                           # 共享的目录是否让所有人可见
 writable = yes                             # 是否可写
 guest ok = no                              # 是否拒绝匿名访问,仅当安全级别为 share 时才生效
 workgroup = WORKGROUP                      # 工作组,要设置成跟 Windows 的工作组一致
 server string = Samba Server Version %v    # 其他 Linux 主机查看共享时的提示符
 netbios name = MYSERVER                    # 用于在 Windows 网上邻居上显示的主机名
 hosts allow = 127. 192.168.12. 192.168.13. EXCEPT 192.168.13.13   # 指定允许访问 samba 服务器的主机    
 security = share                           # 定义安全级别
 log file = /var/log/samba/log.%m           # 定义日志文件,每个访问的主机会产生独立的日志文件,%m 是客户端主机名
 max log size = 50                          # 定义单个日志的最大容量(KB)
 passdb backend = tdbsam                    # Samba 用户的存储方式,smbpasswd 表示明文存储,tdbsam 表示密文存储
 deadtime = 10                              # 客户端在10分钟内没有打开任何 Samba 资源,服务器将自动关闭会话,在大量的并发访问环境中,这样的设置可以提高服务器性能
 display charset = UTF8                     # 设置显示的字符集
 max connections = 0                        # 设置最大连接数,0表示无限制,如果超过最大连接数则拒绝连接
 guest account = nobody                     # 设置匿名账户为nobody
 load printers = yes                        # 是否在启动 Samba 时就共享打印机    
 cups options = raw                         # 设置打印机使用的方式
 valid users = user1 user2    user3         # 指定哪些用户可以访问,如果不指定则所有用户都可访问
 invalid users = user1 user2                # 指定哪些用户不可以访问
 create mask = 0775                         # 客户端上传文件的默认权限
 directory mask = 0775                      # 客户端创建目录的默认权限
 write list = user1 user2 user3             # 设置可对文件进行写操作的用户
 admin users = user1                        # 设置共享目录的管理员,具有完全权限




[global]
   workgroup = system
         server string = Samba Server Version %v
         netbios name = system
         server string = Linux Samba Server
         security = share     定义安全级别



一共由四种级别:

share:匿名共享,用户访问服务器不需要提供用户名和口令。

user:使用samba服务自我管理的帐号和密码进行用户认证,用户必须是本系统用户,但密码非/etc/shadow中的密码,而由samba自行管理的文件,其密码文件的格式由passdb bachend进行定义。

server:由第三方服务进行统一认证。

domain:使用主域控制器进行认证,基于kerberos协议进行。

passdb backend = tdbsam tdbsam使用一个数据库文件来建立用户数据库。可以使用smbpasswd命令建立samba用户,不过要建立的samba用户必须先是系统用户。我们也可以使用pdbedit命令来直接建立Samba账户。

[system]
       comment = systemadmin
       path = /data/share
       create mask = 0664
       directory mask = 0775
       writeable = yes
       valid users = system
       browseable = yes



7、资料库共享资源的配置。

[library]
       path = /data/share/library
       writeable = no
       browseable = yes
       guest ok = yes



8、公共临时共享空间的配置。

[temp]
       path = /data/share/temp
       writeable = yes
       browseable = yes
       guest ok = yes



9、develop组与test组的共享空间。

[develop_testrw]
       path = /data/share/develop_testrw
       writeable = yes
       valid users = system,@develop_test
       browseable = yes
       create mast = 0664
       directory mask = 0775




10、各部门的私有空间。

[develop]
       path = /data/share/develop
       create mast = 0664
       directory mask = 0775
       writeable = yes
       valid users = develop,@system
       browseable = yes

       [productdesign]
       path = /data/share/productdesign
       create mast = 0664
       directory mask = 0775
       writeable = yes
       valid users = productdesign,@system
       browseable = yes

       [test]
       path = /data/share/test
       create mast = 0664
       directory mask = 0775
       writeable = yes
       valid users = test,@system
       browseable = yes



7、用testparm命令检查配置文件的正确性

8、为使配置文件生效,重启Samba服务
   service smb restart

在Windows下找到运行
输入\\172.30.1.116登陆Samba用户
就可以实现Windows和Linux之间的文件共享了。

9、在Windows下找到运行输入\\172.30.1.116登陆Samba用户就可以实现Windows和Linux之间的文件共享了。

10、over.

4、实训成果演示如下:

4.1 Samba服务器的架设

1.system组的成员拥有管理所有文件的权限,比如我们要把Windows中一个名为共享的记事本粘贴到Linux系统的system文件中去如下:

企业samba服务器实用案例实验 samba服务器配置实验_Windows_02

2./data/share/develop:develop的主目录,除了用户本身和system之外,其他用户都是不可读不可写。

企业samba服务器实用案例实验 samba服务器配置实验_共享文件_03

企业samba服务器实用案例实验 samba服务器配置实验_共享文件_04

3./data/share/productdesign:productdesign的主目录,除了用户本身和system组以外,其他用户都是不可读不可写。

企业samba服务器实用案例实验 samba服务器配置实验_企业samba服务器实用案例实验_05


4./data/share/test:test的主目录,除了用户本身和system组以外,其他用户都是不可读不可写。

企业samba服务器实用案例实验 samba服务器配置实验_Windows_06

5./data/share/library:资料库目录,所有用户(除了system组有权限写入外)只读目录。


企业samba服务器实用案例实验 samba服务器配置实验_共享文件_07



6./data/share/develop_testrw:develop组和test组的共享空间,develop组与test组之外的用户不能访问。


企业samba服务器实用案例实验 samba服务器配置实验_服务器_08



7./data/share/temp:用于所有用户(包括匿名用户)的可读可写。

企业samba服务器实用案例实验 samba服务器配置实验_服务器_09

5.2 从Linux主机访问Windows共享目录区,请截图表示

 

企业samba服务器实用案例实验 samba服务器配置实验_共享文件_10

图5-4 Linux主机共享Windows共享资源