在Archlinux安装Samba服务
本文章介绍怎么在 archlinux 上安装 samba 进行文件共享,主要参考 ArchWiki
服务器
安装
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.service
和 nmb.service
服务。更多信息参阅 smbd 和 nmbd 的 man 手册。 nmb.service
并不总是需要启用。
systemctl enable --now smb.service
systemctl enable --now nmb.service
客户端配置
装轻量级的 cifs-utils。大部分桌面自带的文件管理器都支持挂载 Samba 。例如 KDE 桌面的 Dolphin :
也可以使用 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