smbclient (Samba客户端)
由于 FreeBSD mount_smbfs (不推荐) 只支持 smb v1
协议,导致默认构建的 FreeBSD Samba 共享存储( smb v2
)无法访问。所以改为使用标准的 Samba 客户端 smbclient
命令行连接Samba服务器
列出SMB共享
# admin用户密码password访问服务器192.168.1.18列出共享
smbclient -L //192.168.1.18 -U admin%password
# 如果使用 -U admin ,则会交互提示输入密码
输出信息案例:
Can't load /usr/local/etc/smb4.conf - run testparm to debug it
Sharename Type Comment
--------- ---- -------
docs Disk
IPC$ IPC IPC Service (Samba Server Version 4.16.11)
SMB1 disabled -- no workgroup available
可以看到服务器端共享了 docs
,并且默认禁止了 smb v1
协议
如果要像ftp一样访问服务器共享,则修订上述命令,去掉
-L
参数
smbclient //192.168.1.18/docs -U admin%password
可以看到服务器端共享的 docs
存储下有2个目录和一个测试文件:
Can't load /usr/local/etc/smb4.conf - run testparm to debug it
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Sun Jun 29 11:14:17 2025
.. D 0 Wed Jun 18 23:17:10 2025
test N 0 Sun Jun 29 10:55:23 2025
backup D 0 Sun Jun 1 21:54:18 2025
github D 0 Fri Jun 27 17:46:47 2025
6572595736 blocks of size 1024. 4718174432 blocks available
配置普通用户挂载SMB
为了方便使用,可以配置一个 samba
用户组给予 sudo
权限运行挂载命令:
添加
samba
组并将用户admin
加入该组:
samba
组及用户# 创建samba组,gid设置成502
pw groupadd samba -g 502
# 将admin用户加入samba组
pw groupmod samba -m admin
#如果使用Ubuntu这样的Linux系统可以使用以下2条命令
#sudo groupadd samba
#sudo adduser user admin
修订
/usr/local/etc/sudoers
(FreeBSD) 或/etc/sudoers
(Linux),添加:
%samba ALL=(ALL) /bin/mount,/bin/umount,/sbin/mount.cifs,/sbin/umount.cifs
# 如果sudo时不需要密码设置,则可以使用
# %samba ALL=(ALL) NOPASSWD: /bin/mount,/bin/umount,/sbin/mount.cifs,/sbin/umount.cifs
警告
实践中发现,FreeBSD不支持 mount.cifs
,这个工具只有Linux才提供,所以实际上目前FreeBSD无法作为客户端来挂载 smb v2
输出的共享,只能将Samba配置为 smb v1
输出,这样才能通过 FreeBSD mount_smbfs (不推荐) 挂载。
备注
以下步骤为Linux客户端,FreeBSD无法执行。我在一台 树莓派Raspberry Pi 5 的 Raspberry Pi OS上测试
执行
mount.cifs
命令挂载Samba共享:
mount.cifs
挂载mount -t cifs //192.168.7.200/docs /mnt -o username=admin
自动挂载CIFS
为了能够自动挂载,需要为 mount.cifs
提供密码配置参数
创建
/etc/samba/user.docs
配置文件(假设作为访问docs
),包含2行内容
/etc/samba/user.docs
配置文件username=samba_user
password=samba_user_password
修订
/etc/samba/user.docs
访问权限
/etc/samba/user.docs
文件访问权限# permissions of 0400 = read only
sudo chmod 0400 /etc/samba/user.docs
创建本地挂载目录
/home/admin/docs
(我需要将远程目录挂载为admin目录下的 docs 目录,请按实际调整)
mkdir /home/admin/docs
修订本地挂载配置
/etc/fstab
:
/etc/fstab
//192.168.7.200/docs /home/admin/docs cifs credentials=/etc/samba/user.docs,rw,noexec,uid=admin,gid=admin 0 0
注意这里的参数:
credentials=/etc/samba/user.docs
指定了认证密码文件
noexec
避免执行samba挂载目录下文件
uid=admin,gid=admin
设置挂载后该目录下文件的属主映射为admin
用户名和组,否则默认是root
用户名和组(这里是为了方便admin用户使用)
最后执行
mount /home/admin/docs
挂载,完成后执行df -h
就会看到挂载了远程 FreeBSD Samba 输出的共享存储docs
:
Filesystem Size Used Avail Use% Mounted on
...
//192.168.7.200/docs 6.2T 1.8T 4.4T 29% /home/admin/docs