凌峰创科服务平台

CentOS7如何配置Samba服务器?

Samba 服务器配置指南 (CentOS 7)

Samba 是一个开源软件套件,它实现了 SMB/CIFS 协议,允许 Linux/Unix 系统与 Windows 系统之间进行文件和打印共享,这使得它在跨平台网络环境中非常流行。

CentOS7如何配置Samba服务器?-图1
(图片来源网络,侵删)

本教程将指导你完成以下任务:

  1. 安装 Samba
  2. 创建共享目录和用户
  3. 配置 Samba 主配置文件 (smb.conf)
  4. 设置 SELinux 和防火墙
  5. 启动并启用 Samba 服务
  6. 从 Windows 和 Linux 客户端访问共享
  7. 排错与常见问题

第一步:安装 Samba

更新你的系统软件包列表,然后安装 samba 包。

# 1. 更新系统
sudo yum update -y
# 2. 安装 Samba
sudo yum install -y samba

安装完成后,Samba 的主配置文件位于 /etc/samba/smb.conf


第二步:创建共享目录和 Samba 用户

为了让用户能够访问共享,我们需要:

CentOS7如何配置Samba服务器?-图2
(图片来源网络,侵删)
  1. 在文件系统中创建一个要共享的目录。
  2. 创建一个 Linux 系统用户(这并非必须,但推荐使用独立的用户名)。
  3. 为该用户设置一个 Samba 密码(这个密码独立于其 Linux 系统密码)。
# 1. 创建一个用于共享的目录,/home/samba/public
sudo mkdir -p /home/samba/public
# 2. 设置目录的所有权,这里我们让 root 用户拥有所有权,并设置正确的权限。
sudo chown -R root:root /home/samba/public
sudo chmod -R 0775 /home/samba/public
# 3. 创建一个 Linux 系统用户(如果还没有的话),创建一个名为 'sambauser' 的用户。
#    -s /sbin/nologin 表示该用户不能通过 SSH 或控制台登录系统,更安全。
sudo useradd -s /sbin/nologin sambauser
# 4. 为 'sambauser' 设置 Samba 密码。
#    这会提示你输入并确认一个密码,这个密码是用于访问 Samba 共享的,不是登录系统的密码。
sudo smbpasswd -a sambauser

第三步:配置 Samba 主配置文件 (smb.conf)

这是最核心的一步,我们将编辑 /etc/samba/smb.conf 文件来定义共享。

# 使用你喜欢的编辑器打开配置文件,vim
sudo vim /etc/samba/smb.conf

在文件末尾添加以下共享定义,这里我们提供一个简单且安全的配置示例。

# ====================================================================
# 在文件末尾添加以下内容
# ====================================================================
[Public]
    comment = Public Share for Everyone
    path = /home/samba/public
    browseable = yes
    writable = yes
    guest ok = no
    valid users = sambauser @samba_group
    create mask = 0664
    directory mask = 0775
[Private]
    comment = Private Share for sambauser
    path = /home/samba/private
    browseable = yes
    writable = yes
    guest ok = no
    valid users = sambauser
    create mask = 0664
    directory mask = 0775

配置项解释:

  • [Public][Private]: 这是共享的名称,Windows 网络邻居中看到的就是这个名字。
  • comment: 对共享的简短描述。
  • path: 共享的绝对路径。
  • browseable = yes: 允许此共享在网络上被浏览到。
  • writable = yes: 允许用户在此共享中写入文件。
  • guest ok = no: 重要! 禁止匿名用户访问,必须提供有效的用户名和密码。
  • valid users = sambauser @samba_group: 安全关键! 只有 sambauser 这个用户或 samba_group 这个组的成员才能访问,我们稍后会创建这个组。
  • create mask = 0664: 在此共享中创建的文件,默认权限为 rw-rw-r--
  • directory mask = 0775: 在此共享中创建的目录,默认权限为 rwxrwxr-x

创建私有共享目录并设置权限:

CentOS7如何配置Samba服务器?-图3
(图片来源网络,侵删)
# 1. 创建私有共享目录
sudo mkdir -p /home/samba/private
# 2. 设置目录所有权和权限
sudo chown -R sambauser:sambauser /home/samba/private
sudo chmod -R 0770 /home/samba/private

创建 Samba 用户组并添加用户:

为了更好地管理,我们可以创建一个组,并将多个用户加入其中。

# 1. 创建一个名为 samba_group 的组
sudo groupadd samba_group
# 2. 将 sambauser 用户添加到这个组中
sudo usermod -aG samba_group sambauser

检查配置文件语法:

在保存并退出编辑器后,务必检查配置文件的语法是否正确。

testparm

如果输出显示 Loaded services file OK.,则说明语法正确。


第四步:设置 SELinux 和防火墙

CentOS 7 默认启用 SELinux 和 firewalld,这会阻止 Samba 的网络访问,我们需要正确配置它们。

A. 配置 SELinux

SELinux 的布尔值可以控制特定服务的行为,我们需要为 Samba 启用允许共享和写入的布尔值。

# 1. 启用允许 Samba 共享目录的布尔值
sudo setsebool -P samba_export_all_ro on
# 2. 启用允许 Samba 共享目录并写入的布尔值
sudo setsebool -P samba_export_all_rw on

注意: -P 参数会永久保存这个设置,重启后依然有效,如果不使用 -P,设置只在当前会话有效。

B. 配置防火墙

我们需要在防火墙中为 Samba 开放必要的端口:139 (NetBIOS) 和 445 (SMB over IP)。

# 1. 添加永久规则,允许 Samba 服务
sudo firewall-cmd --permanent --add-service=samba
# 2. 重新加载防火墙以应用新规则
sudo firewall-cmd --reload

第五步:启动并启用 Samba 服务

配置已经完成,我们可以启动 Samba 服务并设置其开机自启。

# 1. 启动 Samba 相关服务
sudo systemctl start smb nmb
# 2. 将服务设置为开机自启
sudo systemctl enable smb nmb
# 3. 检查服务状态,确保它们正在运行
sudo systemctl status smb nmb

你应该会看到 active (running) 的状态。


第六步:从客户端访问共享

A. 从 Windows 客户端访问

  1. 打开文件资源管理器。
  2. 在地址栏中输入 \\你的CentOS服务器IP地址,然后按 Enter。
    • \\192.168.1.100
  3. 系统会提示你输入凭据,输入你之前创建的 Samba 用户名 (sambauser) 和 Samba 密码
  4. 验证成功后,你就可以看到 PublicPrivate 两个共享文件夹了,你可以像操作普通文件夹一样进行读写操作。

B. 从 Linux 客户端访问

你可以使用 smbclient 命令行工具来访问和测试共享。

  1. 安装 smbclient (如果尚未安装)

    sudo yum install -y samba-client
  2. 列出服务器上的所有共享

    smbclient -L //192.168.1.100 -U sambauser

    输入密码后,你应该能看到 PublicPrivate 共享。

  3. 像 FTP 一样交互式地访问共享

    smbclient //192.168.1.100/Public -U sambauser

    进入后,你可以使用 get (下载), put (上传), ls (列表), exit (退出) 等命令。

  4. 将共享挂载到本地文件系统 (推荐) 你可以将共享挂载到一个本地目录,使其像普通目录一样使用。

    # 1. 创建一个挂载点
    sudo mkdir /mnt/samba_share
    # 2.
分享:
扫描分享到社交APP
上一篇
下一篇