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:
- 打开“控制面板”。
- 鼠标左键点击“程序”选项。
- 点击“启用或关闭windows功能”。
- 在弹出的windows功能列表中下拉,找到"SMB 1.0/CIFS"并选中,然后点击确定按钮。
- 系统会下载并安装文件,耗时跟网速和硬盘速度有关,稍等片刻即可。
Linux 关闭selinux:
vim /etc/sysconfig/selinux
SELINUX=disabled
[root@localhost local]# setenforce 0
[root@localhost local]# getenforce
Permissive
参考资料
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn