samba服务全攻略_第1页
samba服务全攻略_第2页
samba服务全攻略_第3页
samba服务全攻略_第4页
samba服务全攻略_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 Samba 原理 1.1 Samba 概述 接触 Linux 我们听的最多的就是 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 端口。 (1 )Samba 工作流程 当客户端访问服务器时,信息通过 SMB 协议进行传输,其工作过程可以分成四个步骤哈: 步骤1:协议协商 客户端在访问 Samba 服务器时,发送 negprot 指令数据包,告知目标计算机其支持的 SMB 类型。 Samba 服务器根据客户端的情况,选择最优的 SMB 类型,并做出回应。 -negprot 请求- 客户端 服务器 -negprot 响应- 步骤2:建立连接 当 SMB 类型确认后,客户端会发送 session setup 指令数据包,提交帐号和密码,请求与 Samba 服务器建立连接,如果客户端通过身份验证,Samba 服务器会对 session setup 报文作 出回应,并为用户分配唯一的 UID,在客户端与其通信时使用。 -session setup ”开头滴,这些都是 samba 配置的格式范例,默认是不生效滴,可以通过去 掉前面的“;”并加以修改来设置想使用的功能。 2、 Global Settings Global Settings 设置为全局变量区域。那什么是全局变量哈?全局变量就是说我们只要在 global 时进行设置,那么该设置项目就是针对所有共享资源生效滴。这与以后我们学习的很多服务器配置 文件相似哈。 该部分以global开始: smb.conf 配置通用格式,对相应功能进行设置: 字段= 设定值 下面我们说下global常用字段及设置方法: 1)设置工作组或域名称 工作组是网络中地位平等的一组计算机,可以通过设置 workgroup 字段来对 samba 服务器所在 工作组或域名进行设置。 我们设置 samba 服务器的工作组为 RHEL5 2)服务器描述 服务器描述实际上类似于备注信息哈,在一个工作组中,可能存在多台服务器,为了方便用户浏览, 我们可以在 server string 配置相应描述信息,这样用户就可以通过描述信息知道自己要登录哪台 服务器了啊 我们设置 samba 描述信息为“RHEL5 File Server”。 3)设置 samba 服务器安全模式 samba 服务器有 share、user、server、domain 和 ads 五种安全模式,用来适应不同的企业 服务器需求。 (1 )share 安全级别模式 客户端登录 samba 服务器,不需要输入用户名和密码就可以浏览 samba 服务器的资源,适用于 公共的共享资源,安全性差,需要配合其他权限设置,保证 samba 服务器的安全性。 (2 )user 安全级别模式 客户端登录 samba 服务器,需要提交合法帐号和密码,经过服务器验证才可以访问共享资源,服 务器默认为此级别模式。 (3 )server 安全级别模式 客户端需要将用户名和密码,提交到指定的一台 samba 服务器上进行验证,如果验证出现错误, 客户端会用 user 级别访问。 (4 )domain 安全级别模式 如果 samba 服务器加入 windows 域环境中,验证工作服将由 windows 域控制器负责,domain 级别的 samba 服务器只是成为域的成员客户端,并不具备服务器的特性, samba 早期的版本就 是使用此级别登录 windows 域滴。 (5 )ads 安全级别模式 当 samba 服务器使用 ads 安全级别加入到 windows 域环境中,其就具备了 domain 安全级别模 式中所有的功能并可以具备域控制器的功能。 3、 Share Definitions 共享服务的定义 Share Definitions 设置对象为共享目录和打印机,如果我们想发布共享资源,需要对 Share Definitions 部分进行配置。 Share Definitions 字段非常丰富,设置灵活。 我们先来讲下几个最常用的字段哈 1)设置共享名 共享资源发布后,必须为每个共享目录或打印机设置不同的共享名,给网络用户访问时使用,并且 共享名可以与原目录名不同。 共享名设置非常简单:共享名 我们来看个例子,Samba 服务器中有个目录为/share ,需要发布该目录成为共享目录,定义共享 名为 public 2)共享资源描述 网络中存在各种共享资源,为了方便用户识别,可以为其添加备注信息,以方便用户查看时知道共 享资源的内容是什么哈。 格式: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,经理帐号为 gm 6)设置目录只读 共享目录如果限制用户的读写操作,我们可以通过 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 配置文件中。 OK,Samba 帐号添加完毕哈,如果我们在添加 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/smbpasswd 3.4 Samba 的启动与停止 1)samba 服务的启动 service smb start 或 /etc/rc.d/init.d/smb start 2)samba 服务的停止 service smb stop 或 /etc/rc.d/init.d/smb stop 3)samba 服务的重启 service smb restart 或 /etc/rc.d/init.d/smb restart 4)samba 服务配置重新加载 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.conf vim /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 /24 /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/smbusers smbusers 文件保存帐号映射关系,其有固定滴格式: samba 帐号 = 虚拟帐号(映射帐号) 帐号 redking 就是我们上面建立的 samba 帐号(同时也是 Linux 系统帐号) ,51cto 及51blog 就是映射滴帐号名(虚拟帐号) ,帐号 redking 在我们访问共享目录时只要输入51cto 或51blog 就可以成功访问了,但是实际上访问 samba 服务器的还是我们滴 redking 帐号,这样一来就解决 了安全问题哈我们继续。 3)重启 samba 服务:service smb restart 4)验证效果哈 输入我们定义的映射帐号51cto,注意我们没有输入帐号 redking 哈 ,映射帐号51cto 滴密码和 redking 帐号一样哈 现在就可以通过映射帐号浏览共享目录了哈 注意:强烈建议不要将 samba 用户的密码与本地系统用户的密码设置成一样哈,可以避免非法用 户使用 samba 帐号登录系统非法破坏哈 4.2 客户端访问控制 对于 samba 服务器的安全性,我们已经说过可以使用 valid users 字段去实现用户访问控制,但 是如果企业庞大,存在大量用户的话,这种方法操作起来就显得比较麻烦哈比如 samba 服务器 共享出一个目录来访问,但是要禁止某个 IP 子网或某个域的客户端访问此资源,这样滴情况使用 valid users 字段就无法实现客户端访问控制。 下面我们就讲下使用 hosts allow 和 hosts deny 两个字段来实现该功能。而用好这两个字段滴关 键在于熟悉和清楚它们的使用方法和作用范围哈 hosts allow 和 hosts deny 的使用方法 1) hosts allow 和 hosts deny 字段的使用 hosts allow 字段定义允许访问的客户端 hosts deny 字段定义禁止访问的客户端 2)使用 IP 地址进行限制 比如公司内部 samba 服务器上共享了一个目录 sales,这个目录是存放销售部的共享目录,公司 规定/24这个网段的 IP 地址禁止访问此 sales 共享目录,但是其中4 这个 IP 地址可以访问。 先将安全级别模式由 user 改为 share 这里我们添加 hosts deny 和 hosts allow 字段 hosts deny = 192.168.0. 表示禁止所有来自/24网段的 IP 地址访问 hosts allow = 4 表示允许4这个 IP 地址访问 当 host deny 和 hosts allow 字段同时出现并定义滴内容相互冲突时, hosts allow 优先。现在 设置的意思就是禁止 C 类地址/24网段主机访问,但是允许4主机访问。 测试下效果,如果是4的客户端就可以正常访问 如果是其他客户端滴话就是这样的效果 如果想同时禁止多个网段滴 IP 地址访问此服务器可以这样设置 hosts deny = 192.168.1. 172.16. 表示拒绝所有 网段和 网段的 IP 地址访问 sales 这个共享目录。 hosts allow = 10. 表示允许 网段的 IP 地址访问 sales 这个共享目录。 注意:当需要输入多个网段 IP 地址的时候,需要使用“空格”符号隔开。 3)使用域名进行限制 我们来看这样一个例子哈,公司 samba 服务器上共享了一个目录 public,公司规定. 域 和.net 域的客户端不能访问,并且主机名为 free 的客户端也不能访问。 hosts deny = . .net free 表示禁止. 域和.net 域及主机名为 free 的客 户端访问 public 这个共享目录。 注意:域名和域名之间或域名和主机名之间需要使用“空格”符号隔开。 4)使用通配符进行访问控制 samba 服务器共享了一个目录 security,规定所有人不允许访问,只有主机名为 boss 的客户端 才可以访问。对于这样一个实例哈,我们就可以通过使用通配符的方式来简化配置。 hosts deny = All 表示所有客户端,并不是说允许主机名为 ALL 的客户端可以访问哈 常用的通配符还有“* ”, “?”, “LOCAL”等。 还有一种比较有意思的情况,如果我们规定所有人不能访问 security 目录,只允许 网段的 IP 地址可以访问,但是00及8的主机是要禁止访问滴。我们可 以使用 hosts deny 禁止所有用户访问,再设置 hosts allow 允许网段主机,但当 hosts deny 和 hosts allow 同时出现而且冲突滴时候,hosts allow 生效,如果这样滴话,那么 允许网段的 IP 地址可以访问,但是00及8的主机禁止访 问就无法生效了哈我们可以使用 EXCEPT 进行设置。 hosts allow = 192.168.0. EXCEPT 00 8 表示允许 网段 IP 地址访问,但是00和8除外哈 hosts allow 和 hosts deny 的作用范围 hosts allow 和 hosts deny 设置在不同的位置上,它们的作用范围是不一样滴。如果设置在 global里面,表示对 samba 服务器全局生效哈,如果设置在目录下面,则表只对这个目录生效。 这样设置表示只有8才可以访问 samba 服务器,全局生效哈 这样设置就表示只对单一目录 security 生效,只有8才可以访问 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 之间的区别: 字段 值 描述 writable yes 所有帐号都允许写入 writable no 所有帐号都禁止写入 write list 写入权限帐号列表 列表中的帐号允许写入 4.4 Samba 的隐藏共享 我们还可以使用 browseable 字段实现隐藏共享的功能哈 比如我们要把 samba 上的技术部共享目录隐藏,我们可以这样设置。 browseable = no 表示隐藏该目录 现在就看不到 tech 共享目录了哈 如果我们直接输入88tech 就可以访问了哈 在有些特殊的情况下,browseable 也无法满足企业的需求,比如, samba 服务器上有个 security 目录,此目录只有 boss 用户可以浏览访问,其他人都不可以访问。因为 samba 的主配 置文件只有一个,所有帐号访问都要遵守该配置文件的规则,如果隐藏了该目录,那么所有人就都 看不到该目录了,就像上面演示的一样,要知道共享目录名称后输入88tech 才可 以访问技术部资料。如果这样滴目录一多滴话,不可以叫 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 restart (5 )测试效果哈 现在我们以普通用户 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(88)主机的共享目录列表时,提示输入密码,这时候可以不输入密 码哈,我们直接按回车,这样表示匿名登录,然后就会显示匿名用户可以看到的共享目录列表了哈 smbclient -L rhel5或者 smbclient -L 88 如果想使用 samba 帐号相看 samba 服务器端共享了什么目录,我们可以加上-U 参数哈 ,后面 跟上用户名%密码。 smbclient -L 88 -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 /88/tech /mnt/sambadata/ -o username=boss%boss 这表示挂载88主机上的共享目录 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 及各个员工 的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论