admin 管理员组文章数量: 887021
场景一:项目资料很多,在微信里传来传去很不方便,如何建立一个文件共享空间,让项目组的所有人都可以实时地查看和编辑?
场景二:windows上的磁盘空间快满了,但是linux服务器上的磁盘空间还很大,如何在windows上像利用本地磁盘空间一样利用linux服务器上的磁盘空间?
Samba服务是在linux与windows之间共享文件的最佳选择,可以轻松解决以上场景的问题。本文演示如何在linux上搭建Samba服务,以及如何用windows连接linux上的文件共享空间,使用的linux系统为Ubuntu 16.04.7 LTS,windows系统为Windows 10专业版。
一、Ubuntu安装配置Samba服务器
注意:下面的操作在root账号下进行
1、查看服务器磁盘利用情况
df -h
可以看到/home目录还有1.8T的可用磁盘空间,因此这里在/home目录下建立共享文件夹
2、依次执行以下命令
创建共享文件夹
mkdir /home/sambashare
设置共享文件夹权限
chmod 777 /home/sambashare
安装Samba服务
apt install samba
3、修改配置文件
vim /etc/samba/smb.conf
[printers]和[print$]的配置是跟打印机相关的,不用打印机的话建议都注释掉
场景一需要创建多人使用的公有共享sambashare,这里的共享名sambashare可以是别的名字;场景二需要创建私有共享homes,共享名homes只能是这个名字。在配置文件的最后面添加以下代码
[sambashare]
path = /home/sambashare
valid users = lifaqiang
write list = lifaqiang
directory mask = 0775
create mask = 0664
[homes]
browseable = no
writable = yes
valid users = %S
第1行的sambashare为共享名,下面的5行为该共享使用的配置,可以通过这样的形式添加不同共享名的多个共享。path指定共享目录路径。valid users指定允许访问该共享的用户,如果不指定则所有用户都能访问。write list指定允许写入该共享的用户,优先级比writable高,指定的用户必须是服务器上已经存在的用户,如果不指定则所有用户服从writable。valid users和write list可以指定由逗号隔开的多个用户名。directory mask设置创建目录的权限,create mask设置创建文件的权限。browseable用来指定是否可以在资源管理器中看到该共享的图标,browseable默认为yes,如果[homes]里面browseable采用默认值,将会显示指向同一目录的两个图标,一个图标名为homes,一个图标名为登录的用户名,为了去除重复,[homes]中browseable设置成no。writable用来指定该共享路径是否可写,默认为no。
当用户请求一个共享时,服务器将在存在的共享资源段中去寻找,如果找到匹配的共享资源段,就使用这个共享资源段。如果找不到,就将请求的共享名看成是用户的用户名,并在本地的密码文件中找到这个用户,如果用户名存在,并且用户提供的密码正确,则以这个[homes]段复制出一个共享提供给该用户。这个新的共享的名称是用户的用户名,而不是homes,如果[homes]段里没有指定的共享路径,就把该用户的家目录作为共享路径。%S是Samba的宏,表示当前共享的名称,因此,[homes]段的%S即用户名,valid users设置为%S则只有当前用户可以访问。
除此之外,还有一些可能会用到的参数。public指定是否可以在不输入用户名和密码的情况下访问该共享路径(即匿名访问,身份为linux的nobody用户),同guest ok,默认为no。read only含义与writable相反,指定该路径是否只读,默认为yes,优先级比write list低。available指定该共享是否可用,默认为yes,适用于需要频繁开启和关闭共享的场景。
4、依次执行以下命令
修改配置文件后需要重启smbd服务使配置生效
systemctl restart smbd
将smbd服务加入到启动项,开机自动启动
systemctl enable smbd
Samba有独立的用户数据库,并且Samba的用户必须是linux服务器上存在的用户,因此需要选择linux账户添加到Samba的用户数据库并设置密码,这里的密码可以与登录linux使用的密码一致也可以不一致
smbpasswd -a lifaqiang
5、查看服务器ip,在windows上打开cmd,输入以下命令测试smbd服务是否工作正常。telnet命令与ping类似,但是ping不能指定端口号,telnet可以,下面的445就是smbd服务默认使用的端口号
telnet 10.17.140.70 445
提示telnet不是内部或外部命令,说明电脑没有安装这个功能,需在windows功能页面勾选Telnet客户端并重启才能使用该命令
如果出现以下界面,说明smbd服务工作正常
出现以下界面,说明端口被网管禁用,需要自定义一个新的端口号
测试时发现使用有线网络的电脑可以正常连接445端口,但是使用无线网络的电脑无法正常连接445端口。为了让使用有线网络的电脑和使用无线网络的电脑都能正常使用Samba服务,这里修改smbd服务使用的端口号为446,然后在windows上的445端口通过端口映射连接服务器上的446端口。如果连接445端口没有问题,那么下面第6、1步可以跳过。
6、修改配置文件并重启smbd服务
vim /etc/samba/smb.conf
systemctl restart smbd
二、windows配置
1、在windows上以管理员身份运行cmd,输入下面的命令
添加端口映射
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=445 connectaddress=10.17.140.70 connectport=446
查看端口映射
netsh interface portproxy show v4tov4
出现以下界面则添加成功
重启windows电脑使端口映射生效
2、如果添加了端口映射,可通过\\127.0.0.1查看共享
如果未添加端口映射,通过\\服务器ip地址的方式即可访问共享文件夹。双击进入文件夹,第一次访问共享文件夹需要输入用户名密码,如下图,勾选记住我的凭据重启电脑后不用输入用户名密码即可访问。如果需要删除登录信息或者用另一个用户登录,可以依次打开控制面板、用户账户、管理windows凭据,删除当前用户的登录信息,然后重启电脑。
点击确定,就可以进入文件夹,退回到上一级可以看到自己的私有共享,并且也可以直接访问
3、为了更方便访问共享文件夹,可以在windows上进行如下设置
如果未添加端口映射,请更改上图中1处的ip地址为服务器ip地址。同样的方法添加映射的网络文件夹\\127.0.0.1\lifaqiang,就可以直接在此电脑的界面里添加这两个文件夹的图标,如下图,双击即可快速进入这两个文件夹,就像在操作windows下的磁盘一样。
4、如果输入\\127.0.0.1无法访问远程文件夹,在Windows功能页面安装SMB 1.0CIFS客户端,再重启电脑一般就没问题了
版权声明:本文标题:linux与windows文件共享 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1725011190h849217.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论