凌峰创科服务平台

Redhat Samba服务器配置如何快速实现?

目录

  1. 环境准备
    • 安装 Samba 软件包
    • 关闭 SELinux 和防火墙(简化初始配置)
    • 检查网络和主机名
  2. 创建匿名只读共享
    • 创建共享目录
    • 配置 Samba 主配置文件 (smb.conf)
    • 设置目录权限
    • 启动并启用 Samba 服务
    • 在 Windows 客户端上测试
  3. 创建需要用户认证的可读写共享
    • 创建 Samba 专用用户
    • 配置共享目录和权限
    • 修改 smb.conf 配置文件
    • 重启 Samba 服务
    • 在 Windows 客户端上测试
  4. 高级配置与安全
    • 启用 SELinux(推荐方式)
    • 配置防火墙规则
    • 设置用户映射(将 Windows 用户映射到 Linux 用户)
    • Samba 服务管理命令
  5. 常见问题排错
    • 如何查看 Samba 日志?
    • 常见错误及解决方法

环境准备

在开始之前,请确保您已经以 root 用户或具有 sudo 权限的用户登录。

Redhat Samba服务器配置如何快速实现?-图1
(图片来源网络,侵删)

1 安装 Samba 软件包

使用 dnf (或 yum 在旧版 RHEL 上) 安装 Samba 及其客户端工具。

sudo dnf install samba samba-client -y

2 关闭 SELinux 和防火墙(简化初始配置)

警告:这是一个为了简化初期配置的步骤,在生产环境中,强烈建议不要关闭 SELinux 和防火墙,而是学习如何正确配置它们,详见第 4 节。

# 临时关闭 SELinux (重启后失效)
sudo setenforce 0
# 永久关闭 SELinux (需要重启)
sudo vi /etc/selinux/config
# 将 SELINUX=enforcing 改为 SELINUX=disabled
# 临时关闭防火墙 (重启后失效)
sudo systemctl stop firewalld
# 禁用防火墙 (开机不自启)
sudo systemctl disable firewalld

3 检查网络和主机名

确保您的服务器和客户端在同一局域网内,并且可以相互 ping 通。

# 查看本机IP地址
ip a
# 测试与另一台设备的连通性 (ping Windows 主机)
ping <windows_host_ip_or_hostname>

场景一:创建匿名只读共享

这是最简单的共享方式,任何人都可以访问,但只能读取文件。

Redhat Samba服务器配置如何快速实现?-图2
(图片来源网络,侵删)

1 创建共享目录

我们将创建一个名为 /samba/anonymous 的目录作为共享点。

sudo mkdir -p /samba/anonymous

2 配置 Samba 主配置文件 (smb.conf)

Samba 的主配置文件是 /etc/samba/smb.conf,我们先备份原文件,然后进行编辑。

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo vi /etc/samba/smb.conf

在文件末尾添加以下内容:

[anonymous]
    comment = Anonymous Share
    path = /samba/anonymous
    browsable = yes
    writable = no              # 设置为只读
    guest ok = yes             # 允许 guest 用户访问
    guest only = yes           # 强制所有访问都是 guest 用户
    read only = yes            # 同上,只读

参数解释:

Redhat Samba服务器配置如何快速实现?-图3
(图片来源网络,侵删)
  • [anonymous]:这是在 Windows 网络邻居中显示的共享名称。
  • comment:共享的描述信息。
  • path:共享的本地文件系统路径。
  • browsable:是否在“网络”中可见。
  • writable:是否允许写入。
  • guest ok = yes:允许匿名用户(guest)访问。
  • guest only = yes:禁止使用真实用户账户,全部以 guest 身份访问。

3 设置目录权限

为了让 Samba 的 guest 用户能够读取目录,我们需要设置正确的权限,Samba 默认的 guest 用户是 nobody

# 设置目录所有者为 root,组为 root
sudo chown -R root:root /samba/anonymous
# 设置目录权限为 755 (所有者可读写执行,组和其他用户可读和执行)
sudo chmod -R 755 /samba/anonymous

4 启动并启用 Samba 服务

# 启动 Samba 服务
sudo systemctl start smb nmb
# 设置开机自启
sudo systemctl enable smb nmb
# 检查服务状态
sudo systemctl status smb nmb

5 在 Windows 客户端上测试

  1. 在 Windows 文件资源管理器的地址栏中,输入 \\<你的服务器IP地址>\\192.168.1.100
  2. 您应该能看到一个名为 anonymous 的共享文件夹。
  3. 双击进入,您可以查看和复制文件,但无法创建或修改。

场景二:创建需要用户认证的可读写共享

这个共享要求用户输入用户名和密码才能访问,并且可以读写文件。

1 创建 Samba 专用用户

Samba 的用户系统是独立的,您需要创建一个 Linux 系统用户,然后将其添加到 Samba 用户数据库中。

# 1. 创建一个 Linux 系统用户 (sambauser)
# -m 创建家目录, -s 指定nologin shell, 因为他不需要登录系统
sudo useradd -s /sbin/nologin -m sambauser
# 2. 为这个 Linux 用户设置一个 Samba 密码
# 这个密码是用于访问 Samba 共享的,可以和 Linux 密码不同
sudo smbpasswd -a sambauser
# New SMB password: <输入你想要的密码>
# Retype new SMB password: <再次输入>

2 配置共享目录和权限

我们创建一个新的共享目录 /samba/secure,并将其所有者设置为 sambauser

sudo mkdir -p /samba/secure
sudo chown -R sambauser:sambauser /samba/secure
sudo chmod -R 770 /samba/secure  # 所有者可读写,组员可读写,其他用户无权限

3 修改 smb.conf 配置文件

/etc/samba/smb.conf 文件末尾添加新的共享配置:

[secure]
    comment = Secure Share for Authenticated Users
    path = /samba/secure
    browsable = yes
    writable = yes              # 允许写入
    guest ok = no               # 禁止 guest 用户访问
    valid users = sambauser     # 只有 sambauser 用户可以访问
    create mask = 0664          # 新建文件的默认权限
    directory mask = 0775       # 新建目录的默认权限

参数解释:

  • [secure]:共享名称。
  • valid users = sambauser:指定哪些用户可以访问,可以写多个,用空格隔开,如 valid users = user1 user2 @samba_group
  • create maskdirectory mask:定义新创建文件和目录的权限。

4 重启 Samba 服务

sudo systemctl restart smb

5 在 Windows 客户端上测试

  1. 在文件资源管理器地址栏输入 \\<你的服务器IP地址>
  2. 双击 secure 文件夹。
  3. 系统会弹出身份验证对话框。
  4. 输入用户名 sambauser 和您在第 3.1 步中设置的 Samba 密码。
  5. 登录成功后,您就可以像操作本地文件夹一样进行读、写、创建、删除等操作。

高级配置与安全

1 启用 SELinux(推荐方式)

关闭 SELinux 会带来安全风险,下面是正确配置 SELinux 的方法。

假设我们配置了 场景二secure 共享。

  1. 恢复 SELinux 为 enforcing 模式
    sudo setenforce 1
分享:
扫描分享到社交APP
上一篇
下一篇