这里主要围绕着 Linux 上面使用 CIFS 协议来阐述如何实现两个系统之间的跨文件系统, 跨操作系统共享. 按照上面的描述, 有两种方式来实现共享.
首先, 我们知道基于文件的几种服务: ftp,sftp, 这两种服务都是文件传输服务, 偏重于网络传输, 并不是实时互访. 通常, 我们需要在远程和本地同时操作同一个目录, 如: 在 Windows 下使用各种强大的 IDE 编辑代码, 在 Linux 下编译和运行该代码. 如果在 Windows 下编写好代码再拷贝到 Linux 下编译, 这样修改时很费事, 直接在 Linux 下修改, 还要同步回 Windows, 相当费事. 当然有人会说, 所有的工作都在 Linux 下搞定, VI,Linux 命令行足够强大, 没有需要使用 Windows 系统的理由, 本文的重点不在讨论命令行熟练程度与工作效率的问题.
怎样像访问本地文件系统一样访问远程的文件呢? 如果远程的系统与本地系统是不同类型的, 又该如何做呢.
我们知道, 在 Windows 系统之间, 可以通过共享目录的方式, 让远程系统直接访问. 其实这里是 Windows 提供一种远程文件系统机制, NAS 协议的一种 --CIFS 协议. 如果是 Linux 系统呢, 同样有另外一种 NAS 协议 --NFS 协议来实现远程访问. 那么这两种 NAS 协议能否互通呢? 答案是否定的. 虽然二者不能互通, 但是, 在 Linux 系统上面已经有了 CIFS 协议的服务端和客户端的实现, 这样, 无论是 Linux 给 Windows 共享还是 Windows 给 Linux 共享都可以借助这些已有的实现来做到了.
相反的, Windows 上面有没有 NFS 的客户端或者服务端呢? 也有, 但是不常用, 这里就不详细介绍了.
这里主要围绕着 Linux 上面使用 CIFS 协议来阐述如何实现两个系统之间的跨文件系统, 跨操作系统共享. 按照上面的描述, 有两种方式来实现共享. Linux 分别作为 CIFS 的服务端和客户端. 下面分别就这两种方式来说明操作步骤和简单的原理介绍:
一, Samba 软件实现共享 Linux 文件系统给 Windows 用户
Samba 软件被誉为 10 大最有价值的开源软件之第五位. 其获取方式非常容易, 配置使用也非常简单. 下面以 fedora 系统为例, 先看一下本地是否已经安装好 samba, 如果 / etc/init.d/smb 文件存在, 则说明已经安装好了 samba 软件, 否则使用如下命令安装:
yum install samba
安装完成后, 修改配置文件, 打开:/etc/samba/smb.conf, 在文件末尾加上如下配置:
- [root]
- comment = root
- path = /
- create mask = 64
- writeable = yes
- browseable = yes
- valid users = root
这个配置的意思是, 创建一个名为 root 的共享, 将根文件目录 "/" 共享给用户. 允许登录的用户名是 root.
然后给 samba 系统添加 root 用户, 使用如下命令:
smbpasswd -a root
按照提示设置 root 用户的密码.
重新启动 samba 服务.
service smb restart
检查 smb 进程是否已经运行:
- root 1787 0.0 0.4 33068 4784 ? Ss 21:51 0:00 smbd
- root 1788 0.0 0.2 33068 2580 ? S 21:51 0:00 _ smbd
在需要访问该 Linux 系统的 Windows 客户机上面, 打开 Windows 的资源管理器, 在地址栏输入:\192.168.1.110
会发现, 提示有一个共享 root, 双击访问时, 提示输入用户名和密码, 输入此前配置的 root 用户和密码即可访问. 这里就是 Samba 软件实现了 CIFS 的服务端, Windows 资源管理作为客户端访问远程的共享文件系统. 为了更为方便的使用该文件系统, 还可以将该共享映射成一个本地的盘符, 让 Windows 上面的各种工具像使用本地磁盘一样使用该目录. 所有在 Windows 上面对该共享做的操作都会实时同步到 Linux 系统上面.
二, Linux 访问 Windows 的共享
上面的借助于 Samba 的方式是大家常用的. 还有一种, Windows 系统天然就是一个 CIFS 的服务端和客户端, 既然 Windows 系统可以给 Windows 系统共享目录, 那么 Linux 系统能否访问这些共享呢? 答案是肯定的, 由于有强大的 VFS 支撑, Linux 支持挂载和访问各种文件系统. mount 工具支持挂在 CIFS 甚至 NTFS 的文件系统. 如果是 Windows 本机上面的 Linux 虚拟机, 那么可以直接通过虚拟机管理软件, 如 Vmware 直接共享本地的磁盘分区给 Linux 系统, Linux 系统根据 Windows 的磁盘分区的文件系统类型挂载即可. 这里不详述该方案.
进入本段的正题, 首先我们需要共享一个 Windows 的目录:
下面以 Windows XP 为例, Windows 7 未做验证, 应该类似. 在共享之前, 首先需要确保 Windows 系统的 server 服务处于启动状态, 如下图:
选择需要共享的目录, 右键, 属性, 选择 "共享" 页, 如下图:
选择在网络上共享这个文件夹, 并指定共享名. 根据需要选择是否允许远程用户修改该文件夹. 这样这个文件夹就被共享给远程访问了.
在 Linux 系统下挂载该共享:
- [root@f2 ~]# mount -t cifs -o username="Test" //192.168.1.100/sourcecode /root/sourcecode
- Password for Test@//192.168.1.100/sourcecode:
按照要求输入指定用户的密码即可.
此时, Windows 的共享 sourcecode 目录就已经挂载到 Linux 系统上面了, Linux 系统可以像访问本地目录一样访问该目录了.
来源: http://os.51cto.com/art/201809/584351.htm