20 与 Windows 共享文件打印机的 samba 服务
通过阅读本章,你将会了解到以下几项内容。
- 深度系统如何跟Windows系统共享文件、打印机;
- bash进行判断和简单数学计算
- bash 的流程结构
- 实现把UC视频缓存变为普通视频文件的脚本
Windows 局域网中,为了方便互传文件或者打印,常常开启文件夹共享。在网上邻居里,能够看到其他人共享的文件夹,方便下载甚至上传。当前Windows局域网的通信工具也有一些,基本都支持文件互传,比如飞鸽传书(跨平台支持苹果、Linux和安卓)、imo内网通、RTX腾讯通(貌似停更在2015版)、飞秋(貌似停更在2013版)、微软LYNC(貌似停更在2013版)等。对于互联网,除了FTP、SCP和SSH外,QQ(深度系统自带),安司密信、钉钉(暂时不支持Linux平台)等也是不错的选择。
但是,对于局域网的Deepin深度用户来讲,除了iptux信使(只支持Linux、Mac,号称GNU/Linux版飞鸽传书)、飞鸽传书(最新版跨平台支持Linux)、大蚂蚁外,还可以安装samba 文件传输服务器。
20.1 Samba 文件传输服务简介
参考网页:
- https://docs.microsoft.com/en-us/windows/desktop/FileIO/microsoft-smb-protocol-and-cifs-protocol-overview
- https://www.cnblogs.com/LittleHann/p/6916326.html
- https://wiki.deepin.org/wiki/Samba%E6%9C%8D%E5%8A%A1
- https://wiki.deepin.org/wiki/Samba_service
Samba 是一种网络文件共享的应用程序,基于微软制定的SMB(Server Message Block)通信协议,被很多种操作系统,比如Windows、OS2、Linux等,作为CS(Client-Server客户端服务器端)的网络架构。通过基于SMB的samba,Linux系统就可以愉快的跟Windows系统共享文件和打印机。
在Samba的帮助下,Windows看Linux电脑的文件和打印机,仿佛就是自家的,反过来亦然。
20.2 深度自带 samba 的使用
参考网页:
其实 samba 已经被深度文件管理器集成了。通过搜索深度文件管理的源码,会发现很多samba 相关的代码。也就是说,作为用户,我们不需要再单独安装samba服务了。
20.2.1 共享本地文件
- 在文件管理器界面上,右键单击文件夹。
- 选择 共享文件夹。
- 勾选 共享此文件夹。
- 根据需要设置 共享名、权限 、匿名访问 后关闭标签。
- 在文件管理器界面上,点击 Icon_menu 。
- 选择 设置共享密码。
- 输入共享密码。
- 点击 确定。
注意:
- 取消勾选 共享此文件夹 可以取消文件共享,也可以右键单击文件,选择 取消共享。
- 有可能部分文件夹由于缺乏相应权限无法共享,请安装前面章节介绍更改权限的方法重新进行共享设置。
20.2.2 访问共享文件
局域网中其他用户共享的文件一般都可以在网络邻居中找到,您也可以通过网络邻居访问共享文件。
- 输入局域网用户的共享地址,按下键盘上的 Enter 键。(如:
smb://xxx.xxx.xxx.xxx/share
) - 输入用户名密码或者匿名访问。
- 未加密的网络文件可以匿名访问,不需要输入用户名和密码。
- 加密的网络文件会弹出登陆框,输入账号和密码之后才能访问。如果在用户名密码提示框中勾选 记住密码 ,再次访问不再需要密码。
- 点击 连接。
20.2.3 我的共享
当您设置了共享文件时,我的共享图标将会出现在导航栏上,当所有共享文件都取消共享后,我的共享图标自动从侧边栏中移除。
20.2.4 可能存在的小问题
如果文件夹不是自己的,设置为共享会弹出如下的问题框,采用管理员权限打开文件夹,成功共享。当然也可以跟根据异常提示,修改或添加/etc/samba/smb.conf的usershare owner only=false
。
由于权限的问题,取消共享也会出现类似问题,也请采用管理员权限或者修改配置文件的方法取消共享。
20.3 关于 samba 的配置
20.3.2 启动与停止
因为深度采用的 systemctl
控制服务,所以可以采用如下命令,
$ sudo systemctl start smbd.service # 开启
$ sudo systemctl status smbd.service # 查看状态
$ systemctl status smbd # 查看状态不需要根权限
$ sudo systemctl stop smbd.service # 关闭
$ sudo systemctl restart smbd.service # 重启
其实smbd.service
可以省略为smbd
。当然,还可以用另外一种方式,直接调命令文件,启动这些命令。比如,
$ sudo /etc/init.d/smbd start
这里是直接调用的smbd
程序,最后的start
可以换成stop
,status
和restart
,效果跟上面systemctl
的方式一致。对于status
状态的查询,同样不需要root根权限。
对于redhat
系列没有实测,查部分资料,把命令中smbd
改为smb
即可。
20.3.3 配置文件
Samba 的配置文件为/etc/samba/smb.conf。
vim