Samba 配置
Server
Samba 基本所有发行版都是自带的:
emerge samba #gentoo
apt install -y samba # debian
配置在 /etc/samba
下,可以直接拷贝默认的:
cp /etc/samba/smb.conf.default /etc/samba/smb.conf
配置主要是 global
部分的共享参数设置,和单独文件目录的设置。首先是 global
:
- workgroup:工作组,随意值,一般是 WORKGROUP,跟 Windows 默认保持一致
- server role:一般是 standalone server
- map to guest :bad user,允许匿名需要的选项
- usershare allow guests:yes 允许授权用户使用命令行来设置共享
- client min protocol:客户端的最小支持协议,很多时候默认是 SMB3,对于只有支持老版本的 NT1 客户端需要配置
- server min protocol:一般是跟随 client min protocol 来设置,NT1 相对来说兼容好,效能低
使用 smbpasswd dreamy
的 dreamy 用户可以通过 net usershare
来设置文件目录的共享,如:
net usershare add Video /mnt/video "Video Description" everyone:R guest_ok=y
net usershare add Music /mnt/music "Music Description" everyone:F guest_ok=n
第一个是设置所有用户包括匿名都能读取视频,第二个是设置只有授权用户才能读/写音乐,但是这是临时共享。写入到 /etc/samba/smb.conf
才能永久共享,上述的命令对应的配置为:
[Video]
comment = Video Description
path = /mnt/video
browseable = yes
read only = yes
guest ok = yes
[Music]
comment = Music Description
path = /mnt/music
browseable = yes
read only = no
guest ok = no
可以通过 testparm
来查看已配置的信息,开启服务,systemd 的方式是:
systemctl enable --now nmbd smbd
Client
客户端可以通过 smbtree
,smbclient
和 mount
来使用共享文件(mount
需要内核支持 cifs,或者早期就是 samba 的模块):
smbtree
smbclient -L //192.168.0.123
mount //192.168.0.123/Video /mnt
自动发现
客户端自动发现对应的 Samba 服务,不需要自己指定 IP。Samba 需要开启对 wins 和 zeroconfig 支持的编译选项,Debian 是默认的,Gentoo 需要加上 winbind zeroconf
的 use。在服务端的配置也要加上:
- win support:yes
- name resolve order:解析顺序,如 lmhosts wins host bcast
然后安装并启用 avahi 服务:
emerge net-dns/avahi # gentoo
apt install -y avahi-daemon # debian
systemctl enable --now avahi-daemon
这时候会有 /etc/nsswitch.conf
和 /etc/avahi
相关的配置文件自动生成,主要是需要在 /etc/nsswitch.conf
里面配置 hosts
行,如在 resolve 前面加上 mdns 和 notfound 的选项:
hosts: mymachines mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns
这时候能够发现目标服务,可是不一定能够解析到目标服务。如 dolphin 能够自动找到 ip 为 123 的主机名为 itx 的 video 共享,却无法访问,因为 itx 被解析为 itx.local,但是 mdns 却无法生效,无法访问 local 域名的,所以需要再安装 nss-mdns:
emerge nss-mdns # gentoo
apt install -y libnss-mdns # debian