---
title: Linux桌面环境与Win10之间共享文件夹的互相访问(基于Samba,以Deepin为例)
date: 2021-03-15 01:30:25
author: coolxy
---
site:www.coolxy.cn
# Linux桌面环境与Win10之间共享文件夹的互相访问(基于Samba,以Deepin为例)
## 一、解决理念
一直喜欢Deepin系统,也好用,但办公室的办公PC因为涉及到要随时用OA的web系统收发文(有UKEY),要盖电子印章(有Ukey),无法使用Deepin,故此办公PC 是Win10系统,另有一台笔记本安装Deepin,之前传文件一直用“飞鸽传书”解决,为解决文件的互相共享,百度了许多文章,终端自己解决了。
## 二、从Deepin访问Win10共享
Win10设置共享后,其它的Win系统均可无问题访问,但Deepin访问一直没办法,查了许久资料加上自己试了之后 ,确定为Win10系统安装时默认不安装Samba组件,而Deepin下访问是用Samba访问,所以肯定访问不了。
前提:首先得在同一个局域网段
### 1、Win10安装Samba组件:
控制面板—>卸载程序—>启用或关闭Windows功能—>勾选smb
### 2、设置共享文件夹
这一步简单,许多人都会,不多说。在实际设置中,我已经关闭了windows的防火墙(是因为关闭防火墙,Deepin云打印机才能使用)
### 3、Deepin下安装Samba,这个Deepin是已经安装的了
安装命令:sudo apt install samba
访问:在文件管理器地址栏输入:smb://win10IP/ 回车后就可以看到win10共享出来的文件夹了
也可以直接将共享内容挂载到系统下:
#mkdir /mnt/共享文件夹 (自己建一个目录,这个根据自己的情况而定)
#mount -t cifs //192.168.1.122/共享文件夹 -o username=本机用户名,password=本机密码 /mnt/共享文件夹 (即将win10共享出来的“共享文件夹”文件夹挂载到“/mnt/共享文件夹”下)
至此就可以直接访问了,但每次开机后要重新输入和挂载,很烦,可设置开机自动挂载:
通过修改fstab文件,开机自动挂载
修改/etc/fstab文件,文件最后加入:
//192.168.1.122/共享文件夹 /mnt/共享文件夹 cifs auto,username=本机用户名,password=本机密码 0 0
## Win10访问Deepin共享文件夹
### 1、首先还是要安装samba
sudo apt-get install samba
### 2、设置共享目录
在目录上右键—>属性—>设置共享,并将目录权限设置为777
mkdir /home/share
sudo chmod 777 /home/share
### 3 修改samba配置文件
修改 /etc/samba/smb.conf
sudo vim /etc/samba/smb.conf
在smb.conf文件最后加上以下内容:
```
[share]
path = /home/share
public = yes
writable = yes
valid users = name
create mask = 0644
force create mode = 0644
directory mask = 0755
force directory mode = 0755
available = yes
```
关于smb.conf的几点解释:
(1) [share]表示共享文件夹的别名,也就是在其它机子上看到的共享文件夹名,之后将直接使用这个别名
(2) valid users “name”设置为你当前的Linux用户名,例如我的是”name”,因为第一次打开共享文件夹时,需要验证权限。
### 4 设置登录密码
新建/etc/samba/smbpasswd文件,这是存储密码的文件
sudo touch /etc/samba/smbpasswd
根据3设置的valid users,设置用户name的密码,新增用户name
sudo smbpasswd -a name
输入两次密码后,会提示 Added user name. 表示设置成功
重新启动samba服务器
sudo /etc/init.d/samba restart
测试是否共享成功
安装samba的linux客户端:
sudo apt-get install smbclient
smbclient -L //localhost/share
如果出现让你输入密码的界面,那么就是设置成功了,输入之前设置的密码即可以看到共享的内容了。
5.在windows上测试
打开windows文件管理器,输入 \\ip地址或主机名\share
Linux的ip地址可通过ifconfig查看
选择记住凭据,下次输入地址后无需登录
第一次打开可能需要几秒时间,耐心一点
* 心得:
原来Windows之间共享的时候太顺利,用同样的方式在Deepin与Win之间共享,无论如何也成功不了,原因在于Deepin与win之间的共享通道是Samba,win系统上要安装samba组件,就打开了通道,共享成功
Deepin共享文件夹后,在win系统打开要网络凭据,原来一直以来要用Deepin系统账户和密码,可无论如何也不行,后来一想,如果Deepin系统账户密码都给人了,系统就危险了,所以要在samba内重新创新用户名和密码才行。
* 扩展知识:
Mount远程目录并让本地非root用户可读可写
远程与本地是两台Linux机器,要实现如题效果,传统的nfs的mount方式虽然简单方便却不行
nfs的方式:
sudo mount -t nfs -o rw 192.168.0.xx:/path /mnt/test
在本地你会发现/mnt/test下的文件用户为nobody,普通用户可以读,但是非root用户写不了(不用sudo不用su),
有的人想通过改/etc/fstab 或者远程主机的/etc/exports来实现,
我告诉你趁早放弃,nfs没有这个功能,它无法指定uid gid 用户名,密码。
cifs可以解决这个问题,通俗点讲就是samba的方式
远程主机安装samba服务
部分/etc/samba/smb.conf 内容
[testuser]
path = /home/testuser/share
read only = no
; browseable = yes
valid users = testuser
共享目录/home/testuser/share,有效用户为testuser
本地操作如下
安装 cifs-utils sudo apt-get install cifs-utils 神马的
命令id得到本地用户localuser的id,gid
比如得到uid=1000(localuser) gid=1000(localuser)
修改/etc/fstab
//192.168.0.xx/testuser/ /mnt/test/ cifs rw,noauto,defaults,username=testuser,password=testuserpassword,uid=1000,gid=1000 0 0
然后sudo mount /mnt/test就会挂载,此时localuser翻身做主人了,注意为了安全fstab中可以不写password=testuserpassword这段,然后在mount时手动输入密码,如果要开机自动挂载,可以把noauto改成auto,或者在启动脚本中mount