Linux【2】-管理文件-8--win10与linux共享文件夹(cifs/samba)

一、windows 向linux共享文件

1.1 、win10创建共享文件夹

1.1.1 创建共享文件夹专有用户

在桌面按组合键WIN+I开启系统设置 – 账户 – 家庭和其他账户 – 其他账户、将其他人添加到这台电脑– 输入帐户名(必填项),密码(选填项),然后点击下一步

  • 成功添加新的本地账户,点击新添加的账户,再选更改账户类型可以选择将其设置为管理员还是标准用户,
  • 设置完成后我们可以按Ctrl+Alt+Del组合键切换账户,可以看到新创建的本地账户供选择

1.1.2 网络共享中心设置

控制面板– 所有控制面板项– 网络和共享中心 – 高级共享设置 – 网络发现

  • 选择 “启用网络发现” ;
  • 文件和打印机共享,选择“启用文件和打印机共享”

1.1.3 创建共享文件

接着,选择你要共享的文件夹 – 右键选择属性 – 然后选择共享 – 选择高级共享 – 权限– 组合用户名

  • 选择 刚才新建的用户,然后设置用户权限

所有这些都设置好以后,一路点击确定,保存更改之后的设置。

这个时候会提示你:

1.2 Linux的设置

然后,回到 linux,首先,你需要安装cifs-utils 来 mount SMB shares,linux 使用mount 命令来挂载光盘镜像文件、移动硬盘、U盘以及Windows网络共享和UNIX NFS网络共享等,SMB(Server Message Block)是协议名,它能被用于Wap连接和客户端与服务器之间的信息沟通,具体含义大家自行查阅吧。

输入命令 sudo apt-get install cifs-utils 安装即可。

mkdir ~/Desktop/Windows-Share
sudo mount -t cifs -o username=****,password=****,vers=3.0 //WindowsPC/Share /home/geek/Desktop/Windows-Share

//WindowsPC/Share 需要更改成你自己的共享文件的位置,WindowsPC也可以替换成该windows的内网ip

/home/geek/Desktop/Windows-Share 共享文件在linux下的位置,输入你自己的位置。这里强烈建议另外新建一个文件夹,不要直接放在desktop之类的地方,因为共享文件过去 的时候可能会覆盖掉你原来的所有文件。

-o user=geek 是选择你的windows的账户,比如你的windows当前登录账户名是geek,你就输入geek即可。

执行这个命令,你就会发现,windows下的文件已经共享过来了,而且因为选择的是具有全部的权限,所以你如果在linux下共享文件夹下新建文件之类,win下也会同步变化,当然, 可以利用这个特性进行windows 与 linux 下的文件共享了。

重启自动挂载

vim /etc/fstab

//WindowsPC/Share /home/geek/Desktop/Windows-Share cifs defaults,username=mountaccount,password=123 0 2

这么自动挂载不知道有没有问题,需重启以后,才能看到效果,先留一个悬链吧。

1.3 报错

1.3.1 报错1

mount.cifs \\DESKTOP-IPICPC\test ./test -o user=autobio

报错:

mount.cifs: bad UNC (\DESKTOP-IPICPCtest)

报错原因:linux 系统目录不能有反斜杠 \ 

1.3.2 报错2

mount.cifs //DESKTOP-IPICPC/test ./test -o user=autobio

报错:

mount error(112): Host is down
mount error: could not resolve address for DESKTOP-IPICPC: Unknown error
解决办法1(弄了以后,并没有什么效果,建议先不做这一步):

新安装的win10 企业版默认没有开smb服务

控制面板-》程序和功能-》启用或关闭Windows功能-》

  • smb 1.0/cifs 文件共享支持-
  • smb 1.0/cifs 服务器

选择启用下重启下电脑就可以了

解决办法2:
sudo mount -t cifs -o username=****,password=****,vers=3.0 //ip/test ./test

1.3.3 报错3

mount.cifs 失败 mount error(13): Permission denied

网上各种原因,我就一个,密码弄错了。。

二、linux给建立共享文件夹

2.1 安装samba

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议。

yum install samba

2.2 创建共享用户名

接着你需要新建一个能够获取共享文件的账户和密码,使用命令:smbpasswd -a anbank 新建一个名为 anbank 的共享账户,然后输入密码即可。这里共享账户的名字可以任意取。

报错:

[root@ubuntu ~]# smbpasswd -a test
New SMB password:
Retype new SMB password:
Failed to add entry for user test.

解决办法:

这是因为没有加相应的系统账号,所以会提示Failed to add entry for user的错误,只需增加相应的系统账号test就可以了:

[root@ubuntu ~]# useradd anbank 

接着创建共享文件的账户和密码

smbpasswd -a anbank 
	New SMB password:
	Retype new SMB password:
	Added user anbank.

2.3 创建共享文件夹

然后 建立共享文件的文件夹。比如我在用户目录下新建了一个 UbuntuShare文件夹,里面放了一个test_new.avi 的视频文件。

接着,输入命令:

sudo vi /etc/samba/smb.conf

来编辑 smb.conf 文件,在末尾添加如下格式的命令:

[<folder_name>]
    path = /home/<user_name>/<folder_name>
    available = yes
    valid users = user_name1,user_name2
    read only = no
    browsable = yes
    public = yes
    writable = yes

大概是这个样子

  • 注意valid users 写之前新建的共享账户名,用samba服务自我管理的帐号和密码进行用户认证,用户必须是本系统用户,但密码非/etc/shadow中的密码,而由samba自行管理的文件,其密码文件的格式由passdb bachend进行定义。
  • path输入自己的共享文件夹的位置。
  • []里面是自己的共享文件夹的名字。

然后重启 smbd 服务:

systemctl restart smb.service

开机启动smba

systemctl enable smb.service

回到windows下,在桌面右键选择新建 —> 快捷方式(图8),然后按照 \IP-ADDRESS\SHARE-NAME 的格式输入 共享文件的位置,即\linux IP 地址\共享文件夹名字

我的如图9所示:

然后输入账户和密码,就可以看到该文件夹下的内容。

三、讨论

3.1 samba

tcp/139,445端口,udp/137,138端口 这几个端口是不是被禁了呢

后来发现默认端口不可用,随后修改了默认端口smb ports = 1315 1314,在linux上面通过mount -t cifs -o username=username,password=123456,port=1314 //ip/wwwroot /home/code/wwwroot 的方式可以。

但windows上的端口,不好改。

3.2 WINDOWS访问SAMBA提示没有权限

报错原因: windows没有开通SMB和 linux的selinux

windows开通SMB:

  1. 打开“控制面板”。
  2. 鼠标左键点击“程序”选项。
  3. 点击“启用或关闭windows功能”。
  4. 在弹出的windows功能列表中下拉,找到"SMB 1.0/CIFS"并选中,然后点击确定按钮。
  5. 系统会下载并安装文件,耗时跟网速和硬盘速度有关,稍等片刻即可。

Linux 关闭selinux:

vim /etc/sysconfig/selinux
	SELINUX=disabled

[root@localhost local]# setenforce 0

[root@localhost local]# getenforce
Permissive

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn