Armbian配置SMB服务
安装Samba:
sudo apt install samba
添加samba组和系统用户:
sudo groupadd samba
sudo useradd -M -s /sbin/nologin -g samba samba
设置用户密码并将用户添加到Samba数据库:
sudo smbpasswd -a samba
修改密码:
sudo smbpasswd samba
smbpasswd命令还有以下参数:
- -d:禁用用户;
- -e:启用用户;
- -x:删除用户。
smbpasswd不会影响系统用户,如果要删除系统用户,可使用:
sudo userdel 用户名
创建共享目录并分配权限:
mkdir /home/share
chown samba:samba /home/share
chmod 2750 /home/share
如果普通用户需要读写该目录,可以将普通用户添加到samba组,并为共享目录所属组添加写权限:
sudo usermod -aG samba 用户名
chmod 2770 /home/share
特殊权限位2表示强制共享目录下文件所属组继承父目录,避免在多用户时权限混乱。
配置SMB服务
编辑配置文件:
sudo nano /etc/samba/smb.conf
示例配置内容如下:
[global]
map to guest = never # 当用户名不存在或密码错误时,禁止映射为访客
usershare allow guests = no # 禁止具有用户共享权限的普通用户创建公开的、不需要密码的访客共享
usershare max shares = 0 # 限制访客共享的数量上限,设为0禁用
netbios name = My Share # 广播中显示的名称,某些客户端可能不支持,而是显示主机名或IP
security = user # 强制使用用户验证
server min protocol = SMB3 # 指定最小版本,低于SMB3的客户端无法连接
smb encrypt = required # 强制加密传输
hosts allow = 192.168.1.0/24 # 白名单,仅允许这些IP的客户端访问
# hosts deny = 192.168.1.x # 黑名单,禁止这些IP的客户端访问
[Share]
comment = My Share # 共享提示语
path = /home/share # 共享目录路径
browseable = yes # 共享是否可被发现,如果为no,客户端需要输入完整路径才能访问
writable = yes # 允许写权限
valid users = samba # 客户端登录用户名
force user = samba # 强制所有访问该共享的客户端操作,都以指定用户执行
force group = samba # 强制所有访问该共享的客户端操作,都以指定的组执行
create mask = 0660 # 限制客户端创建的文件的最大权限
directory mask = 2770 # 限制客户端创建的目录的最大权限
校验配置文件,会输出不包含注释的、生效的配置项:
testparm -s
重启服务:
sudo systemctl restart nmbd smbd
如果启用了防火墙,放行445端口:
sudo ufw allow 445/tcp
查看客户端连接状态:
sudo smbstatus
Linux客户端自动挂载SMB共享
安装cifs-utils:
sudo apt install cifs-utils
创建验证文件:
sudo nano /etc/smb_credentials
验证文件中配置用于登录SMB共享的账号密码:
username=your_username
password=your_password
验证文件权限限制为只允许root用户读写:
sudo chmod 600 /etc/smb_credentials
使用id命令查看当前用户ID和所属组ID:
id
输出内容示例:
uid=1000(beizigen) gid=1000(beizigen)
编辑fstab文件配置开机自动挂载:
//192.168.1.8/Share /mnt/smb cifs credentials=/etc/smb_credentials,uid=1000,gid=1000,nosuid,nodev,_netdev,nofail,x-gvfs-show,x-gvfs-name=显示名称 0 0
挂载所有设备:
sudo mount -a
Windows系统挂载SMB共享
以Windows 11为例,在我的电脑中找到映射网络驱动器:

选择一个平常不使用的驱动,文件夹填写SMB共享地址:
