本章重点内容 SMB 协议和 Samba 简介 安装和启动 Samba 配置 Samba 文件共享 配置 Samba 打印共享 在 Linux 环境下访问 Samba 共享
SMB 协议 SMB ( Server Message Block ,服务信 息块)协议是一个高层协议, 它提供了在 网络上的不同计算机之间共享文件、打印机 和不同通信资料的手段。
SMB 协议 SMB 使用 NetBIOS API 实现面向连接的协 议, 该协议为 Windows 客户程序和服务 提供了一个通过虚电路按照请求-响应方式 进行通信的机制。
SMB 协议 SMB 的工作原理就是让 NetBIOS 与 SMB 协议运行在 TCP/IP 上, 并且使用 NetBIOS 的名字解释器让 Linux 机器可以在 Windows 的网上邻居中被看到, 从而和 Windows9X/NT 进行相互沟通,共享文件 和打印机。
Sabma 简介 Samba 是一组软件包,使 Linux 支持 SMB 协议,该协议是在 TCP/IP 上实现的, 它是 Windows 网络文件和打印共享的基础,负责 处理和使用远程文件和资源。 Samba 的核心是两个守护进程 smbd :监听 139 TCP 端口 ,处理到来的 SMB 数据包。 nmbd :监听 137 和 138 UDP 端口 ,使其它主 机(或工作站)能浏览 Linux 服务器 。
Sabma 简介 Samba 软件的功能 共享 Linux 的文件系统。 共享安装在 Samba 服务器上的打印机。 支持 Windows 客户使用网上邻居浏览网络。 使用 Windows 系统共享的文件和打印机。 支持 Windows 域控制器和 Windows 成员服 务器对使用 Samba 资源的用户进行认证。 支持 WINS 名字服务器解析及浏览。 支持 SSL 安全套接层协议。
服务器的安装和启动 Samba 服务器的安装 # rpm -ivh samba-common-2.2.7a i386.rpm # rpm -ivh samba-2.2.7a i386.rpm # rpm -ivh samba-client-2.2.7a i386.rpm
服务器的安装和启动 Samba 的启动和停止 # service smb start # service smb stop # service smb restart Samba 的配置文件: /etc/samba/smb.conf
Samba 的默认配置 工作组 : MYGROUP 安全等级 : user 设置用户密码加密 : Yes 口令文件路径 : /etc/samba/smbpasswd 认证用户时服从 PAM 的管理限制: Yes 为客户做 DNS 查询 : No 设置了每个用户的主目录的共享 设置了全部打印机的共享
建立 Samba 口令文件设置 Samba 账号 添加单个的 samba 账户 # smbpasswd -a username
测试的默认配置 检测 Samba 配置文件的正确性 # testparm 在 Windows 上访问 Samba 资源共享 通过 Windows 的网上邻居访问 Samba 共享 通过映射网络驱动器访问 Samba 共享 在 Linux 服务器上列出 Samba 的资 源使用情况 # smbstatus
Samba 配置基础 smb.conf 文件的分节结构 [Global] :用于定义全局参数和缺省值 [Homes] :用于定义用户的 Home 目录共享 [Printers] :用于定义打印机共享 [Userdefined_ShareName] :用户自定义共享(可有多 个) Samba 的安全等级 Share :用户不需要账户及口令即可登入 Samba 服务器。 User :由提供服务的 Samba 服务器负责检查账户及口令 (是 Samba 默认的安全 等级)。 Server :检查账户及口令的工作指定由另一台 Windows NT/2000 或 Samba 服务器负责。 Domain :指定 Windows NT/2000 域控制服务器来验证用 户的账户及口令。
设置 Samba 的全局参数( 1 ) 基本全局参数 netbios name :设置 Samba 的 NetBIOS 名 字 workgroup :设置 Samba 要加入的工作组 server string :指定浏览列表里的机器描述 client code page :设置客户字符编码页 日志全局参数 log file :指定日志文件的名称 max log size :指定日志文件的最大尺寸 ( KB )
设置 Samba 的全局参( 2 ) 安全全局参数 –socket address :指定 samba 监听的 IP 地址 –admin user :设置管理员账号 –security :定义 Samba 的安全级别 –encrypt passwords :用于指定是否使用加密口令 –smb passwd file :指定 Samba 口令文件的路径 –hosts allow :指定可以访问 Samba 的主机 –hosts deny :指定不可以访问 Samba 的主机
设置 Samba 的全局参( 3 ) 运行效率全局参数 –change notify timeout :设置服务器周期性异常通知 –deadtime :客户端无操作多少分钟后服务器端中断连 接 –getwd cache :是否使用 Cache 功能 –keepalive :服务器每隔多少秒向客户端发送 keepalive 包用于确认客户端是否工作正常 –max open files :同一个客户端最多能打开的文件数 目 –socket options :设置服务器和客户之间会话的 Socket 选项
设置 Samba 共享资源参数 基本共享参数 –comment :指定对共享的描述 –path :指定共享服务的路径 访问控制参数 –writable :指定共享的路径是否可写 –browseable :指定共享的路径是否可浏览(默认为可以) –available :指定共享资源是否可用 –read only :指定共享的路径是否为只读 –public :指定是否可以允许 guest 账户访问 –read list :设置只读访问用户列表 –write list :设置读写访问用户列表 –valid users :指定允许使用服务的用户列表 –invalid users :指定不允许使用服务的用户列表
文件系统权限和 Samba 共享权限 Samba 服务器要将本地文件系统共享 给 Samba 用户,涉及两种权限: – 本机文件系统权限:使用 chmod 和 chown 命令设置 –Samba 权限:使用 Samba 的访问控制 参数设置 当 Samba 用户访问共享时,最终的权 限将是这两种权限中最严格的权限。
配置 Samba 文件共享举例 修改 RedHat 9 默认的全局配置参数 使用符号链接组织本地共享资源 为所有用户配置只读共享 为所有用户配置读写共享 为指定用户配置 Samba 共享 为指定组配置 Samba 共享 为指定用户和组配置 Samba 共享 配置访问 Samba 共享组用户的不同权限
配置 Samba 的打印共享 Samba 的打印共享参数 –load printers :是否加载打印机配置文件 –printcap name :设置打印机配置文件路径 –printing :设置打印系统类型 –path :指定打印机队列位置 –printable :指定用户是否可打印(默认为不 可以) –printer admin :设置打印机管理员
配置 Samba 的打印共享 Samba 共享打印机配置步骤 – 配置本地打印机 – 获得 Adobe Postscript Driver – 设置 Samba 的打印共享配置 – 为 Windows 客机准备打印驱动 配置 Samba 共享打印机 – 参见教材操作步骤 19.12
在 Linux 环境下访问 Samba 共享( 1 ) lmhosts 文件 –Samba 使用 /etc/samba/lmhosts 文件存放 NetBIOS 名与 IP 地址的静态映射表 smbclient 命令 –Samba 提供了一个类似 FTP 客户程序的 Samba 客户 程序 smbclient – 可以使用 smbclient 查看并访问共享 列表显示指定主机提供的共享 –# smbclient -L NetBIOS 名或 IP 地址 – 例如: # smbclient -L win01
使用 smbclient 命令访问共享( 2 ) Samba 提供了一个类似 FTP 客户程序的 Samba 客户程序 smbclient 用于访问指定主机的指定共享, -U 用户名参数表示以指 定的用户名的身份访问共享。 –# smbclient //NetBIOS 名或 IP 地址 / 共享名 -U 用户名 – 注意: 当访问 Windows 共享时, smbclient 命令的 -U 参数后所指定的用 户名是所访问的 Windows 计算机中的用户账户, 验证口令是 Windows 计算机中的用户账户的口令。 当访问 Linux 提供的 Samba 共享时, smbclient 命令的 -U 参数后所 指定的用户名是所访问的 Linux 计算机中的 Samba 用户账户, 验 证口令是 Samba 用户账户的口令。 – 例如: # smbclient //win01/tools -U osmond
在 Linux 环境下访问 Samba 共享( 3 ) 使用 smbmount 挂装远程 SMB 文件系统访 问 Samba 共享 –smbmount 命令格式 # smbmount //NetBIOS 名或 IP 地址 / 共享 名 挂装点 – 例如: # smbmount //win01/tools /mnt/smb/win01 # cd ; umount /mnt/smb/win01