凌峰创科服务平台

linux 安装samba服务器

我们将使用 apt 包管理器(适用于 Debian/Ubuntu 系统),对于 CentOS/RHEL 系统,可以使用 yumdnf

linux 安装samba服务器-图1
(图片来源网络,侵删)

第一部分:安装 Samba

更新系统包列表

确保你的系统包列表是最新的。

sudo apt update
sudo apt upgrade -y

安装 Samba 软件包

Samba 的主要组件包括 samba 包(核心服务器)和 samba-common-bin 包(提供客户端工具如 smbclient)。

sudo apt install samba samba-common-bin -y

安装完成后,Samba 服务会自动启动,你可以使用以下命令检查其状态:

sudo systemctl status smbd

如果看到 active (running),说明服务正在运行。

linux 安装samba服务器-图2
(图片来源网络,侵删)

第二部分:配置 Samba 共享

这是最关键的一步,我们将配置一个名为 public 的公共共享目录,和一个名为 private 的私有共享目录,只有特定用户可以访问。

创建共享目录

创建两个目录,一个用于公共共享,一个用于私有共享。

# 创建公共共享目录
sudo mkdir -p /srv/samba/public
# 创建私有共享目录
sudo mkdir -p /srv/samba/private
# 设置目录的所有权
# 将 public 目录的所有者设为 root,组设为 sambashare,并设置正确的权限
sudo chown -R root:sambashare /srv/samba/public
sudo chmod -R 0775 /srv/samba/public
# 将 private 目录的所有者设为 root,组设为 sambashare
sudo chown -R root:sambashare /srv/samba/private
sudo chmod -R 0770 /srv/samba/private

注意:我们创建了一个名为 sambashare 的系统组,稍后我们会将用户添加到这个组中。

创建 Samba 用户

Samba 有自己独立的用户数据库,它不直接使用系统用户,你需要为想要访问 Samba 共享的用户创建 Samba 账户。

linux 安装samba服务器-图3
(图片来源网络,侵删)

前提:该用户必须首先作为系统用户存在,如果不存在,请先创建:

# 假设我们要创建一个名为 'testuser' 的系统用户
sudo useradd -m testuser

testuser 创建 Samba 用户账户,并设置一个独立的 Samba 密码(这个密码可以和系统密码不同)。

sudo smbpasswd -a testuser

系统会提示你输入并确认这个新密码。

编辑 Samba 主配置文件

Samba 的主配置文件是 /etc/samba/smb.conf,在编辑前,最好先备份一份。

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

用你喜欢的文本编辑器(如 nanovim)打开配置文件:

sudo nano /etc/samba/smb.conf

在文件末尾添加以下配置:

# ========================================
# Samba 共享配置
# ========================================
[public]
    comment = Public Share
    path = /srv/samba/public
    browsable = yes
    guest ok = yes          # 允许来宾用户(匿名)访问
    read only = no           # 允许写入
    force create mode = 0664
    force directory mode = 0775
[private]
    comment = Private Share for testuser
    path = /srv/samba/private
    browsable = yes
    valid users = testuser   # 只有 testuser 用户可以访问
    guest ok = no            # 禁止来宾访问
    read only = no           # 允许写入
    create mask = 0770       # 新建文件的默认权限
    directory mask = 0770    # 新建目录的默认权限

配置解释:

  • [public][private]:这是共享的名称,在 Windows 网络邻居中会显示。
  • comment:共享的描述信息。
  • path:指定共享的本地文件系统路径。
  • browsable = yes:在网络上是否可见。
  • guest ok = yes:允许匿名用户(guest)访问。public 共享设为 yes
  • valid users = testuser:指定哪些用户可以访问。private 共享只允许 testuser
  • read only = no:允许用户写入文件。
  • force create mode / create mask:设置新创建文件的默认权限。
  • force directory mode / directory mask:设置新创建目录的默认权限。

检查配置文件语法

保存并关闭编辑器后,运行以下命令检查 smb.conf 的语法是否正确:

testparm -s

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

创建 Samba 用户组并添加用户

为了更好地管理私有共享的权限,我们将 testuser 添加到之前提到的 sambashare 组中。

# sambashare 组不存在,先创建它
sudo groupadd sambashare
# 将 testuser 添加到 sambashare 组
sudo usermod -aG sambashare testuser

重要:让 testuser 重新登录或运行 newgrp sambashare 来使其获得新的组权限。

重启 Samba 服务

使新的配置生效:

sudo systemctl restart smbd nmbd

smbd 是文件和打印服务,nmbd 是 NetBIOS 名称服务。


第三部分:防火墙配置

如果你的服务器启用了 UFW 防火墙,需要开放 Samba 所需的端口。

# 开放 Samba 的端口范围
sudo ufw allow samba

第四部分:客户端访问测试

你可以从另一台计算机(Windows 或 Linux)访问这个共享了。

从 Windows 访问:

  1. 打开“文件资源管理器”。
  2. 在地址栏中输入 \\<你的Linux服务器IP地址>,然后按回车。
    • \\192.168.1.100
  3. 你应该能看到 publicprivate 两个共享文件夹。
  4. 双击 public,可以直接进入,无需密码。
  5. 双击 private,系统会提示你输入用户名和密码,输入 testuser 和你之前设置的 Samba 密码即可。

从 Linux 访问:

你可以使用 smbclient 命令行工具来测试。

  1. 测试匿名访问 public

    smbclient //192.168.1.100/public -N

    -N 表示不提示输入密码(用于匿名/来宾访问),进入后,可以使用 ls, get, put 等命令。

  2. 测试用户 testuser 访问 private

    smbclient //192.168.1.100/private -U testuser

    系统会提示你输入 testuser 的 Samba 密码。


第五部分:开机自启

确保 Samba 服务在服务器重启后自动启动:

sudo systemctl enable smbd nmbd

总结与排错

  • 无法访问?

    1. 检查防火墙:sudo ufw status
    2. 检查 Samba 服务状态:sudo systemctl status smbd
    3. 检查 SELinux(如果使用的是 CentOS/RHEL):可能需要设置 setsebool -P samba_enable_home_dirs on 等策略。
    4. 检查网络:确保你的 Linux 服务器和客户端在同一网段。
    5. 检查日志:/var/log/samba/log.smbd/var/log/samba/log.nmbd 是排查问题的关键。
  • 权限问题?

    • 确保共享目录的权限设置正确(0775 / 0770)。
    • 确保访问用户在 valid users 列表中,并且是 sambashare 组的成员。
    • 使用 ls -l /srv/samba/private 查看文件的所有者和组。

遵循以上步骤,你应该就能成功搭建一个功能完善的 Samba 文件共享服务器了。

分享:
扫描分享到社交APP
上一篇
下一篇