1、Linux与Windows操作系统间的互访1工程需求由于工作是用于局域网间的数据采集和处理,所以要考虑到不同系统之间的数据和程序的共享和应用问题。由于目前流行的操作系统主要有Linux,Unix与Windows,其中主要是实现Linux/Unix与Windows系统之间的互访。2技术分析根据目前技术,实现局域网内的不同操作系统之间的互访方式主要是在Linux系统/Unix系统上配置服务器来与其它网内主机进行互相访问,主要有以下三种:samba服务器,NFS服务器和ftp服务器。2.1 各种互访方式的简介(1)Samba方式Samba(SMB是其缩写)是一个网络服务器,即可以用于Windows和
2、Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件;Windows利用SMB (Server Message Block,服务信息块)协议来实现操作系统间文件和打印机共享,而Samba本身具备SMB协议,它实现局域网内和Windows系列计算机的资源共享。Samba是用来实现SMB的一种软件,由澳大利亚的Andew Tridgell开发,是一种在Linux 环境里运行的自由软件。如果架了Samba Server 后,它能充当共享服务器,同时也能做为客户机来访问其它网络中的Windows共享文件系统,或其它Linux的Samba 服务器; 它可以完成如下功能: 文件服务和打
3、印服务,实现Windows和Linux的资源共享;登录服务器,可以作为局域网的服务器;作为主域控制器;WINS服务器;支持SSL;支持SWAT。它以其简洁、实用、灵活配置的特点受到越来越多人们的广泛关注。(2)NFS服务器NFS是网络文件系统(Network File System)的简称,是分布式计算系统的一个组成部分,可实现在异种网络上共享和装配远程文件系统。NFS由Sun公司开发,目前已经成为文件服务的一种标准(RFC1904,RFC1813)。其最大的功能就是可以通过网络,让不同操作系统的计算机可以共享数据,所以也可以将它看做是一个文件服务器。NFS是SUN Microsystem公司
4、开发的网络文件系统,它是一种基于远程过程调用(RPC)的分布式文件系统架构。NFS本身的服务并没有提供资料传递的协议,但是它却能进行文件的共享。原因就是NFS使用到一些其它相关的传输协议,而这些传输的协议就是远程过程调用(Remote Procedure Call, RPC)。NFS也可以视为一个RPC Server。需要说明的是,要挂载NFS Server的Client PC主机,也需要同步启动远程过程调用。这样Server端和Client端才能根据远程过程调用协议进行数据共享。(3)FTP服务器 与其他 Internet 应用一样,依照 FTP (File Transfer Protoco
5、l)协议提供服务,让网友们进行文件的存取,这些网站就是 FTP 服务器。网上的用户要连上 FTP 服务器,就要用到 FPT 的客户端软件,进行文件的上传(Upload)或下载(Download)等动作。ftp客户可以是任意平台,FTP服务器上的文件需使用上传和下载的方式。在linux 环境下,有三个主要的FTP服务器:vsftpd、proftpd和wu-ftpd。因为安全方面的原因,vsftpd目前已经牢牢的占据了主导地位。2.2 互访方式的比较在Linux主机和Unix主机使用的都是TCP/IP协议,一台Linux主机若要同其它Linux主机或是Unix主机实现信息共享,有很多方便的、成熟的
6、工具如FTP或NFS等等。同样,Windows NT也支持TCP/IP协议,所以NT Server与Linux主机或是Unix主机的信息交流,也可以通过FTP或NFS。但是,FTP和NFS并不够直观操作。为便于Windows与Linux及Unix更方便地进行信息共享,如同Windows与Windows之间一样,我们可以通过Linux提供的Samba服务程序。 Samba是一组程序,可以使你的Linux具备理解SMB协议(server message block)的能力。SMB协议是一种在os/2、Windows NT、Windows95和Windows for workgroups等Windo
7、ws 系列中广泛使用的协议,该协议主要用来实现文件和打印机共享。使你的Linux将会出现在Network Neighborhood(网络邻居)中如同其它windows机器一样。Windows用户可以登录至你的Linux机器并且以你赋与他们的权限与Unix文件系统进行双向的交流,还可以向Linux打印机提交作业。Samba 应该范围主要是Windows和Linux 系统共存的网络中使用;如果一个网络环境都是Linux或Unix类的系统,应该用NFS更好一点;3技术方案结论根据对本工程局域网内互访需求的分析,通过比较发现,为进行Windows系统与Linux系统在局域网间的互相访问与操作,选用sa
8、mba服务器的方式是更为理想的方式。samba服务器软件在linux环境中是标准配置,在标准系统安装盘中是自带的,专门用于自身Linux系统与网络中的其它Linux和Windows系统共享文件之用。并且与ftp服务器方式不同的是,在Linux中可以通过Samba的向网络中的机器提供共享文件系统,也可以把网络中其它机器的共享直接挂载在本地机上当做本地硬盘来使用;这在一定意义上说和FTP是不一样的。4具体实施4.1 Samba 两个服务器相关启动程序、客户端及服务器配置文件等;主要功能流程图4.2 详细步骤如下:4.2.1 检查是否已安装了samba服务器软件,若是用RPM包安装的,则可使用命令:
9、rootlocalhost rpm qa | grep smb4.2.2 若未装则安装软件,要进行软件的安装;否则,开始启动服务器。Samba 有两个服务器,一个是smb,另一个是nmb;smb 是Samba 的主要启动服务器,让其它机器能知道此机器共享了什么;而nmb是专门用于把这台Linux机器所共享的工作组及在此工作组下的netbios name解析出来;一般的情况下,在RPM包的系统,如果是Samba ,一般可以通过如下的方式来启动Samba服务器;(1)启动服务有两种方式:一、使用服务管理rootlocalhost # /etc/init.d/smb start或service sm
10、b start启动 SMB 服务: 确定 启动 NMB 服务: 确定 二、直接运行可执行程序/usr/sbin/smbd和/usr/sbin/nmbd(2)系统自启动设置如果希望下次启动时,服务自动启动则使用如下命令:#chkconfig list|grep smb /查看相应运行级别时,是否启动了此服务#chkconfig smb on /若没启动,则使用此方法启动(3)查看服务器是否正在运行rootlocalhost # pgrep smbdrootlocalhost # pgrep nmbd(4)关掉Samba服务器,要root权限来执行rootlocalhost # /etc/init
11、.d/smb stop或service smb stoprootlocalhost # pkill smbdrootlocalhost # pkill nmbd4.2.3 查看Samba 服务器的端口及防火墙;(1)查看服务端口有时你的防火墙可能会把smbd服务器的端口封掉,所以我们应该smbd服务器所占用的端口;下面查看中,我们知道smbd所占用的端口是139和445 ;rootlocalhost # netstat -tlnp |grep smbtcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 10639/smbdtcp 0 0 0.0.0.0:445 0.0.0.
12、0:* LISTEN 10639/smbd(2)重置防火墙两种方式:一、如果您有防火墙,一定要把这两个端口打开。最简单的方式就是把防火墙规则清掉:rootlocalhost # iptables -F或rootlocalhost # /sbin/iptables F二、打开此两个端口vi /etc/sysconfig/iptables添加如下语句:-A RH-Firewall-1-INPUT -m state -state NEW -m tcp -p tcp dport139 -j ACCEPT-A RH-Firewall-1-INPUT -m state -state NEW -m tcp
13、-p tcp dport139 -j ACCEPT下面是开放整个区间的端口的写法-A RH-Firewall-1-INPUT -m state -state NEW -m tcp -p tcp dport139:445 -j ACCEPTservice iptables restart4.2.4 查看和更新Samba 服务器的配置文件如果我们是用Linux发行版自带的Samba软件包,一般情况下Samba服务器的配置文件都位于/etc/samba目录中,服务器的主配置文件是smb.conf;也有用户配置文件 smbpasswd、smbusers和lmhosts等;主要有两方面内容:开放相应的用
14、户权限和建立相应的目录并授权;首先您要备份一下smb.conf文件,然后重写smb.conf文件。具体如下:rootlocalhost # cd /etc/sambarootlocalhost samba# mv smb.conf smb.confBAK例子一:一个可用于匿名用户读写的配置文件第一步:建立新文件smb.confrootlocalhost samba#cat smb.conf globalworkgroup = TECHNOLOGYnetbios name = Technology05server string = Samba TestServersecurity = share
15、technologypath = /opt/technologywriteable = yesbrowseable = yesguest ok = yesEOF注解: global这段是全局配置,是必写的段,其中项的含义:workgroup 就是Windows中显示的工作组;在这里我设置的是TECHNOLOGY (用大写);netbios name 就是在Windows中显示出来的计算机名;server string 就是Samba服务器的注释说明security 这是验证和登录方式;另外一种常用的是user的验证方式;如果用share就不用设置用户和密码了;technology 这个在Win
16、dows中显示出来是共享的目录;path = 可以设置要共享的目录放在哪里;writeable 是否可写,这里我设置为可写;browseable 是否可以浏览,可以;可以浏览意味着,我们在工作组下能看到共享文件夹。如果您不想显示出来,那就设置为 browseable=no guest ok 匿名用户以guest身份是登录;第二步:建立相应目录并授权;rootlocalhost # mkdir -vp /opt/technologyrootlocalhost # id nobodyuid=99(nobody) gid=99(nobody) groups=99(nobody)rootlocalho
17、st # chown -R nobody:nobody /opt/technology注释:关于授权nobody,我们先用id命令查看了nobody用户的信息,发现他的用户组也是nobody,我们要以这个为准。有些系统nobody用户组并非是nobody ;例子二:复杂一点的用户共享模型(适合10人左右的小型企业);比如一个公司有四个部门,分别是departadmin,depart01,depart02,depart03,depart04。我们想为这家公司设计一个比较安全的共享文件模型。每个用户都有自己的网络磁盘如netdisk01到netdisk04,还有共用的网络硬盘netdiskrdwt
18、;所有用户(包括匿名用户)有一个共享资料库shareonlyrd,此库为了安全是只读的;还要有一个空间,用于公司所有用户的临时文档终转.(1) 共享权限设计实现的功能;1)departadmin部门具有管理所有SMB空间的权限;2)depart01到depart04拥有自己的空间netdisk01-netdisk04,并且除了自身及departadmin有权限以外,对其它用户具有绝对隐私性;3)depart01到depart04拥有一个共同的读写权限的空间netdiskrdwt;4) 所有用户(包括匿名用户)有一个有读权限的空间shareonlyrd,用于资料库,所以不要求写入数据。5) 还要
19、有一个空间sharerdwt,让所有用户可以写入,能删除等功能,在权限上无限制 ,用于公司所有用户的临时文档终转等;(2) 在服务器上创建相应的目录;rootlocalhost # mkdir -p /opt/departadminrootlocalhost # cd /opt/departadminrootlocalhost departadmin# mkdir v netdisk01 netdisk02 netdisk03 netdisk04 netdiskrdwt shareonlyrd sharerdw注:功用如下:/opt/netdiskadmin 这是管理员目录,负责管理其下所有目
20、录;/opt/netdiskadmin/netdisk01 是depart01的家目录,用于私用,除了用户本身和departadmin以外其它用户都是不可读不可写;/opt/netdiskadmin/netdisk02 是depart02的家目录,用于私用,除了用户本身和departadmin以外其它用户都是不可读不可写;/opt/netdiskadmin/netdisk03 是depart03的家目录,用于私用,除了用户本身和departadmin以外其它用户都是不可读不可写;/opt/netdiskadmin/netdisk04 是depart04的家目录,用于私用,除了用户本身和depa
21、rtadmin以外其它用户都是不可读不可写;/opt/netdiskadmin/netdiskrdwt是用于depart01到depart04用户可读可写共用目录,但匿名用户不能读写;/opt/netdiskadmin/shareonlyrd所用用户(除了departadmin有权限写入外)只读目录/opt/netdiskadmin/sharerdwt 用于所有用户(包括匿名用户)的可读可写;(3) 添加用户用户组,设置相应目录家目录的权限rootlocalhost # /usr/sbin/groupadd departadminrootlocalhost # /usr/sbin/groupa
22、dd depart01rootlocalhost # /usr/sbin/groupadd depart02rootlocalhost # /usr/sbin/groupadd depart03rootlocalhost # /usr/sbin/groupadd depart04rootlocalhost # /usr/sbin/groupadd depart0104(4)添加用户rootlocalhost # adduser -g depart01 -G depart0104 -d /opt/netdiskadmin/depart01 -s /sbin/nologin depart01roo
23、tlocalhost # adduser -g depart02 -G depart0104 -d /opt/netdiskadmin/depart02 -s /sbin/nologin depart02rootlocalhost # adduser -g depart03 -G depart0104 -d /opt/netdiskadmin/depart03 -s /sbin/nologin depart03rootlocalhost # adduser -g depart04 -G depart0104 -d /opt/netdiskadmin/depart04 -s /sbin/nolo
24、gin depart04rootlocalhost # adduser -g departadmin -d /opt/departadmin -G departadmin,depart01,depart02,depart03,depart04,depart0104 -d /opt/netdiskadmin -s /sbin/nologin departadmin用finger和id来查看用户信息,检查用户是否添加正确,如下:rootlocalhost # id departadminrootlocalhost # finger departadmin(5)添加samba用户并设置密码;我们用的
25、方法是先添加用户,但添加的这些用户都是虚拟用户,因为这些用户是不能通过SHELL登录系统的;另外值得注意的是系统用户密码和Samba用户的密码是不同的。如果您设置了系统用户能登入SHELL,可以设置用户的Samba密码和系统用户通过SHELL登录的密码不同。我们通过smbpasswd 来添加Samba用户,并设置密码。原理是通过读取/etc/passwd文件中存在的用户名。rootlocalhost netdisk01# smbpasswd -a departadminNew SMB password: 注:在这里添加Samba用户departadmin的密码;Retype new SMB p
26、assword: 注:再输入一次;用同样的方法来添加 depart01、depart02、depart03、depart04的密码;(6) 配置相关目录的权限和归属;rootlocalhost # chmod 755 /opt/netdiskadminrootlocalhost # chown R departadmin:departadmin /opt/netdiskadminrootlocalhost # cd /opt/netdiskadminrootlocalhost # chmod 2770 netdisk0rootlocalhost # chown depart01.departa
27、dmin netdisk01rootlocalhost # chown depart02.departadmin netdisk02rootlocalhost # chown depart03.departadmin netdisk03rootlocalhost # chown depart04.departadmin netdisk04rootlocalhost # chown departadmin.depart0104 shareonlyrdrootlocalhost # chown departadmin.departadmin netdiskrdwtrootlocalhost # c
28、hmod 755 netdiskrdwtrootlocalhost # chown departadmin:departadmin sharerdwtrootlocalhost # chmod 3777 sharerdwt(7) 修改Samba配置文件 smb.conf;配置文件如下,修改/etc/samba/smb.conf后,不要忘记重启smbd和nmbd服务器;globalworkgroup = DEPARTADMINnetbios name = Departadminserver string = Linux Samba Test Serversecurity = sharenetdi
29、skadmincomment = netdiskadminpath = /opt/netdiskadmin/create mask = 0664#create mask是用户创建文件时的权限掩码;对用户来可读可写,对用户组可读可写,对其它用户可读;directory mask = 0775#directory mask 是用来设置用户创建目录时的权限掩码,意思是对于用户和用户组可读可写,对其它用户可读可执行;writeable = yesvalid users = departadminbrowseable = yessharerdwtpath = /opt/netdiskadmin/shar
30、erdwtwriteable = yesbrowseable = yesguest ok = yesshareonlyrdcomment = shareonlyrdpath = /opt/netdiskadmin/shareonlyrdcreate mask = 0664directory mask = 0775writeable = yesvalid users = departadmin,depart0104#depart0104是用户组;browseable = yesnetdisk01comment = netdisk01path = /opt/netdiskadmin/netdisk
31、01create mask = 0664directory mask = 0775writeable = yesvalid users = depart01,departadminbrowseable = yesnetdisk02comment = netdisk02path = /opt/netdiskadmin/netdisk02create mask = 0664directory mask = 0775writeable = yesvalid users = depart02,departadminbrowseable = yesnetdisk03comment = netdisk03path = /opt/netdiskadmin/ne
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1