如何实现Windows 与 Linux文件系统共享(转帖2篇)

如何实现Windows 与 Linux文件系统共享(http://www.51cto.com/html/2005/1201/12824.htm)

http://www.51cto.com 2005-12-01 19:03 出处:Linux乐园

Linux的开放性与免费理念吸引了无数的计算机爱好者,越来越多的人加入了Linux的阵营。但Linux使用的文件系统为Ext2,和传统的Windows系列的FAT不同,如何沟通两者间的资源成为应用中的一大问题。下面就介绍几种解决该问题的方法。

(一)同一机器上文件系统的共享

1.Windows系统下访问Linux分区信息

网络上提供一些程序用于在Windows系统下访问Linux分区信息,可以在http: //uranus.it.swin.edu.au/~jn/linux/下找到相应软件;也可以在www.globalxs.nl站点下载程序 fsdext.zip,解压后依照说明将vext2d.vxd、tsdext2.vxd拷贝到c:\windows\system目录下,使用命令 mount /dev/hda2 g将Linux分区虚拟为新的盘符g,卸载也只需使用命令mount /u g即可轻松完成。

2.Linux系统下访问Windows分区信息

直接使用Linux 的mount 命令加配参数即可实现。

(二)不同机器间文件系统的共享

需要在Linux系统上配置NFS、Samba等服务进程以支持资源互访。下面介绍如何配置Samba服务进程。

Samba由两个守护进程smbd和nmbd组成,可由命令 /etc/rc.d/init.d/smb start 启动。启动时读取配置文件 /etc/smb.conf。查询是否启动可使用ps -ef |grep smbd命令;停止Samba可使用命令/etc/rc.d /init.d/smb stop。smb.conf文件主要包括以下部分:

1.Global (全局)参数

该部分设置整个系统的规则,定义了一些公共变量。

netbios name=web

定义Windows系统“网上邻居”中所见的机器名。

workgroup=SambaServer

定义服务器的工作组名。

server string=Samba Server

对主机的说明信息。

hosts allow=202.110.211.225

guest account=hgz

定义smb用户名称。

security=user

定义访问权限。访问权限由低到高有三种:share、user和server。其中share安全级别最低,user模式要求连接时输入用户名和口令,可由以下命令建立smb网络用户:

#dduser username 添加该用户为Linux用户。

#mbpasswd -a username 添加该用户为smb用户。

#mbpasswd username 修改smb账户的口令,最后与/etc/passwd中的口令一致。

server模式要求用户的认证由Samba服务器或NT服务器来完成。

encrypt passwords=yes

设置是否需要加密口令。因为Windows系列默认采用加密口令传输,而Linux默认采用非加密口令传输,为保证smb网络用户的正常登录,在user安全级下设置为加密,在share 安全级下可不设。

smb passwd file=/etc/smbpasswd

由命令cat /etc/passwd | mksmbpasswd.sh > /etc /smbpasswd产生。

interfaces=202.110.211.225/24

配置smb服务所使用的网卡IP以及子网掩码。A段网址为8, B段网址为16, C段网址为24。如果有两个以上网卡,要全部列出。

name resolve order=host dns bcast

设定smb服务时,从机器netbios名称到IP地址的解析方式,默认顺序为host lmhosts wins bcast。如果局域网内有DNS,可设置为host dns bcast。

wins support=no

设置是否有wins支持。

public = yes

为yes时,“网上邻居”中可见该资源,否则不可见。

browseable = yes

为yes时,“网上邻居”中可见该资源,否则不可见。

printing = bsd

指定Linux使用哪个打印机守护进程(bsd、sysv、hpux、aix、qnx、plp),同时向samba说明命令lpr和lpq的缺省值。

printcap name = /etc/printcap

定义了打印配置文件所处的位置。

load printers = yes

表明是否加载printcap 定义的所有打印机以供浏览。

2.Directory shares (目录共享部分)——包括标准[homes]部分

该部分通常定义了Linux机器上共享的目录资源,其名字可以由用户确定。段中的设置控制了每一个用户目录的共享权限。

Comment = Home Directories

设定在浏览本机资源时,出现在指定资源旁边的字符串。

Browseable = no

控制一项服务是否能够出现在网上邻居中,no意味着这个目录将在浏览时显示为要验证的用户名称,yes则显示 homes 和要验证的用户名称的共享目录。

Read only = no

控制是否允许通过验证的用户对主目录有写入的权限,但最终取决于该目录的 Unix 权限。无论 Unix 的权限怎样, 设置 read only = yes 后, 主目录只能是只读的。

3.Printer shares (打印共享)部分

Comment = All Printers

指定为哪些设备进行设置。

Browseable = no

指定是否能够浏览Windows 客户机的printcap 文件定义的全部打印机。

Printable = yes

指定是否允许不打印而去访问与打印服务相关的假脱机目录,例如:/var/spool/lpd/lp。

Public = no

指定未被Linux 用户名验证的Windows 客户机是否有权使用Samba 打印服务。

Writable = no

指定是否有权写假脱机目录。

Create mode = 0700

假脱机文件的缺省许可权限。

4.Public 部分,配置共享目录部分

Comment = Public Stuff ;说明部分

Path = / ;共享的Linux目录

Writable = no ;写权限

Printable = yes

配置文件设置完毕后,重新启动Samba,可以运行以下几个程序进行检测或共享Windows系统资源。

● 运行Testparm程序检测smb.conf的配置文件是否正确。

● 启动Samba2.0.3版本中的swat程序,就可以利用浏览器来配置smb.conf文件。编辑/etc/inetd.conf 文件,将其中swat前的注释去除,再由inetd 服务启动。重启后在Linux主机或相同的客户机浏览器的地址中输入http://Linux主机名或IP地址,就可以利用浏览器来进行smb.conf 文件的配置与管理工作。

● 运行Smbstatus程序显示Samba 当前输出的共享资源。

● 可以把Smbclient程序用作一个基于Linux的Microsoft(smb)的客户,提供FTP模式界面,便于进行调试。

例如:smbclient -L 主机名 <口令> <-U 用户名>

可以查看主机的共享资源信息。smbclient \\\\主机名\\共享目录名 <口令> <-U 用户名>可以连接网络共享资源。其用法类似ftp。

● Nmbclient是可以用来进行调试的程序。

● Smbfs程序是使用SMB协议工作的文件系统。

● Smbmount程序用于在Linux上安装smbfs。使用它可以将Windows共享目录安装在 Linux主机上。

例如:smbmount \\\\主机名\\共享目录名 <口令> -c ‘mount /mnt/smb’命令就可以将指定主机的共享名安装到本地的目录。

● Smbumount程序用于卸载Smbmount建立的共享资源目录。

● Smbtar是一段shell脚本程序,它通过Smbclient使用 tar格式备份和恢复一台远程Windows的共享文件。

One thought on “如何实现Windows 与 Linux文件系统共享(转帖2篇)”

  1. 享受Linux下的“网上邻居”(http://www.bjfix.com/software/os/linux/2005/06/1609124242.html)

    时间:2005-6-16 9:12:42 作者: 来源:赛迪网点击数:

    ppp

      

        对于今天的计算机用户来说,网络可能是最常用的功能之一了。相比较而言,在Windows中对网络的配置和使用要简单一些。一台使用Windows的机器,一旦在局域网中安装、设置完成以后,在局域网内部使用网上邻居和其它计算机的共享目录、文件、打印机等就变得非常简单。在Linux中,资源的共享和访问相对Windows要复杂一些。而在同时包含有Linux机器和Windows机器的局域网环境中(很多企业在未来很长一段时间里将维持这样一种状况),问题更是复杂得多。

    虽然使用Samba可以实现网上邻居的所有功能,但是对于一个计算机新手或者那些正准备从Windows转向Linux的用户而言,它的配置还是过于困难。

    下面我介绍一个和Windows的网上邻居类似的、基于Linux平台的自由软件工具——LinNeighborhood,使用它可以轻松地共享和访问局域网内的资源。

    LinNeighborhood概述

    LinNeighborhood是一个非常易于使用的、源码开放的第三方网络工具。其作者是Hans Schmid和Richard Stemmer。通过该工具,可以使Linux计算机轻松地查看局域网内的Windows共享资源,也可以查看和访问局域网内其它Linux计算机上的共享资源。简言之,LinNeighborhood就是一个带有图形界面的Samba。

    我们可以从网上下载LinNeighborhood的RPM文件。由于我使用的是Red Hat 8.0,所以到网上下载了相应的RPM文件(http://java.thn.htu.se/~toor/)。目前可用于Red Hat 8.0的RPM版本是0.6.5.1,文件大小是180KB。SuSE 8.1专业版中已经包含了该工具。如果使用的是Mandrake 9.0,可以到很多镜像站点下载到相应LinNeighborhood版本的RPM文件。

    RPM文件安装过程非常简单。你可以使用LinNeighborhood挂载Windows机器上共享的目录、文件、打印机等资源,这样,在Linux机器上就可以轻松地访问这些资源了。对于资深的Linux用户而言,使用命令行的方式挂载共享资源并不是什么难事,但是对于Linux新手,有一个直观的图形化的挂载方式则显得非常重要。

    我在这里所说的更简单是指一旦你在一台Linux机器上设置好网上邻居目录后,就可以使用各种共享功能,并且查看共享内容时是在网上邻居中,而不是mnt目录中一个个让人模不着头脑的目录。

    当然,如果你是一个Linux老手,觉得使用mnt目录共享资源更习惯的话,完全可以不配置网上邻居目录,直接运行LinNeighborhood就可以了。不过,在一台Linux机器上创建一个网上邻居文件夹对于系统管理员来说还是非常方便的,对于刚从Windows转到Linux的用户更是如此。对于企业而言,这就意味着花费更低的培训资金。

    很显然,在Linux机器上创建一个网上邻居文件夹,并且使用它来挂载和共享其它计算机的资源,这是一种使Linux桌面从感觉和外观上都更像Windows桌面的办法。虽然是一个资深的Linux用户,完全有能力自己来安装和配置Samba,但是使用网上邻居还是可以大大减化工作。

    当然,也许有人可能会说,使用Linux的NFS(网络文件系统)也可以完成上述的功能。但是,我们更需要一种易于理解、容易学习,并且可以轻松实现的方法。

    下载和安装

    首先下载LinNeighborhood。如果使用的是Red Hat 8.0,那么下载的文件应该是LinNeighborhood-0.6.5-1.i686.rpm。注意,一定要下载与自己所使用版本对应的文件。

    下载完成后,在文件上单击右键选择“install packages”,这时会进行一些检查,如果没有安装libgcj-3.2-7,那么就会要求插入第一张Red Hat 8.0安装盘。插入安装盘单击确定进行安装(注意整个过程要以root身份进行)。

    安装完成后,就会发现安装程序并没有在菜单中添加相应的图标(如果使用的是Mandrake 9.0或者SuSE 8.1就会自动添加上),不过没有关系,可以点击开始→查找文件,然后输入LinNeighborhood,点击查找就可以找到可执行文件之所在。在我的安装中,LinNeighborhood的可执行文件位于/usr/bin目录下。

    使用LinNeighborhood查看共享资源

    首先在桌面上建一个名为“网上邻居”的目录,如图1所示。

    图1 在我的桌面上已经添加了一个网上邻居目录

    再强调一遍,这样做并不是必须的,之所以选择这种方式是为了让配置完成后的效果更接近于Windows操作系统中的网上邻居。在网上邻居的目录中再创建几个和远程计算机对应的目录,配置完成后就可以直接从这里来访问远程机器上的共享资源了,就像是在Windows的网上邻居里一样(如图2所示)。

    图2 在网上邻居目录下创建几个和远程计算机对应的目录

    当LinNeighborhood启动时,它显示的是本地Linux机器的域名和在局域网上发现的各工作组名(如图3所示)。其中HOST是一台运行Windows 2000专业版的机器,Share是该机器上共享的一个目录;YILIGUI是本地机;RESEARCH是另外一台Linux计算机。

    图3 所处局域网内处于开机状态的几台机器

    图4 挂载对话框

    图4是LinNeighborhood已经填好的对话框,可以不做任何更改,但是在本例中为了实现我们的目的,要做一些更改。

       

        “Mount Dialog”对话框的第一个文本框显示的是远程计算机上共享目录的路径,对此无需改变。第二个文本框是Mount Point(挂载点),这里显示的是想要挂载共享目录至本地机器上的目录。在缺省情况下,这个目录是/mnt。如果想让所有远程共享的资源都出现在前面创建的“网上邻居”文件夹中,并且要出现在与相应主机对应的目录之下,因为该目录位于成果科的机器之上,要做到与之对应,需要把“/mnt”改为“/root/desktop/网上邻居/成果科/”。

    如果在查看远程计算机的共享目录时无需提供用户名和密码,那么就不用管这里的SMB User 和SMB Password文本框了。此处需要用户名和密码,当然此前同事已经为我在远程计算机上添加好了一个用户。完成Mount Dialog对话框之后,只需点击对话框中的“Mount”即可完成挂载。挂载完成后,LinNeighborhood窗口中就会在Share的后面和整个窗口的底部显示出相关的挂载点信息(如图5所示)。

    图5 挂载完成的share目录

    这时,就可以看到挂载的远程目录出现在“网上邻居”窗口中。现在打开桌面上的网上邻居文件夹,如果一切正常的话,就会看到远程的内容位于“/roo/desktop/网上邻居/成果科/”之下(如图6所示)。

    图6 网上邻居中相应计算机的内容

    这时就可以访问共享文件夹里的内容,如果对方也同时在使用这些文件,那么就要求你对这些文件必须有读写的权限才能访问它们。要在“网上邻居”中添加更多的远程共享文件夹,只需要重复上述过程。

    远程计算机上的账号

    为了能够访问远程计算机上的共享资源,需要有一个远程计算机的账号。如果远程计算机是一台Linux机器,那么该机器必须运行有Samba,并且机器的管理员必须把你添加为它的一个用户。方法很简单,只需运行命令“smbpasswd -a 你的用户名”即可。这样每一次当你加载一个远程计算机时,LinNeighborhood就会弹出一个窗口要求你登录。这时候,输入账号就可以访问远程计算机的共享资源了。

    如果远程计算机是一台Windows 2000的机器(如前面所述)也非常简单。该机器的系统管理员可以通过以下步骤来添加一个用户:开始→设置→控制面板→用户名和密码→增加,然后按照提示完成整个过程。

    这样,每一次Linux机器加载这个Windows机器时也会弹出一个对话框,要求输入用户名和密码。登录完成后,就可以使用远程计算机的共享资源了。

    使用网上邻居

    一旦在本地机的网上邻居中挂载了远程的共享目录,访问它们就和访问Windows的网上邻居非常的相似。此外,目录、文件和其它设备在Konqueror中的操作和显示方式也非常类似。

       

    相比较而言,在Linux上使用Samba访问远程Windows机器上的共享目录则要麻烦得多。原因之一就是在不使用时也要挂载远程目录本身就不是一个好办法。此外,还要注意在对方关机之前要将该目录卸载。如果你访问对方已经关机的文件夹,这时文件管理器就会被锁住。

    LinNeighborhood一个很好的功能就是可以看到现在挂载的都有哪些可用的资源,通过查看它的主面板或者其屏幕下方的小面板,就会显示所有目录加载的共享目录。

    传统情况下,在Linux中需要逐个加载远程的共享目录;而Windows的网上邻居可以自动定位网上所有的共享信息。如今通过LinNeighborhood,也实现了该功能。

    使工作更加简单

    如果对远程机器进行一些调整,整个过程就会变得更加简单。当然为了做到这一点,必须要有对方的配合(企业内部这样的配合应该说没有问题)。一般而言,人们使用远程访问是为了能够共享数据。所以,可以在远程计算机上创建一个“share”文件夹,并且把想要共享的东西全部放到里边,再在里边建一些子目录,比如Documents、Spreadsheets、Graphics等。这样,使用起来就会更加得心应手。

    相反的访问过程

    如果要让Windows用户可以使用Linux机器上的共享资源,就不得不使用Samba了。一般而言,Linux操作系统在安装时已经安装好了Samba,做一些简单的修改即可实现目的。具体来说,需要以下两个步骤:

    1.修改smb.conf

    [root@research]vi /etc/samba/smb.conf (Red Hat Linux

    .x及以前版本,该文件在/etc目录下。)

     

    然后修改以下项目:

    [global]

      workgroup=yiligui   (设定工作组)

      security=share   (设为不需密码即可登入主机,除非各用户间足够信任,否则不要使用该选项。)

    [ShareDir]

      guest ok=yes  (进入该目录时不需密码)

      path=/yiligui   (共享目录的位置)

      writeable=yes  (可对该目录进行写操作)

     

    2.设置完后使用以下命令来启动服务

    #/etc/rc.d/init.d/smb start

    starting SMB services: [OK]   (启动了SMB服务程序)

       

    starting NMB services: [OK]   (启动了NetBIOS名称解析服务程序)

     

    在使用过程中,如果用户不知道服务是否运行,可使用“/etc/rc.d/init.d/smb status”命令来查看(如图7)。

    图7 查看Samba的状态

    如果想在系统启动时运行Samba,在Red Hat 8.0中可以按以下方法进行:开始→服务器设置→服务,然后选中smb(如图8所示)。这样,在每次系统启动时就可以自动启动Samba服务了。

    图8 设置Samba让其可以自动启动

    结束语

    实际上,Linux中有很多种方法可以实现与远程计算机的文件、打印等资源的共享。本文与大家讨论的是一种更适合于初学者的方法,特别是那些刚从Windows转而使用Linux的用户。

    本例中惟一的缺点就是如果要让Windows用户使用Linux下的共享资源,就需要使用Samba(据我所知,没有其它更好的办法)。不过,它已经使Linux用户使用局域网上远程计算机共享资源的过程大大简化了。

    我个人认为,无论从设计思想还是实现方法来看,网上邻居都可以说是微软的一大贡献。我相信,在不远的将来,它也必将成为各Linux发行版的标准工具。

Comments are closed.