当前位置: 首页 > news >正文

c 网站开发中间层怎么写国内设计好的网站案例

c 网站开发中间层怎么写,国内设计好的网站案例,常见的静态网站开发技术,济南网站建设选搜点网络VIPFrom: http://redking.blog.51cto.com/27212/120934 1 Samba原理 1.1 Samba概述 接触Linux我们听的最多的就是Samba服务#xff0c;为什么Samba应用这么广泛哈~#xff0c;原因是Samba最先在Linux和Windows两个平台之间架起了一座桥梁哈#xff0c;正是由于Samba的出现为什么Samba应用这么广泛哈~原因是Samba最先在Linux和Windows两个平台之间架起了一座桥梁哈正是由于Samba的出现我们可以在Linux系统和Windows系统之间互相通信比如拷贝文件、实现不同操作系统之间的资源共享等等我们可以将其架设成一个功能非常强大的文件服务器也可以将其架设成打印服务器提供本地和远程联机打印甚至我们可以使用samba Server完全取代NT/2K/2K3中的域控制器做域管理工作使用也非常方便滴哈~既然samba这样滴强大哈我们还不赶快来把玩一下哈~~~1.2 Samba应用环境 文件和打印机共享文件和打印机共享是Samba的主要功能SMB进程实现资源共享将文件和打印机发布到网络之中以供用户可以访问哈。 身份验证和权限设置smbd服务支持user mode和domain mode等身份验证和权限设置模式通过加密方式可以保护共享的文件和打印机。 名称解析Samba通过nmbd服务可以搭建NBNS(NetBIOS Name Service)服务器提供名称解析将计算机的NetBIOS名解析为IP地址。 浏览服务局域网中Samba服务器可以成为本地主浏览服务器LMB保存可用资源列表当使用客户端访问Windows网上邻居时会提供浏览列表显示共享目录、打印机等资源。1.3 Samba工作原理 Samba服务功能强大这与其通信基于SMB协议有关。SMB不仅提供目录和打印机共享还支持认证、权限设置。在早期哈SMB运行于NBT协议NetBIOS over TCP/IP上使用UDP协议的137、138及TCP协议的139端口后期SMB经过开发可以直接运行于TCP/IP协议上没有额外的NBT层使用TCP协议的445端口。1Samba工作流程当客户端访问服务器时信息通过SMB协议进行传输其工作过程可以分成四个步骤哈步骤1协议协商客户端在访问Samba服务器时发送negprot指令数据包告知目标计算机其支持的SMB类型。Samba服务器根据客户端的情况选择最优的SMB类型并做出回应。--------negprot请求-------客户端                                               服务器--------negprot响应-------步骤2建立连接当SMB类型确认后客户端会发送session setup指令数据包提交帐号和密码请求与Samba服务器建立连接如果客户端通过身份验证Samba服务器会对session setup报文作出回应并为用户分配唯一的UID在客户端与其通信时使用。--------session setup X请求-------客户端                                                             服务器--------session setup X响应-------步骤3访问共享资源客户端访问Samba共享资源时发送tree connect指令数据包通知服务器需要访问的共享资源名如果设置允许Samba服务器会为每个客户端与共享资源连接分配TID,客户端即可访问需要的共享资源哈。--------tree connect X请求-------客户端                                                               服务器--------tree connect X响应-------步骤4断开连接共享使用完毕客户端向服务器发送tree disconnect报文关闭共享与服务器断开连接。--------tree disconnect请求-------客户端                                                            服务器--------tree disconnect响应-------2Samba相关进程Samba服务是由两个进程组成分别是nmbd和smbd。nmbd其功能是进行NetBIOS名解析并提供浏览服务显示网络上的共享资源列表。smbd其主要功能就是用来管理Samba服务器上的共享目录、打印机等主要是针对网络上的共享资源进行管理的服务。当要访问服务器时要查找共享文件这时我们就要依靠smbd这个进程来管理数据传输哈~~~2 安装Samba服务 2.1 Samba所需软件 在我们安装Samba服务之前哈我们先来了解一下其所需要的软件包以及它们的用途哈~samba-3.0.25b-0.el5.4.i386.rpm该包为Samba服务的主程序包。服务器必须安装该软件包后面的数字为版本号我们安装时使用的是RHEL5.1DVD版如果是RHEL5.1CD版则该软件包位于第二张RHEL5安装光盘上。samba-client-3.0.25b-0.el5.4.i386.rpm该包为Samba的客户端工具是连接服务器和连接网上邻居的客户端工具并包含其测试工具该软件包位于第一张RHEL5安装光盘哈~samba-common-3.0.25b-0.el5.4.i386.rpm该包存放的是通用的工具和库文件无论是服务器还是客户端都需要安装该软件包这个软件包也位于第一张RHEL5安装光盘哈~samba-swat-3.0.25b-0.el5.4.i386.rpm当安装了这个包以后就可以通过浏览器比如IE等哈来对Samba服务器进行图形化管理这个软件包位于第三张RHEL5安装光盘哈。2.2 Samba的安装 建议在安装Samba服务之前使用rpm -qa命令检测系统是否安装了Samba相关性软件包rpm -qa |grep samba如果系统还没有安装Samba软件包我们可以使用rpm命令安装所需软件包。安装Samba主程序包rpm -ivh samba-3.0.25b-0.el5.4.i386.rpm 其他软件包的安装方法也一样哈~安装Samba客户端工具rpm -ivh samba-client-3.0.25b-0.el5.4.i386.rpm提示已经安装过了哈~安装Samba通用工具和库文件rpm -ivh samba-common-3.0.25b-0.el5.4.i386.rpm 其实我们一开始rpm qa |grep samba命令查询时已经发现客户端工具和通用工具及库文件已经安装了哈我们上面两步安装就可以不要执行了哈偶主要是演示一下哈~最后我们安装Samba图形化管理工具rpm -ivh samba-swat-3.0.25b-0.el5.4.i386.rpm我们发现缺少xinetdOK,那我们安装一下哈~rpm -ivh xinetd-2.3.14-10.el5.i386.rpm 现在我们再来安装Samba图形化管理工具rpm -ivh samba-swat-3.0.25b-0.el5.4.i386.rpm现在我们看到Samba图形化管理工具安装成功了哈~所有软件包安装完毕之后我们可以使用rpm命令进行查询哈rpm -qa | grep samba3 Samba常规服务器配置  在Samba服务安装完毕之后并不是直接可以使用Windows或Linux的客户端访问Samba服务器哈我们还必须对服务器进行设置下面需要做的操作就是说我们要告诉Samba服务器将哪些目录共享出来给客户端进行访问并根据需要设置其他选项哈比如添加对共享目录内容的简单描述信息和访问权限等具体设置。作为我们Linux系统工程师了解及熟悉Samba服务器的搭建流程是至关重要滴。 基本的Samba服务器的搭建流程主要分为四个步骤[1]、编辑主配置文件smb.conf,指定需要共享的目录并为共享目录设置共享权限。[2]、在smb.conf文件中指定日志文件名称和存放路径。[3]、设置共享目录的本地系统权限。[4]、重新加载配置文件或重新启动smb服务使用配置生效哈~为了更好地理解设定流程中每一步的作用下面通过一个图例进行讲解哈~Samba工作流程---------(1)---------                  ----------(2)----------smb.conf主配置文件[客户端]                                  [Samba服务器]-------- (4)----------                 ----------(3)----------日志文件(1)客户端请求访问Samba服务器上的Share共享目录。(2) Samba服务器接收到请求后会查询主配置文件smb.conf看是否共享了Share目录如果共享了这个目录则查看客户端是否有权限访问。(3)Samba服务器会将本次访问信息记录在日志文件之中日志文件的名称和路径都是需要我们设置。(4)如果客户端满足访问权限设置则允许客户端进行访问。实际上Samba服务器和我们的图书馆有点相似之处哈图书馆为读者共享了图书资源而Samba服务器共享了我们的文件数据哈。图书馆会有图书分类比如科普类、文学类等并且图书馆会对借阅的图书做限制拥有资格的读者才可以借阅相应的图书当然读者访问图书馆时图书管理员会对他们的浏览、借阅信息进行记录。对于Samba服务器来说其主配置文件smb.conf记录了共享的目录列表。比如share目录temp目录等。对于每个共享目录需要配置相应权限服务器会根据smb.conf文件中的设置判断客户端是否有权限访问只有拥有权限才可以访问服务器的资源。Samba服务器同样会对用户的行为进行记录每一次访问的信息都会记录在日志文件中以便我们Linux管理员查询哪些客户端访问过Samba服务器。我们大致讲了Samba工作流程后下面我们将对Samba具体配置过程中遇到的重要概念进行详细讲解哈~~3.1 主要配置文件smb.conf我们先从最重要的配置文件开始哦Samba的配置文件一般就放在/etc/samba目录中主配置文件名为smb.conf。如果把Samba服务器比喻成一个公共图书馆那么/etc/samba目录中那么主配置文件/etc/samba/smb.conf文件就相当于这个图书馆的图书总目录记录着大量的共享信息和规则所以该文件是samba服务非常重要的核心配置文件哈几乎绝大部分的配置文件都在该文件中进行滴。此外在smb.conf这个配置文档中本身就含有非常丰富的说明哈所以在我们配置之前可以先看一下这样说明性的文字。我们先看一下smb.conf这个文件哈vim /etc/samba/smb.confsmb.conf配置文件有288行内容配置也相对比较复杂哈不过我们不用担心Samba开发组按照功能不同对smb.conf文件进行了分段划分条理非常地清楚哈。下面我们来具体看下smb.conf的内容哈smb.conf大致分为三个部分我们来了解一下其中我们经常要使用到的字段我们将以实例解释其他字段我们整理到字段汇总有兴趣的可以去看下哈~~1、samba配置简介smb.conf文件的开头部分为samba配置简介告诉我们smb.conf文件的作用及相关信息。smb.conf中以“#”开头的为注释为用户提供相关的配置解释信息方便用户参考不用修改它哈。smb.conf中还有以“;”开头滴这些都是samba配置的格式范例默认是不生效滴可以通过去掉前面的“;”并加以修改来设置想使用的功能。2、Global SettingsGlobal Settings设置为全局变量区域。那什么是全局变量哈全局变量就是说我们只要在global时进行设置那么该设置项目就是针对所有共享资源生效滴。这与以后我们学习的很多服务器配置文件相似哈。该部分以[global]开始:smb.conf配置通用格式对相应功能进行设置字段设定值 下面我们说下[global]常用字段及设置方法1设置工作组或域名称工作组是网络中地位平等的一组计算机可以通过设置workgroup字段来对samba服务器所在工作组或域名进行设置。我们设置samba服务器的工作组为RHEL52服务器描述服务器描述实际上类似于备注信息哈在一个工作组中可能存在多台服务器为了方便用户浏览我们可以在server string配置相应描述信息这样用户就可以通过描述信息知道自己要登录哪台服务器了啊~我们设置samba描述信息为“RHEL5 File Server”。3设置samba服务器安全模式samba服务器有share、user、server、domain和ads 五种安全模式用来适应不同的企业服务器需求。1share安全级别模式客户端登录samba服务器不需要输入用户名和密码就可以浏览samba服务器的资源适用于公共的共享资源安全性差需要配合其他权限设置保证samba服务器的安全性。2user安全级别模式客户端登录samba服务器需要提交合法帐号和密码经过服务器验证才可以访问共享资源服务器默认为此级别模式。 3server安全级别模式客户端需要将用户名和密码提交到指定的一台samba服务器上进行验证如果验证出现错误客户端会用user级别访问。4domain安全级别模式如果samba服务器加入windows域环境中验证工作服将由windows域控制器负责domain级别的samba服务器只是成为域的成员客户端并不具备服务器的特性samba早期的版本就是使用此级别登录windows域滴。5ads安全级别模式当samba服务器使用ads安全级别加入到windows域环境中其就具备了domain安全级别模式中所有的功能并可以具备域控制器的功能。3、Share Definitions共享服务的定义Share Definitions设置对象为共享目录和打印机如果我们想发布共享资源需要对Share Definitions部分进行配置。Share Definitions字段非常丰富设置灵活。我们先来讲下几个最常用的字段哈~1设置共享名共享资源发布后必须为每个共享目录或打印机设置不同的共享名给网络用户访问时使用并且共享名可以与原目录名不同。共享名设置非常简单[共享名]我们来看个例子Samba服务器中有个目录为/share需要发布该目录成为共享目录定义共享名为public2共享资源描述网络中存在各种共享资源为了方便用户识别可以为其添加备注信息以方便用户查看时知道共享资源的内容是什么哈。格式comment 备注信息举个例子哈,samba服务器上有个/sales目录存放公司销售部的数据为了对公司部门员工进行区分可以添加备注信息。3共享路径共享资源的原始完整路径可以使用path字段进行发布务必正确指定。格式path   绝对地址路径samba服务器上/share/tools目录存放常用工具软件需要发布该目录为共享我们可以这样做。4设置匿名访问共享资源如果对匿名访问进行设置可以更改public字段。格式public yes     #允许匿名访问public no      #禁止匿名访问samba服务器/share共享目录允许匿名用户访问可以这样设置。5设置访问用户如果共享资源存在重要数据的话需要对访问用户审核我们可以使用valid users字段进行设置哈~格式valid users 用户名valid users 组名我们来看下面一个例子哈samba服务器/share/tech目录存放了公司技术部数据只允许技术部员工和经理访问技术部组为tech,经理帐号为gm6设置目录只读共享目录如果限制用户的读写操作我们可以通过readonly实现哈~格式readonly yes    #只读readonly no     #读写samba服务器公共目录/public存放大量共享数据为保证目录安全我们只允许读取禁止写入哈~7设置目录可写如果共享目录允许用户写操作可以使用writable或write list两个字段进行设置哈~writable格式writable yes      #读写writable no       #只读write list格式write list 用户名write list 组名注意[homes]为特殊共享目录表示用户主目录。[printers]表示共享打印机。3.2 Samba服务日志文件日志文件对于samba非常滴重要哈它存储着客户端访问samba服务器的信息以及samba服务的错误提示信息等可以通过分析日志帮助解决客户端访问和服务器维护等问题。在/etc/samba/smb.conf文件中log file为设置samba日志的字段。samba服务的日志文件默认存放在/var/log/samba/中其中samba会为每个连接到samba服务器的计算机分别建立日志文件。我们启动smb服务/etc/rc.d/init.d/smb start使用ls -a命令可以查看日志的所有文件。其中当samba服务器刚刚建立好后只有两个文件分别是nmbd.log和smbd.log它们分别记录nmbd和smbd进程的运行日志。nmbd.log记录nmbd进程的解析信息。 smbd.log记录用户访问samba服务器的问题以及服务器本身的错误信息可以通过该文件获得大部分的samba维护信息。当客户端通过网络访问samba服务器后会自动添加客户端的相关日志。所以哈我们Linux管理员可以根据这些文件来查看用户的访问情况和服务器的运行情况。另外当samba服务器工作异常时也可以通过/var/log/samba/下的日志进行分析哈~3.3 Samba服务密码文件 samba服务器发布共享资源后客户端访问samba服务器需要提交用户名和密码进行身份验证验证合格后才可以登录。samba服务为了实现客户身份验证功能将用户名和密码信息存放在/etc/samba/smbpasswd中在客户端访问时将用户提交资料与smbpasswd存放的信息进行比对如果相同并且samba服务器其他安全设置允许客户端与samba服务器连接才能建立成功哈~那如何建立samba帐号呢偶在说之前先强调一点哈samba帐号并不能直接建立滴需要先建立Linux同名的系统帐号。比如如果我们要建立一个名为michael的samba帐号那Linux系统中必须提前存在一个同名的michael系统帐号。samba中添加帐号命令为smbpasswd命令格式:smbpasswd -a 用户名我们来测试下在samba服务器中添加samba帐号redking,我们建立samba帐号之前必须先添加相对应的系统帐号使用useradd命令建立帐号redking然后执行passwd命令为帐号redking设置密码哈~最后我们添加redking用户的samba帐号执行smbpasswd添加帐号redking到samba配置文件中。OKSamba帐号添加完毕哈如果我们在添加samba帐号时输入完两次密码出错Failed to modify password entry for user amy就像下面这样这是因为Linux本地用户里没有amy这个用户我们在系统里面添加一下就OK了哈~呵所以哈务必要注意在建立samba帐号之前一定要先建立一个与samba帐号同名的系统帐号。我们经过上面的设置再次访问samba共享文件时就可以使用redking或amy帐号访问了。注意解决/etc/samba目录下没有smbpasswd文件原因samba启用了tdbsam验证。解决smb.conf文件中注释掉passdb backend tdbsam 一行加上smb passwd file /etc/samba/smbpasswd然后保存退出。这样再建立用户就产生了/etc/samba/smbpasswd文件了。 使用cat命令查看smbpasswd文件滴内容哈~cat /etc/samba/smbpasswd3.4 Samba的启动与停止 1samba服务的启动service smb start 或 /etc/rc.d/init.d/smb start2samba服务的停止service smb stop 或 /etc/rc.d/init.d/smb stop3samba服务的重启service smb restart 或 /etc/rc.d/init.d/smb restart4samba服务配置重新加载service smb reload 或 /etc/rc.d/init.d/smb reload注意Linux服务中当我们更改配置文件后一定要记得重启服务哈让服务重新加载配置文件这样新的配置才可以生效哈~5自动加载samba服务chkconfig我们可以使用chkconfig命令自动加载smb服务: chkconfig --level 3 smb on      #运行级别3自动加载 chkconfig --level 3 smb off     #运行级别3不自动加载ntsysv我们还可以使用ntsysv命令利用文本图形界面对smb自动加载进行配置如果要自动加载smb可以在其前面选中“*”否则取消掉就不自动加载了哈~3.5 share服务器实例及详解ok,上面已经对samba的相关性配置文件讲了个大概哈现在我们通过实例来掌握一下samba具体使用流程来搭建samba服务器。如果公司现在用一个工作组Workgroup需要添加samba服务器作为文件服务器哈并发布共享目录/share共享名为public,这个共享目录允许所有公司员工访问。我们分析下哈这个案例属于samba的基本配置我们可以实用share安全级别模式既然允许所有员工访问则需要为每个用户建立一个samba帐号那么如果公司拥有大量用户呢1000个用户100000个用户一个个设置会非常滴麻烦哈我们可以通过配置security share来让所有用户登录时采用匿名帐户nobody访问这样实现起来非常简单哈~~~1 修改samba主配置文件smb.confvim /etc/samba/smb.conf(1).设置samba服务器工作组名为Workgroup (2).添加samba服务器注释信息为File Server (3).设置samba安全级别为share模式允许用户匿名访问 # Global Settings [global] # ----------------------- Netwrok Related Options ------------------------- # # workgroup NT-Domain-Name or Workgroup-Name, eg: MIDEARTH # # server string is the equivalent of the NT De.ion field # # netbios name can be used to specify a server name not tied to the hostname # # Interfaces lets you configure Samba to use multiple interfaces # If you have multiple network interfaces then you can list the .es # you want to listen . (never omit localhost) # # Hosts Allow/Hosts Deny lets you restrict who can connect, and you can # specifiy it as a per share option as well #         workgroup Workgroup         #设置samba服务器工作组名为Workgroup         server string File Server       #添加samba服务器注释信息为File Server ;       netbios name MYSERVER ;       interfaces lo eth0 192.168.12.2/24 192.168.13.2/24 ;       hosts allow 127. 192.168.12. 192.168.13. # --------------------------- Logging Options ----------------------------- # # Log File let you specify where to put logs and how to split them up. # # Max Log Size let you specify the max size log files should reach # logs split per machine ;       log file /var/log/samba/%m.log         # max 50KB per log file, then rotate ;       max log size 50 # ----------------------- Standalone Server Options ------------------------ # # Scurity can be set to user, share(deprecated) or server(deprecated) # # Backend to store user information in. New installations should # use either tdbsam or ldapsam. smbpasswd is available for backwards # compatibility. tdbsam requires no further configuration. security share         #设置samba安全级别为share模式允许用户匿名访问 ;       passdb backend tdbsam         smb passwd file /etc/samba/smbpasswd # ----------------------- Domain Members Options ------------------------ # # Security must be set to domain or ads # # Use the realm option .ly with security ads # Specifies the Active Directory realm the host is part of # # Backend to store user information in. New installations should # use either tdbsam or ldapsam. smbpasswd is available for backwards # compatibility. tdbsam requires no further configuration. # (4).设置共享目录的共享名为public(5).设置共享目录的绝对路径为/share(6).最后我们设置允许匿名访问哈~设置完smb.conf后保存退出哈~2重新加载配置上面我们说过哈Linux为了使新配置生效需要重新加载配置可以使用restart重新启动服务或者使用reload重新加载配置哈~注意哈 偶这里强调一下细节重启samba服务虽然可以让配置生效但是restart是先关闭samba服务再开启服务哈这样如果在公司网络运营中肯定会对客户端员工的访问造成影响建议使用reload命令重新加载配置文件使其生效这样不需要中断服务就可以重新加载配置哈~samba服务器通过以上设置现在用户就可以不需要输入帐号和密码就可以直接登录samba服务器并访问public共享目录哈~我们测试下在/share目录下建个文件试下touch /share/test_sharemode_samba.tar我们看下效果哈~3.6 user服务器实例及详解 上面的案例我们讲了share安全级别模式的samba服务器哈可以实现用户方便滴通过匿名方式访问但是如果在我们samba服务器上存在重要文件的目录为了保证系统安全性及资料保密性哈我们就必须对用户进行筛选允许或禁止相应的用户访问指定滴目录哈这里share安全级别模式就不能满足我们这样的实际要求了。实现用户身份验证的方法很多我们可以将安全级别模式配置为user、server、domain和ads但是最常用的还是user安全级别模式哈下面偶就来看下user这个安全级别模式的配置哈~如果公司有多个部门因工作需要我们就会分门别类的建立相应部门的目录并将销售部的资料存放在samba服务器的/companydata/sales/目录下,集中管理以便销售人员浏览并且该目录只允许销售部员工访问。我们分析下在/companydata/sales/目录中存放有销售部的重要数据为了保证其他部门无法查看其内容我们需要将全局配置中security设置为user安全级别这样就启用了samba服务器的身份验证机制然后在共享目录/companydata/sales下设置valid users字段配置只允许销售部员工能够访问这个共享目录。1添加销售部用户和组并添加相应samba帐号使用groupadd命令添加sales组然后执行useradd命令和passwd命令添加销售部员工的帐号及密码哈~接下来为销售部成员添加相应samba帐号2修改samba主配置文件smb.conf(1).设置user安全级别模式(2).设置销售部共享目录为sales(3).指定共享目录为绝对路径为/companydata/sales(4).设置可以访问的用户为sales组成员3重新加载配置上个案例讲过了哈要让修改后的Linux配置文件生效我们就要重新加载配置。#service smb reload现在我们测试下输入销售部的帐号及密码进行登录打开sales共享目录这样销售部成员就可以进行访问sales共享目录下的数据了4 Samba高级服务器配置 上面偶说了下samba滴常规配置哈这些已经可以使用企业内部滴资料通过网络共享并分配适当滴共享权限来管理共享目录但这仅仅对于很多大型企业或安全要求高滴来说还是不能满足其需求哈所以偶下面就来讲下samba滴高级服务器配置让我们搭建滴samba服务器功能更强大管理更灵活我们滴数据也更安全哈~4.1 用户账号映射前面已经说过samba的用户帐号信息是保存在smbpasswd文件中滴而且可以访问samba服务器的帐号也必须对应一个同名的系统帐号。基于这一点所以哈对于一些hacker来说只要知道samba服务器滴samba帐号就等于是知道了Linux系统帐号只要crack其samba帐号密码加以利用就可以攻击samba服务器哈。所以我们要使用用户帐号映射这个功能来解决这个问题哈~~~用户帐号映射这个功能需要建立一个帐号映射关系表里面记录了samba帐号和虚拟帐号的对应关系客户端访问samba服务器时就使用虚拟来登录哈。1编辑主配置文件/etc/samba/smb.conf在global下添加一行字段username map /etc/samba/smbusers开启用户帐号映射功能。2编辑/etc/samba/smbuserssmbusers文件保存帐号映射关系其有固定滴格式samba帐号 虚拟帐号映射帐号帐号redking就是我们上面建立的samba帐号同时也是Linux系统帐号51cto及51blog就是映射滴帐号名虚拟帐号帐号redking在我们访问共享目录时只要输入51cto或51blog就可以成功访问了但是实际上访问samba服务器的还是我们滴redking帐号这样一来就解决了安全问题哈~我们继续。3重启samba服务service smb restart4验证效果哈~输入我们定义的映射帐号51cto注意我们没有输入帐号redking哈~映射帐号51cto滴密码和redking帐号一样哈~现在就可以通过映射帐号浏览共享目录了哈~注意强烈建议不要将samba用户的密码与本地系统用户的密码设置成一样哈可以避免非法用户使用samba帐号登录系统非法破坏哈~~~4.2 客户端访问控制对于samba服务器的安全性我们已经说过可以使用valid users字段去实现用户访问控制但是如果企业庞大存在大量用户的话这种方法操作起来就显得比较麻烦哈~比如samba服务器共享出一个目录来访问但是要禁止某个IP子网或某个域的客户端访问此资源这样滴情况使用valid users字段就无法实现客户端访问控制。下面我们就讲下使用hosts allow和hosts deny两个字段来实现该功能。而用好这两个字段滴关键在于熟悉和清楚它们的使用方法和作用范围哈hosts allow 和 hosts deny 的使用方法 1hosts allow 和 hosts deny 字段的使用hosts allow 字段定义允许访问的客户端hosts deny 字段定义禁止访问的客户端2使用IP地址进行限制比如公司内部samba服务器上共享了一个目录sales这个目录是存放销售部的共享目录公司规定192.168.0.0/24这个网段的IP地址禁止访问此sales共享目录但是其中192.168.0.24这个IP地址可以访问。先将安全级别模式由user改为share这里我们添加hosts deny和hosts allow字段hosts deny 192.168.0. 表示禁止所有来自192.168.0.0/24网段的IP地址访问hosts allow 192.168.0.24 表示允许192.168.0.24这个IP地址访问当host deny和hosts allow字段同时出现并定义滴内容相互冲突时hosts allow优先。现在设置的意思就是禁止C类地址192.168.0.0/24网段主机访问但是允许192.168.0.24主机访问。测试下效果如果是192.168.0.24的客户端就可以正常访问如果是其他客户端滴话就是这样的效果如果想同时禁止多个网段滴IP地址访问此服务器可以这样设置hosts deny 192.168.1. 172.16. 表示拒绝所有192.168.1.0网段和172.16.0.0网段的IP地址访问sales这个共享目录。hosts allow 10. 表示允许10.0.0.0网段的IP地址访问sales这个共享目录。注意当需要输入多个网段IP地址的时候需要使用“空格”符号隔开。3使用域名进行限制我们来看这样一个例子哈公司samba服务器上共享了一个目录public公司规定.sale.com域和.net域的客户端不能访问并且主机名为free的客户端也不能访问。hosts deny .sale.com .net free 表示禁止.sale.com域和.net域及主机名为free的客户端访问public这个共享目录。注意域名和域名之间或域名和主机名之间需要使用“空格”符号隔开。4使用通配符进行访问控制samba服务器共享了一个目录security规定所有人不允许访问只有主机名为boss的客户端才可以访问。对于这样一个实例哈我们就可以通过使用通配符的方式来简化配置。hosts deny All 表示所有客户端并不是说允许主机名为ALL的客户端可以访问哈~~~常用的通配符还有“*”“”“LOCAL”等。还有一种比较有意思的情况如果我们规定所有人不能访问security目录只允许192.168.0.0网段的IP地址可以访问但是192.168.0.100及192.168.0.78的主机是要禁止访问滴。我们可以使用hosts deny禁止所有用户访问再设置hosts allow允许192.168.0.0网段主机但当hosts deny和hosts allow同时出现而且冲突滴时候hosts allow生效如果这样滴话那么允许192.168.0.0网段的IP地址可以访问但是192.168.0.100及192.168.0.78的主机禁止访问就无法生效了哈~我们可以使用EXCEPT进行设置。hosts allow 192.168.0. EXCEPT 192.168.0.100 192.168.0.78 表示允许192.168.0.0网段IP地址访问但是192.168.0.100和192.168.0.78除外哈~hosts allow 和 hosts deny 的作用范围 hosts allow和hosts deny设置在不同的位置上它们的作用范围是不一样滴。如果设置在[global]里面表示对samba服务器全局生效哈如果设置在目录下面则表只对这个目录生效。这样设置表示只有192.168.0.88才可以访问samba服务器全局生效哈~这样设置就表示只对单一目录security生效只有192.168.0.88才可以访问security目录里面的资料。4.3 设置Samba的权限 到这里我们已经可以对客户端访问进行有效的控制但是对于能访问的客户端来说我们还是不能灵活方便滴控制他们访问共享资源的权限比如boss或gm这样的帐号可以对某个共享目录具有完全控制权限其他帐号只有只读权限哈这样的情况我们就可以使用write list字段来实现哈~例如公司samba服务器上有个共享目录tech公司规定只有boss帐号和tech组的帐号可以完全控制其他人只有只读权限。如果只用writable字段则无法满足这个实例的要求因为当writable yes时表示所有人都可以写入了哈而当writable no时表示所有人都不可以写入。这时我们就需要用到write list字段哈~write list boss,tech 就表示只有boss帐号和tech组成员才可以对tech共享目录有写入权限哈其中tech就表示tech组。我们来看下writable和write list之间的区别字段值描述writableyes所有帐号都允许写入writableno所有帐号都禁止写入write list写入权限帐号列表列表中的帐号允许写入 4.4 Samba的隐藏共享 我们还可以使用browseable字段实现隐藏共享的功能哈~~~比如我们要把samba上的技术部共享目录隐藏我们可以这样设置。browseable no表示隐藏该目录现在就看不到tech共享目录了哈~如果我们直接输入\\192.168.0.188\tech就可以访问了哈~在有些特殊的情况下browseable也无法满足企业的需求比如samba服务器上有个security目录此目录只有boss用户可以浏览访问其他人都不可以访问。因为samba的主配置文件只有一个所有帐号访问都要遵守该配置文件的规则如果隐藏了该目录那么所有人就都看不到该目录了就像上面演示的一样要知道共享目录名称后输入\\192.168.0.188\tech才可以访问技术部资料。如果这样滴目录一多滴话不可以叫boss去记那么多目录名称哈那样还不被boss骂死哈~~~^_^问题出在samba服务的主配置文件只有一个而smb.conf没有提供字段允许部分人可以浏览隐藏目录的功能。那我们可以换个角度哈既然单一滴配置文件无法实现要求那么我们可以为不同需求的用户或组分别建立相应的配置文件并单独配置后实现其隐藏目录的功能哈现在我们为boss帐号建立一个配置文件并且让其访问的时候能够读取这个单独的配置文件。1建立独立滴配置文件哈~先为boss帐号创建一个单独的配置文件我们可以直接复制/etc/samba/smb.conf这个文件并改名就可以了如果为单个用户建立配置文件命名时一定要包含用户名哈。我们使用cp命令复制主配置文件为boss帐号建立独立的配置文件。2编辑smb.conf主配置文件哈~在[global]中加入config file /etc/samba/smb.conf.%U表示samba服务器读取/etc/samba/smb.conf.%U文件其中%U代表当前登录用户。命名规范与独立配置文件匹配哈~3编辑smb.conf.boss独立配置文件编辑boss帐号的独立配置文件smb.conf.boss将tech目录里面的browseable no删除这样当boss帐号访问samba时tech共享目录对boss帐号访问就是可见滴这样主配置文件smb.conf和boss帐号的独立配置文件相搭配就有实现其他用户访问时tech共享目录是隐藏滴而boss帐号访问时就是可见滴。4重新启动samba服务service smb restart5测试效果哈~现在我们以普通用户redking帐号登录samba服务器哈~~~发现以redking帐号登录samba看不到tech共享目录哈~~证明tech共享目录对除boss帐号以外的人是隐藏共享滴。现在我们以boss帐号登录来看看哈~~我们发现以boss帐号登录之后tech共享目录自动显示了哈~~~这样以独立配置文件的方法来实现隐藏共享对不同帐号的可见性非常方便哈~注意目录隐藏了并不是说不共享了只要知道共享名并且有相应权限还是可以访问滴就像上面演示的一样可以输入“\\IP地址\共享名”的方法就可以访问隐藏共享了。5 Samba客户端配置 5.1 Linux客户端访问Samba共享linux客户端访问服务器主要有两种方法1使用smbclient命令在Linux中samba客户端使用smbclint这个程序来访问samba服务器时先要确保客户端已经安装了samba-client这个rpm包。smbclient可以列出目标主机共享目录列表smbclient命令格式smbclient -L 目标IP地址或主机名 -U 登录用户名%密码当我们查看rhel5(192.168.0.188)主机的共享目录列表时提示输入密码这时候可以不输入密码哈我们直接按回车这样表示匿名登录然后就会显示匿名用户可以看到的共享目录列表了哈~smbclient -L rhel5或者smbclient -L 192.168.0.188如果想使用samba帐号相看samba服务器端共享了什么目录我们可以加上-U参数哈~后面跟上用户名%密码。smbclient -L 192.168.0.188 -U boss%boss这样就显示了只有boss帐号才显示的tech技术部共享目录。注意不同用户使用smblient浏览的结果可能是不一样滴这要根据服务器设置的访问控制权限而定哈~我们还可以在使用smbclient命令行共享访问模式浏览共享的资料哈smbclient命令行共享访问模式命令格式smbclient //目标IP地址或主机名/共享目录 -U 用户名%密码上面已经显示了服务器上有一个tech共享目录我们来查看一下里面的内容哈~另外smbclient登录samba服务器后我们可以使用help查询所支持的命令。2使用mount命令挂载共享目录mount命令挂载共享目录格式mount -t cifs //目标IP地址或主机名/共享目录名称 挂载点 -o username用户名[rootclient ~]# mount -t cifs //192.168.0.188/tech /mnt/sambadata/ -o usernameboss%boss 这表示挂载192.168.0.188主机上的共享目录tech到/mnt/sambadata目录下cifs就是samba所使用的文件系统哈5.2 Windows客户端访问Samba共享 这个就比较简单了哈我们也一直用这个访问微软的共享目录哈上面其他也已经讲过了哈方法就是在开始运行里面使用UNC路径直接进行访问哈~~也可以到网上邻居里面找但是偶不太喜欢用这个方法因为速度太慢哈。还是觉得在开始--运行或是直接在资源管理器或IE的地址栏里面输入UNC路径比较快哈~1在开始--运行里面使用UNC路径直接进行访问2映射网络驱动器访问samba服务器共享目录输入tech共享目录的地址输入可以访问tech共享目录的samba帐号和密码这时在我的电脑的网络驱动器中就可以看到映射的Z盘了哈~打开Z盘就可以访问tech共享目录里面的资源。6 Samba的打印共享默认情况下samba的打印服务是开放滴~所以我们只要把打印机安装好后客户端的用户就可以使用打印机了。1设置global配置项 修改smb.conf全局配置开启打印共享功能2设置printers配置项使用默认设置就可以让客户端正常使用权打印机了哈需要注意的就是printable一定要设置成yes哈如果不设置成yes那还打什么哈~~~path字段定义打印机队列可以根据需要自己定制哈另外共享打印和共享目录不一样哈安装完打印机后必须重新启动samba服务否则客户端可能无法看到共享的打印机。如果设置只允许部分员工使用打印机我们可以使用valid users、hosts allow或hosts deny字段来实现哈这些在讲共享目录时已经说过了不清楚可以再翻翻看哈~~下面进入samba企业实战与应用。7 Samba企业实战与应用 7.1 企业环境及需求 samba服务器目录企业数据目录/companydata公共目录/companydata/share销售部目录/companydata/sales技术部/companydata/tech企业员工情况总经理gm销售部销售部经理 redking、员工 sky、员工 jane技术部技术部经理 michael、员工 bill、员工 joy搭建samba文件服务器建立公共共享目录允许所有人访问权限为只读为销售部和技术部分别建立单独的目录只可以总经理和相应部门员工访问并且公司员工禁止访问非本部门的共享目录。这是个典型的企业文件服务器案例哈。总经理-----------------------                                            | 销售部-------------------交换机--------------------samba服务器                                            | 技术部-----------------------7.2 需求分析对于建立公共目录public字段就可以实现匿名访问员工只能访问本部门的共享目录禁止访问非本部门的共享目录我们可以通过设置目录共享字段“browseable no”及字段“valid users”来实现其隐藏功能和相应的访问权限。这样设置不能很好得解决同一目录多种需求的权限设置所以我们需要建立独立配置文件为每个部门建立一个组后并为每个组建立配置文件来实现隔离用户权限会比较灵活哈~7.3 解决方案1建立各部门专用共享目录使用mkdir建立需求的共享目录以便分门别类的存储相应资料。同时设置/companydata共享目录的用户权限2添加samba服务器描述及设置smbpasswd文件默认/etc/samba/目录下没有smbpasswd文件,我们要先关闭samba的tdbsam验证。解决方法在smb.conf文件中注释掉passdb backend tdbsam 一行为了指定samba用户的验证我们加上这一条smb passwd file /etc/samba/smbpasswd然后保存退出。3)添加用户和组 先建立销售部组sales技术部组tech然后使用useradd命令添加总经理帐号gm及各个员工的帐号并加入相应的用户组。接着使用smbpasswd命令添加samba用户呃~~~不好意思哈~~~帐号gm的samba用户忘记添加了现在补上哈~4配置smb.conf文件1建立单独配置文件用户配置文件使用用户名命令哈组配置文件使用组名命令。2设置主配置文件smb.conf这里我们配置smb.conf主配置文件在global中添加相应字段哈确保samba服务器的主配置文件可以调用独立的用户配置文件和组配置文件。include /etc/samba/%U.smb.conf表示使samba服务器加载/etc/samba目录下格式为“用户名.smb.conf”的配置文件。include /etc/samba/%G.smb.conf表示使samba服务器加载/etc/samba目录下格式为“组名.smb.conf”的配置文件。设置共享目录/companydata/share5设置总经理gm配置文件vim /etc/samba/gm.smb.conf6设置销售部组sales配置文件vim /etc/samba/sales.smb.conf7设置技术部组tech配置文件vim /etc/samba/tech.smb.conf8开启samba服务service smb start9测试我们先用gm帐号登录测试可以全部看到共享目录。/companydata/share目录只读注意最好禁用RHEL5中的selinux功能否则会出现些莫名其妙滴问题比如下面的帐号gm明明对共享目录sales和tech是777的权限但就是只能创建文件却不能创建文件夹哈~关闭selinux打开selinux配置文件/etc/selinux/config设置selinux disabled后保存退出并重启系统。查看selinux当前状态sestatus -v现在我们就可以创建文件夹了现在我们以其他帐号测试就用技术部joy吧在这里技术部的员工就看不到销售部的共享目录。同时对public目录只读权限对tech目录有读写权限。因为禁止对共享目录sales访问就算知道了\\rhel5\sales路径也是不能访问滴8 Samba排错 1Linux服务一般滴排错方法1错误信息一般仔细看下显示的错误信息根据错误提示一般滴问题就可以判断问题出在什么地方了。2配置文件第2个我们可以查配置文件有时可能误操作导致配置失误服务无法正常运行我们可以通过检查配置文件来确认问题。现在很多服务的软件包有自带配置文件检查工具我们可以通过这些工具对配置文件进行检查哈~3日志文件如果服务出现问题我们还可以使用tail命令来动态监控日志文件在CLI状态下可以使用CtrlAltF1~F6切换到另一个CLI文字终端下查看。tail -F /var/log/messages2samba服务故障排错1使用testparm命令检查上面偶提到软件包有自带的配置文件检查工具我们可以使用testparm命令检测smb.conf文件的语法如果报错说明smb.conf文件设置有错误哈这样我们可以根据提示信息来修改主配置文件和独立配置文件。testparm /etc/samba/smb.conf[rootrhel5 ~]# testparm /etc/samba/smb.conf Load smb config files from /etc/samba/smb.conf Cant find include file /etc/samba/.smb.conf Cant find include file /etc/samba/%G.smb.conf Processing section [homes] Processing section [printers] Processing section [public] Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions [global]         workgroup COMPANYDOMAIN         server string Company Samba File Server         cups options raw         include /etc/samba/%G.smb.conf [homes]         comment Home Directories         read .ly No         browseable No [printers]         comment All Printers         path /var/spool/samba         printable Yes         browseable No [public]         comment public data         path /companydata/share         guest ok Yes [rootrhel5 ~]# testparm /etc/samba/gm.smb.conf Load smb config files from /etc/samba/gm.smb.conf Processing section [homes] Processing section [printers] Processing section [sales] Processing section [tech] Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions [global]         workgroup COMPANYDOMAIN         server string Company Samba File Server         cups options raw [homes]         comment Home Directories         read .ly No         browseable No [printers]         comment All Printers         path /var/spool/samba         printable Yes         browseable No [sales]         comment sales data         path /companydata/sales         valid users gm         read .ly No [tech]         comment tech data         path /companydata/tech         valid users gm         read .ly No [rootrhel5 ~]# testparm /etc/samba/sales.smb.conf Load smb config files from /etc/samba/sales.smb.conf Processing section [homes] Processing section [printers] Processing section [sales] Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions [global]         workgroup COMPANYDOMAIN         server string Company Samba File Server         cups options raw [homes]         comment Home Directories         read .ly No         browseable No [printers]         comment All Printers         path /var/spool/samba         printable Yes         browseable No [sales]         comment sales data         path /companydata/sales         valid users sales, gm         read .ly No [rootrhel5 ~]# testparm /etc/samba/tech.smb.conf Load smb config files from /etc/samba/tech.smb.conf Processing section [homes] Processing section [printers] Processing section [tech] Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions [global]         workgroup COMPANYDOMAIN         server string Company Samba File Server         cups options raw [homes]         comment Home Directories         read .ly No         browseable No [printers]         comment All Printers         path /var/spool/samba         printable Yes         browseable No [tech]         comment tech data         path /companydata/tech         valid users tech, gm         read .ly No [rootrhel5 ~]# 2使用ping命令测试samba服务器主配置文件排除错误后重启smb服务如果客户端仍然无法连接samba服务器我们在客户端可以使用ping命令进行测试,这个我们微软的系统中排障一样哈根据出现的不同情况可以进行分析哈。1如果没有收到任何提示说明客户端TCP/IP协议安装有问题需要重新安装客户端TCP/IP协议然后重新测试。2如果提示“host not found”则检查客户端DNS或者/etc/hosts文件有没正确设置确保客户端能够使用名称访问samba服务器。3无法ping通还可能是防火墙设置滴问题需要重新设置防火墙的规则开启samba与外界联系的端口。4当然还有一种低级的情况那就是由于主机名输入错误导致不能ping通请更正后重试哈~~~O(^_^)O3使用smbclient命令进行测试如果客户端与samba服务器可以ping通说明客户端与服务器间的连接没有问题哈如果还是不能访问samba共享资源可以执行smbclient命令进一步测试服务器端的配置。如果测试samba服务器正常并且输入了正确的帐号和密码那么执行smbclient命令就可以获得共享列表。smbclient -L 192.168.0.188 -U joy%123如果我们看到了错误信息提示“tree connect failed”则说明可以在smb.conf文件中设置了host deny字段拒绝了客户端的IP地址或域名我们可以修改smb.conf配置文件允许客户端访问就可以了哈~如果返回信息是“connection refused”提示拒绝连接则说明是samba服务器smbd进程可以没有被开启哈~我们必须确保smbd和nmbd进程处于开启状态并使用netstat -a检查netbios使用的139端口是否处于监听状态哈。检查samba服务开启smb服务netbios-ssn 会话管理 netbios-ns 名字解析 netbios-dgm 数据报如果提示“session setup failed”连接建立失败则说明服务器拒绝了连接请求这是因为输入的用户名和密码错误引起滴我们输入正确的帐号和密码就ok了哈~有时也会收到比如“Your server software is being unfriendly”错误信息提示服务器软件存在问题这个故障一般是因为配置smbd时使用了错误的参数或者启用smbd时遇到的类似严重破坏错误我们可以使用testparm来检查相应的配置文件并同时检查相关日志文件哈。###########################################################
http://www.huolong8.cn/news/6895/

相关文章:

  • 想建个图片网站深圳工程网站建设
  • 电商网站新闻怎么做5173网站源码
  • 设计师必逛网站排名免费做网站模板在哪里做
  • 北京58网站建设互联网工程师
  • 信息企业网站建设的优势网页设计与制作课程简介
  • 网站的空间是啥长沙最新死亡事件
  • 建设公司网站需要钱吗大学生网页设计作业
  • 泰兴市淘宝网站建设wordpress怎么做的
  • seo排行榜年度10佳网站详情页设计收费
  • 诚聘高新网站开发工程师湖南省建筑设计院集团有限公司
  • 互联网网站建设哪里好WordPress 输入任意作者
  • 论坛网站制作费用苏州保洁公司哪家好
  • 制作微信公众的网站开发做网站必须在工信部备案吗
  • 网站的制作过程网站关键词数量
  • 完整网站项目的逻辑重庆网站建设及优化公司
  • 大连网站排名优化价格网建管理是干嘛的
  • 陕西网站设计河北住房和城乡建设官网
  • 响应式电商网站网站logo提交
  • jsp网站开发之html入门知识可以做动漫的网站有哪些
  • 做电商不不得不知道的网站wordpress主题代码大全
  • iis 多网站安全设置wordpress中文版支持繁体
  • 做网站专业公司网站建设代码生成器
  • 网站开发上传视频教程渭南网站建设网站建设
  • 网站上线发布流程做翻糖的网站
  • 郑州公司建网站wordpress presscore lite
  • 网站基本信息设置如何做好品牌网站建设
  • 专业建设网站公司排名设计头像 制作 免费
  • 响应式网站建设机构支付招聘网站套餐费用怎么做帐
  • 做吉祥物设计看什么网站wordpress如何在数据库中修改域名
  • 西安做网站哪家比较好6生肖竞猜网站建设