CentOS下Samba(smb)文件共享服务配置详细教程(含配置说明)
centos下Samba(smb)文件共享服务配置
Samba服务配置,我公司工作人员亲自操作笔记。
实现企业文件共享服务。
Samba 是在 Linux 和 Unix 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB 协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得 Samba 不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。在企业办公环境中,Samba 最典型的应用场景就是让 Windows 客户端能够方便地访问 CentOS 服务器上的共享目录,从而实现跨平台的文件共享与协作。
在 CentOS 系统中,防火墙默认会阻止外部对 Samba 服务端口的访问,因此在启动 Samba 之前需要先放行相关端口。可以执行 setup 命令,进入“防火墙配置”界面,在“信任的服务”列表中勾选 samba,然后保存退出。Samba 服务主要依赖以下端口:TCP 139(NetBIOS 会话服务)、TCP 445(Microsoft-DS 服务,即 SMB over TCP)、UDP 137 和 UDP 138(NetBIOS 名称服务与数据报服务)。如果使用的是 iptables 而非 setup 工具,也可以手动执行 iptables -I INPUT -p tcp --dport 445 -j ACCEPT 等命令来放行端口。此外,还需要确保 SELinux 不会阻止 Samba 访问共享目录,可以临时执行 setenforce 0 将其设为宽容模式,或者使用 semanage 命令为共享目录设置正确的 SELinux 上下文。
需要注意的是,Samba 使用的是独立的用户密码数据库,与系统用户密码并不通用。因此,必须先确保该用户已经作为系统用户存在(可用 useradd 创建),然后使用 smbpasswd -a 用户名 命令为其设置 Samba 密码。执行后会提示输入两次密码,设置成功后可用 smbpasswd -e 用户名 启用该账户。如果之后需要修改密码,可直接运行 smbpasswd 用户名;若要删除某个 Samba 用户,则使用 smbpasswd -x 用户名。
smb.conf 是 Samba 的核心配置文件,采用分段式结构,主要分为 [global] 全局段和各个共享段。全局段定义服务器的整体运行参数,而每一个共享段则对应一个对外发布的共享目录。建议在修改前先备份原文件:cp /etc/samba/smb.conf /etc/samba/smb.conf.bak,以便出现问题时快速还原。
除了上述常用参数外,还有一些参数在实际配置中也很常见:browseable 用于控制该共享是否在“网上邻居”中显示;write list 可以指定拥有写权限的用户或组;read only 与 writable 含义相反;force user 和 force group 可以强制所有访问者以指定用户或组的身份操作文件,这在多用户协作时非常有用;guest ok 则用于允许匿名访问。合理组合这些参数,能够灵活地满足企业对权限控制和安全性的要求。配置完成后,建议先执行 testparm 命令检查配置文件语法是否正确,该命令会列出所有生效的参数,便于及时发现拼写错误或参数冲突。
重启服务后,可在 Windows 客户端上通过“\\服务器IP地址”的方式访问共享目录,例如在资源管理器地址栏输入 \\\\192.168.1.100\\www,然后输入之前设置的 Samba 用户名和密码即可。如果无法访问,请依次检查:Samba 服务是否正常运行(service smb status)、防火墙端口是否放行、SELinux 是否拦截、共享目录的系统权限是否正确,以及 smb.conf 中 valid users 指定的用户是否已通过 smbpasswd 添加。排查时可查看 /var/log/samba/ 目录下的日志文件,其中会记录详细的连接与认证信息,对定位问题非常有帮助。
发布日期:2012-03-21 13:33 (责任编辑:xulei)