CentOS 7 下 Samba 服务器配置
一、
Samba 是在 Linux 和 Unix 系统上实现 SMB(Server Message Block)协议的一个免费软件,由服务器及客户端程序构成,SMB 是一种在局域网上共享文件和打印机的通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务,SMB 协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

二、安装与配置
1. 安装 Samba 服务
在 CentOS 7 上,可以使用yum
命令来安装 Samba 服务:
- 安装 Samba 服务
- yum y install samba sambaclient
2. 启动并设置开机自启动
启动 Samba 服务并设置其开机自启动:
- 启动 smb 服务
- systemctl start smb
- 启动 nmb 服务
- systemctl start nmb
- 设置开机自启动
- systemctl enable smb
- systemctl enable nmb
3. 修改配置文件
Samba 的主要配置文件是/etc/samba/smb.conf
,以下是一个简单的配置示例:

- [global]
- workgroup = SAMBA
- server string = Samba Server %v
- netbios name = myserver
- security = user
- map to guest = Bad User
- passdb backend = tdbsam
- printing = cups
- printcap name = cups
- load printers = yes
- cups options = raw
- [homes]
- comment = Home Directories
- browseable = No
- writable = Yes
- [printers]
- path = /var/tmp
- printable = Yes
- create mask = 0600
- browseable = No
- [print$]
- path = /var/lib/samba/drivers
- printable = Yes
- write list = root
- create mask = 0644
- directory mask = 0755
在这个配置文件中:
[global]
部分设置了工作组名称、服务器字符串、安全性等全局选项。
[homes]
部分用于共享用户的主目录。
[printers]
和[print$]
部分用于共享打印机及其驱动程序。
4. 创建共享目录并设置权限
创建一个用于共享的目录,例如/opt/abc
,并设置合适的权限:

- 创建共享目录
- mkdir /opt/abc
- 设置目录权限为 777(所有用户可读写执行)
- chmod 777 /opt/abc
5. 添加 Samba 用户
为了使用身份验证访问共享资源,需要添加 Samba 用户,首先添加系统用户,然后将其添加到 Samba:
- 添加系统用户(zhangsan)
- useradd zhangsan
- 设置用户密码
- passwd zhangsan
- 添加 Samba 用户并设置密码
- smbpasswd a zhangsan
重复上述步骤以添加其他用户。
6. 重启 Samba 服务
完成配置后,重启 Samba 服务以使更改生效:
- 重启 Samba 服务
- systemctl restart smb
三、测试与访问
1. 匿名访问测试
在另一台机器上,可以使用以下命令测试匿名访问:
- 安装 cifsutils(如果尚未安装)
- yum install cifsutils y
- 挂载 Samba 共享
- mount t cifs //192.168.0.123/share /mnt o guest
//192.168.0.123/share
是 Samba 服务器的共享路径,/mnt
是本地挂载点。
2. 身份验证访问测试
对于需要身份验证的共享,可以使用以下命令进行挂载:
- 挂载需要用户名和密码的 Samba 共享
- mount t cifs //192.168.0.123/share /mnt o username=zhangsan,password=zhangsan_password
将zhangsan
替换为实际的用户名,将zhangsan_password
替换为对应的密码。
四、注意事项
1、确保防火墙允许 Samba 的相关端口(TCP 139、TCP 445、UDP 137、UDP 138)通过,如果使用的是 firewalld,可以运行以下命令开放端口:
- firewallcmd permanent addservice=samba
- firewallcmd reload
2、如果遇到权限问题,可以尝试关闭 SELinux:
- setenforce 0
但请注意,这可能会带来安全风险,建议根据实际需求进行调整。
3、确保 Samba 服务正在运行,并且没有错误日志输出,可以使用以下命令检查服务状态:
- systemctl status smb
- systemctl status nmb
4、如果客户端无法访问 Samba 共享,请检查客户端和服务器之间的网络连接,以及 Samba 服务器的日志文件(通常位于/var/log/samba/
)以获取更多信息。
5、根据实际需求调整smb.conf
文件中的配置选项,以满足不同的共享需求,可以设置不同的共享目录、用户权限、打印选项等。
五、相关问答(FAQs)
问:如何更改 Samba 服务器的工作组名称?
答:打开/etc/samba/smb.conf
文件,找到[global]
部分,修改workgroup = SAMBA
这一行,将SAMBA
替换为你想要设置的工作组名称,保存文件后,重启 Samba 服务以使更改生效。
问:如何在 Samba 中添加新的共享目录?
答:在/etc/samba/smb.conf
文件中,添加一个新的[]
段落来定义新的共享目录,要添加一个名为newshare
的共享目录,可以添加以下内容:
[newshare] path = /path/to/newshare browseable = yes writable = yes valid users = @users ``path
@users` 表示所有用户组中的用户都有访问权限,保存文件后,重启 Samba 服务。
- 是共享目录的实际路径,