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 文件传输服务简介

参考网页:

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 共享本地文件

  1. 在文件管理器界面上,右键单击文件夹。
  2. 选择 共享文件夹。
  3. 勾选 共享此文件夹。
  4. 根据需要设置 共享名、权限 、匿名访问 后关闭标签。
  5. 在文件管理器界面上,点击 Icon_menu 。
  6. 选择 设置共享密码。
  7. 输入共享密码。
  8. 点击 确定。

注意:

  1. 取消勾选 共享此文件夹 可以取消文件共享,也可以右键单击文件,选择 取消共享
  2. 有可能部分文件夹由于缺乏相应权限无法共享,请安装前面章节介绍更改权限的方法重新进行共享设置。

20.2.2 访问共享文件

局域网中其他用户共享的文件一般都可以在网络邻居中找到,您也可以通过网络邻居访问共享文件。

  1. 输入局域网用户的共享地址,按下键盘上的 Enter 键。(如:smb://xxx.xxx.xxx.xxx/share
  2. 输入用户名密码或者匿名访问。
    1. 未加密的网络文件可以匿名访问,不需要输入用户名和密码。
    2. 加密的网络文件会弹出登陆框,输入账号和密码之后才能访问。如果在用户名密码提示框中勾选 记住密码 ,再次访问不再需要密码。
  3. 点击 连接

20.2.3 我的共享

当您设置了共享文件时,我的共享图标将会出现在导航栏上,当所有共享文件都取消共享后,我的共享图标自动从侧边栏中移除。

20.2.4 可能存在的小问题

共享失败,显示缺乏权限。

如果文件夹不是自己的,设置为共享会弹出如下的问题框,采用管理员权限打开文件夹,成功共享。当然也可以跟根据异常提示,修改或添加/etc/samba/smb.confusershare owner only=false

共享文件夹出现的问题

由于权限的问题,取消共享也会出现类似问题,也请采用管理员权限或者修改配置文件的方法取消共享。

取消共享出现的问题

20.3 关于 samba 的配置

20.3.1 手动安装

如果你的操作系统不是 deepin,或者尚未自带 samba 服务,则需要先安装 samba 才可以使用其功能。安装方法很简单,

# 如果您的操作系统是 centos 或者 Fedora,redhat 等。
$ sudo yum install samba -y
# 如果你的操作系统是 debian 系列,比如 ubuntu 等。
$ sudo apt-get install samba -y
# 其他版本的操作系统略。

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,statusrestart,效果跟上面systemctl的方式一致。对于status状态的查询,同样不需要root根权限。

对于redhat系列没有实测,查部分资料,把命令中smbd改为smb即可。

20.3.3 配置文件

Samba 的配置文件为/etc/samba/smb.conf

vim