刚刚接触Linux没多久，觉得现在的linux还真好用多了。昨天想弄一下samba，翻看了一下论坛的帖子，发现都是讲怎么改配置文件的，原先我在HP-UX上装samba都是用swat配置的。觉得用图形化的配置工具比较方便，特别是对新手来说。废话不多说，把我昨天搞定samba的经验各位和我一样的新手交流一下。1.安装sambasudo apt-get install samba sudo apt-get install smbfs2.安装swatsudo apt-get install swat3.这一步比较重要，安装xinetdsudo apt-get install xinetd4.安装后执行sudo vi /etc/inetd.conf这一行前面如果有#off# 的话就删除掉#off##off# swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat然后执行sudo vi /etc/xinetd.d/swat打开文件后把一下内容贴进去# description: SAMBA SWAT service swat { disable = no socket_type = stream protocol = tcp #should use a more limited user here user = root wait = no server = /usr/sbin/swat }保存后执行sudo dpkg-reconfigure xinetd5.然后就可以使用swat了，访问http://localhost:901 就可以配置了，一般的先配置global 里面的security等选现，然后配置shares，再在password里面配置用户，最后可以在status里面控制samba的状态。这些就不多说了，能用linux的一般都有比较好的基础，摸索一下应该都能够搞定的。欢迎大家交流经验。上两张PP :D
本文主要介绍如何将SMB文件系统挂载至Linux上并执行读写操作。前提条件注意 Linux系统推荐挂载使用NFS文件系统。由于Linux系统对SMB协议的兼容程度较低，建议仅在需要跨操作系统共享数据的情况下使用Linux系统挂载SMB文件系统。SMB文件系统现在官方支持如下的Linux操作系统版本。如果没有特别声明，本文仅针对以下Linux操作系统版本：CentOS 7.6 64bit（3.10.0-957.5.1.el7.x86_64）Ubuntu 18.04 64bit（4.15.0-48-generic）Debian 9.9 64bit（4.9.0-9-amd64）Suse Enterprise Server 12 SP2 64bit（4.4.74-92.35-default）OpenSUSE 42.3 64bit（4.4.90-28-default）Alibaba Cloud Linux（4.19.34-11.al7.x86_64）CoreOS（4.19.43-coreos VersionID=2079.4.0）说明 由于Linux一些早期版本的SMB客户端在某些场景有缺陷，如果您使用了非官方支持的Linux操作系统版本，阿里云不能保证该SMB文件系统的可靠性。安装软件在Linux操作系统中安装cifs-utils工具包。如果您使用Ubuntu或Debian操作系统，通过apt-get软件包管理工具进行安装。sudo apt-get update sudo apt-get install cifs-utils如果您使用RHEL、CentOS、Alibaba Cloud Linux操作系统，通过yum包管理器进行安装。sudo yum install cifs-utils如果您使用OpenSUSE、SLES12-SP2操作系统，通过zypper或yast工具进行安装。sudo zypper install cifs-utils sudo yast2 -> Software -> Software Management, 然后安装cifs-utils挂载文件系统使用root用户或sudo enabled客户端管理员用户，登录Linux。执行以下命令，挂载文件系统。mount -t cifs //hostname/myshare /mnt -o vers=2.0,guest,uid=0,gid=0,dir_mode=0755,file_mode=0755,mfsymlinks,cache=strict,rsize=1048576,wsize=1048576挂载命令格式：mount -t cifs //<挂载点>/myshare <挂载目录> -o <挂载选项>执行mount -l命令，查看挂载结果。如果回显包含如下类似信息，说明挂载成功。挂载成功后，您可以在Linux上访问NAS文件系统，执行读取或写入操作。您可以把NAS文件系统当作一个普通的目录来访问和使用，例子如下所示。经典使用场景不同的使用场景，可配置不同的挂载选项，实现文件系统最优性能。经典的使用场景及挂载选项配置如下所示：Linux共享访问场景在多个Linux中需要共享访问文件系统数据，但没有用户权限控制要求，被授权的Linux管理员可以使用如下方法在各个Linux上执行挂载。mount -t cifs //smbfs.hangzhou-g.aliyun.com/myshare /mnt/sharepath -o vers=2.1,guest,mfsymlinks多用户Home Directory场景在多个Linux中需要共享访问文件系统数据时，如果有权限控制需求，可以通过挂载时指定uid、gid、dir_mode、file_mode参数实现。Linux WebServer共享访问场景在多个Linux上安装WebServer（如apache），且SMB文件系统作为共享文件存储。说明SMB文件系统主要特点是共享访问、横向扩展、高可用，由于和本地硬盘实现机理不同，某些场景的小文件访问性能上会稍微有一些差距。对于WebServer场景，如果想要达到极致性能，可以考虑只将需要共享的文件放在SMB文件系统上，而将不需要共享访问的WebServer程序等放在本地硬盘。WebServer应用通常网络协议通讯负载较大，此场景需要开通WebServer加速功能，请您联系阿里云NAS团队申请开通。Windows和Linux共享访问场景如果您需要同时从Windows和Linux访问SMB文件系统的内容。则需要在Linux挂载时一定使用客户端缓存，即设置cache=strict或者默认方式挂载。
树莓派smb、ftp、webdav三种共享协议搭建方法和对比
树莓派挂了块3.5的硬盘做下载机和局域网影音共享，性能和耗电量都好于群晖Nas，特别是多盘位做raid保护的机型，群晖就不用24小时开机了，有需要的时候可以直接用树莓派通过网卡唤醒。换了电视后对片源的质量有了更高的要求，文件超过20G后，即使使用wifi6路由器，电视网卡支持800m+的传输速率，smb已经满足不了需求了，播放杜比视界版本的文件ftp也很卡，目前三个共享协议都尝试过了，分享一下搭建的过程。smb应该是兼容性最好的协议了，通吃各种系统，很多移动端的播放器也都支持好习惯，先更新软件源sudo apt-get update安装sambasudo apt-get install samba sudo apt-get install samba-common-bin配置sambasudo vim /etc/samba/smb.confglobal节点下添加一下配置，优化传输速度min receivefile size = 16384 write cache size = 262144在配置文件的末尾添加自定义配置[Public] comment = Public Storage # 共享文件夹描述 path = /你的共享目录 # 共享文件夹目录 read only = no # 不只读 create mask = 0777 # 创建文件的权限 directory mask = 0777 # 创建文件夹的权限 guest ok = yes # guest访问，无需密码 browseable = yes # 可见不需要密码到此搭建就结束了，可以直接跳到”重启服务”那步即可如果sma共享需要密码，添加如下配置[pt] # 共享段备注 comment = pt folder # 共享文件夹路径，必填 path = /你的共享目录 # 是否只读 read only = no # 允许匿名访问 guest ok = no # 是否出现在网络发现中 browseable = yes # 可以访问的用户，这个用户和本地的用户不同 valid users = 你的用户名为你的用户名设置密码sudo smbpasswd -a pi重启服务sudo samba restart #或 sudo systemctl restart smbd附上日志存放的目录，有问题方便排查cd /var/log/samba/ftp比较古老的协议，但在kodi播放器下，传输明显速度优于smb安全起见，创建新用户，给ftp使用sudo useradd -m -s /bin/bash ftper sudo passwd ftper映射共享的文件路径到新用户的home目录sudo ln -s /你的共享目录 /home/ftper/你的共享目录安装vsftpdsudo apt-get install vsftpd编辑配置文件sudo vim /etc/vsftpd.conf anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022启动sudo service vsftpd startwebdav速度和ftp没有明显区别，但kodi下播放杜比视界视频时，只有webdav可以流畅播放下载webdav程序，选择armv7版本wget https://github.com/hacdias/webdav/releases/linux-armv7-webdav.tar.gz解压、复制到/usr/bin目录下tar -zxvf linux-armv7-webdav.tar.gz sudo cp webdav /usr/bin/注册servicecd /etc/systemd/system sudo vim webdav.service写入如下内容[Unit] Description=WebDAV server After=network.target [Service] Type=simple User=root ExecStart=/usr/bin/webdav --config /etc/webdav/config.yaml Restart=on-failure [Install] WantedBy=multi-user.target建立配置文件和上面/etc/systemd/system/webdav.service里的ExecStart目录要对应上cd /etc/webdav/ sudo vim config.yaml写入# Server related settings address: 0.0.0.0 port: 21234 auth: true tls: false cert: cert.pem key: key.pem # Default user settings (will be merged) scope: . modify: true rules: [] users: - username: admin password: admin #这里为共享目录 scope: /你的共享目录开机并启动服务systemctl enable webdav systemctl start webdav查看运行状态systemctl status webdav不报错的话直接输入http://你的ip地址:21234就可以正常访问根据自身实际使用情况（SONY电视 + 电视版KODI播放器 + 树莓派4 + 千兆有线网络/WIFI6 5G模式传输 + 4K 原生60帧片源/杜比视界片源）和体验来说，个人总结如下表：协议类型 速度 兼容性 KODIsmb 较快 好 传输性能较差ftp 快 较好 可播放70G视频文件webdav 快 差 最理想的模式总体来说smb协议的兼容性最好，windows/mac/linux均可支持，各个厂商的电视、盒子和各个手机端的播放器均支持smb协议传输，ftp和webdav原生支持的较少。理论上三者速度相差并不大，这里测试的环境是KODI播放器，没深入了解过KODI读取文件的方式，但大视频文件一定不能用smb协议，杜比视界视频文件一定要用webdav，咨询过KODI其中的一位开发者，他表示webdav可以开启多通道读取文件的模式，有利于文件更快的传输，但并不代表所有播放器的表现都一致。总结想要兼容性好首选smb如果播放器用的KODI，不用折腾，首选webdav