使用 Samba 搭建公共的文件共享服务

2024-11-05#Samba#Linux

Samba 服务是一种能在 Linux/UNIX 系统上实现 SMB(Server Messages Block)协议,用于在不同操作系统(如 Windows 和 Linux)之间共享文件和打印机等资源的网络服务。Windows电脑、Android 手机上都自带了客户端。

本文记录在 Debian Linux 服务器上搭建 Samba 服务,并且允许匿名用户(即访客)存取共享目录中的文件,即搭建公共的文件共享服务器。

安装 🔗

直接使用 apt 安装 samba:

$ apt install samba

使用 whereis 查看:

$ whereis samba
samba: /usr/sbin/samba /usr/lib/aarch64-linux-gnu/samba /etc/samba /usr/libexec/samba /usr/share/samba /usr/share/man/man8/samba.8.gz /usr/share/man/man7/samba.7.gz

配置 🔗

创建共享目录 🔗

假定共享目录为 /mnt/sda1/public_files。如果不存在,那么创建该文件夹:

$ mkdir /mnt/sda1/public_files

配置 Samba 服务 🔗

配置文件位于 /etc/samba/smb.conf。添加如下内容:

[public_files]
    comment = Public files
    path = /mnt/sda1/public_files
    browsable = yes
    public = yes
    guest ok = yes
    writable = yes
    create mask = 0666
    directory mask = 0755

保存配置后重启服务:

$ systemctl restart smbd

查看服务运行状态:

$ systemctl status smbd

重启成功后,通过手机或者其他设备打开“网络邻居”,就会看到Samba服务所在的设备。然后勾选“匿名访问”,即可打开共享目录,看到 public_files 目录。

但是,当此时往该共享目录上传文件,或者在共享目录里创建目录时,很可能就会出错。因为 Samba 服务并没有权限创建文件。

修改共享目录的权限 🔗

默认情况下,Samba 会以 nobody:nogroup 用户创建文件。如果共享目录的所有者不是 nobody:nogroup,或者改目录不允许 nobody:nogroup 写文件,那么就无法通过网络邻居上传文件了。一个简单的修复方法,是修改共享目录的所有者为 nobody:nogroup。比如:

$ chown -R nobody:nogroup /mnt/sda1/public_files

另一个方法是允许所有用户能够执行、读和写共享目录:

$ chmod a+wrx /mnt/sda1/public_files

加载中...