LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

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

客户端可以通过 smbtreesmbclientmount 来使用共享文件(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