在Archlinux安装Samba服务

14

本文章介绍怎么在 archlinux 上安装 samba 进行文件共享,主要参考 ArchWiki

服务器

安装

安装 软件包 samba

sudo pacman -Sy samba

Samba 服务的配置文件是 /etc/samba/smb.conf,但是 archlinux 仓库的 Samba 软件没提供配置文件,需要自己从 Samba 的 Git 仓库 可以获取到示例文件smb.conf.default

curl "https://git.samba.org/samba.git/?p=samba.git;a=blob_plain;f=examples/smb.conf.default;hb=HEAD" -o /etc/samba/smb.conf

使服务器可被发现

安装 avahi包 软件包, 然后启用/启动 avahi-daemon.service 以通过 Zeroconf 使 Samba 服务器可被发现。

pacman -S avahi
systemctl enable --now avahi-daemon.service

如果avahi-daemon.service 尚未运行,服务器仍可被访问,仅不可被发现,也就是说,它不会出现在文件管理器中,但你仍可直接通过 IP 或者域名连接它。

用户管理

添加用户

Samba 需要 Linux 账户才能使用 - 可以使用已有账户或 创建新用户。
虽然用户名可以和 Linux 系统共享,Samba 使用单独的密码管理,下面我的案例使用 samba用户进行,先创建 samba 用户组,再创建用户。

groupadd samba
useradd -m -g samba samba
smbpasswd -a samba ##设置smb密码

要让新创建的用户仅能访问 Samba 远程文件服务器,可以禁用其它登录选项,禁用 shell - usermod --shell /usr/bin/nologin --lock samba

查询用户

pdbedit(8) 命令查询现有用户:

[root@archlinux ~]# pdbedit -L -v  
---------------  
Unix username:        samba  
NT username:             
Account Flags:        [U          ]  
User SID:             S-1-5-21-1752649060-1282002957-3279832480-1000  
Primary Group SID:    S-1-5-21-1752649060-1282002957-3279832480-513  
Full Name:               
Home Directory:       \\ARCHLINUX\samba  
HomeDir Drive:           
Logon Script:            
Profile Path:         \\ARCHLINUX\samba\profile  
Domain:               ARCHLINUX  
Account desc:            
Workstations:            
Munged dial:             
Logon time:           0  
Logoff time:          Wed, 06 Feb 2036 23:06:39 CST  
Kickoff time:         Wed, 06 Feb 2036 23:06:39 CST  
Password last set:    Sun, 11 Jun 2023 09:03:50 CST  
Password can change:  Sun, 11 Jun 2023 09:03:50 CST  
Password must change: never  
Last bad password   : 0  
Bad password count  : 0  
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

更改 samba 用户的密码

smbpasswd 修改 samba 用户的密码:

smbpasswd samba

创建共享

修改/etc/samba/smb.conf 文件:

[root@archlinux ~]# vim /etc/samba/smb.conf
---
[public]  
  comment = Public Stuff  
  path = /home/samba/share/  
  public = yes  
  writable = yes  
  printable = no  
  valid users = samba
---

只需要修改 [public] 部分即可。

运行服务

为了能够使用 SMB 进行基本的文件共享,start/enable smb.servicenmb.service 服务。更多信息参阅 smbdnmbd 的 man 手册。 nmb.service 并不总是需要启用。

systemctl enable --now smb.service
systemctl enable --now nmb.service

客户端配置

装轻量级的 cifs-utils。大部分桌面自带的文件管理器都支持挂载 Samba 。例如 KDE 桌面的 Dolphin :

Screenshot_20230611_100514.png

也可以使用 mount 命令进行挂载:

mkdir /mnt/mountpoint
mount -t cifs //<SERVER>/<sharename> /mnt/<mountpoint> -o user=<username>,password=<password>

SERVER :服务器名,如 192.168.122.122。

sharename : 共享目录,/etc/samba/smb.conf 里面的部分,本文配置为 public

mountpoint :本地的挂载点,如 /mnt/samba/ ,需要先创建此文件夹。

注意:结尾不要加 /. //<SERVER>/<sharename>/ 无法工作

保存共享密码

不建议将密码保存在所有人都可读的文件中,一个更安全的方式是创建密码文件:

/path/to/credentials/share
-----------------------------------
username=<myuser>
password=<mypass>

user=<username>,password=<password> 替换为 credentials=/path/to/credentials/share.

修改密码文件的权限:

# chmod 600 /path/to/credentials/share