您的位置:首页 > 运维架构 > Linux

Linux下利用NFS和Samba在source insight上快速开发应用程序

2014-08-16 09:33 316 查看
首先,在搭建这个环境之前,我们需要了解一下NFS-samba-tftp之间的区别,这个很多做嵌入式移植的朋友应该是再熟悉不过了。不过很少有人深究他们到底有什么区别?这里我也不讲深入的本质,简单的区别一下他们。这里我就引用一下网上一些文章吧。

NFS是SUN Microsystem公司开发的网络文件系统,它是一种基于远程过程调用(RPC)的分布式文件系统架构。与Samba相比较,NFS的数据吞吐能力更强。

1、 用命令 # rpm –qa | grep nfs检查软件包NFS是否安装 ,如果输出没有输出,表明没有被安装,请自行安装之。

2、 配置NFS服务器。用任何文本编辑器配置文件/etc/exports,来确定需要给客户共享的目录。它的基本格式为 Directory Host(options) # comments ,这3个字段/列要在一行,directory与host(options)之间要有间隙,# comments 可有可无。主机选项主要是给与挂接用户什么样的权限。目录directory表示要共享出去的目录,值得注意的是,在启用NFS服务以前,系统管理员应该仔细一些,比如不小心共享了根目录/,并且给与用户读写权限,这是十分糟糕的问题。因此,尽可能少的共享目录和赋予较小的访问权限。主机名host是一个很灵活的项目,可以是单个的主机名称(由/etc/hosts得到),主机ip地址,由域名服务器解析的主机名称,IP网络—网络号和子网掩码中间用
“/”连接,NIC等。下面列举一个例子。

/home/sery sery(r,w) #把目录/home/sery共享给主机sery,并且主机对目录#/home/sery有读写权限

/tmp 192.168.100.18(ro) #主机192.168.100.18对目录/tmp具备只读共#享权限

/media/cdrom 192.168.100.0/255.255.255.0(r,o) #整个网络有读取挂接在NFS

#服务器上的光驱光盘的读取权限

3、 启用NFS服务。分两步:首先启用portmap,然后启用NFS服务。# service portmap start;

# service nfs start。其中portmap的功能是启用远程过程调用,有时启用NFS不能成功,不妨检查一下portmap服务是否启动(# ps aux | grep portmap)。

4、 在客户端挂接NFS共享出来的目录。先在客户端创建一个挂接点,如 # mkdir /mnt/nfs ,而后使用命令把nfs服务器共享出来的目录挂接上,以第2步那个共享为例,我们挂接目录 /tmp , # mount –t nfs 192.168.100.100:/tmp /mnt/nfs //假定nfs服务器的ip地址是192.168.100.100。

5、 访问NFS共享资源。接上步,改变文件目录 # cd /mnt/nfs就方便地实现了对nfs服务器目录/tmp的远程访问。

6、 卸载NFS文件系统。在客户端执行命令 # umount /mnt/nfs 就卸下了第4步挂接的NFS文件系统。

7、 其他事项。前面我们描述了在客户段用手工挂接NFS文件系统的操作,有的场合可能需要自动实现对NFS的挂接操作;修改文件/etc/fstab,把挂接项插入进去就可以了。对一个有较多连接的NFS服务器而言,有这样一个问题—用户在使用完挂接的文件系统后,并不会总记得卸载掉NFS挂接,这必然会增大NFS服务器的维护工作量以及白白占用有限的系统和网络资源;解决这个问题的办法是使用自动挂接器(automounter)。关于自动挂接器属于性能调优的范畴,在此不做描述。

samba服务配置

1、首先,下载安装samba服务器

# apt-get install samba

2、配置samba服务器的配置文件/etc/samba/smb.conf,默认可以按照下面的设置来

# "security = user" is always a good idea. This will require a Unix account
# in this server for every user accessing the server. See
# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html
# in the samba-doc package for details.
security = share
----早期的linux版本的配置文件smb.conf的安全选项“security=share”,这个默认值是个安全隐患,不过现在流行的linux版本的安全选项的默认值是“security=user”


[gzpl]		----这里的gzpl是共享的地址别名,可以自己修改
comment = Shared Folder with username and password
path = /home/gzpl	----代表上面gzpl的具体目录
guest ok = yes
readonly = no
locking = no
public = yes
writeable = yes
valid users = root	----指你登录的用户,可以不用root登录,这里是为了方便
available = yes
browseable = yes
说明:valid users = myname 这个myname是自己起的,后面在添加用户名时就是添加的这个;

另外这个[share]名字也是可以随便起的,这个是你在windows下访问时显示的名字。

在windows下 \\162.168.160.11\gzpl就可以访问linux下/home/gzpl/ code目录下的内容了;

其中162.168.160.11是你linux的IP地址,用ifconfig就可以查看到。

4、 建立Samba用户密码文件。虽然samba的用户是系统用户,但出于安全考虑,samba用户的密码并非创建系统用户时设定的用户密码。为了生成smb所需的密码,应该进行下面的操作:

sudo useradd myname

上面只是增加了 myname这个系统用户,却没有给用户赋予本机登录密码。所以这个用户将只能从远程访问,不能从本机登录。而且samba的登录密码可以和本机登录密码不一样。这个你可以在重启机器时看到这个你添加的用户,但是你却用它登陆不了系统,因为没有赋予本机登录密码。

sudo touch /etc/samba/smbpasswd 
sudo smbpasswd -a myname
(如果你直接用系统中的账号,这里myname就是你系统中的账户即可)然后会要求你输入samba帐户的密码,这个密码不是开机登录时候用的,是你要访问WIN共享文件或者WIN共享文件访问你的时候要填的密码,现在要新增网络使用者的帐号:

sudo gedit /etc/samba/smbusers

在新建立的文件内加入下面这一行并保存 代码:

myname= “networkusername”

[如果没有第四步,当你登录时会提示session setup failed: NT_STATUS_LOGON_FAILURE]删除网络使用者的帐号的命令把上面的 -a 改成 -x 即:

sudo smbpasswd -x myname


这样生成的用户,你需要修改到上面valid users上,作为samba的登录用户。

5. 重启samba服务器 :

sudo testparm 验证一下配置参数有没有问题,如果有问题在回去修改
sudo /etc/init.d/samba restart
6. 测试:

smbclient -L //localhost/share 或者 
smbclient -L \\127.0.0.1 -U myname //这时输入的密码就是你刚才设置的samba密码
7. 使用 :

可以到windows下输入ip使用了,在文件夹处输入 "\\" + "Ubuntu机器的ip或主机名" + "\\" + "share";

我的即为:\\162.168.160.11\share(share就是刚才smb.conf中的[share])第一次进入时要输入用户名和密码,这个就是你在第四步中设置的用户名和密码。



点击win7下的映射网络驱动器,把Linux下的/home/gzpl文件夹映射到win下。

参考链接:ubuntu下samba配置

在linux 环境下,在Linux和windows机器之间交换文件可以通过ftp。有三个主要的FTP服务器:vsftpd、proftpd和wu-ftpd。因为安全方面的原因,vsftpd目前已经牢牢的占据了主导地位。从字面上我们就可以理解vsftpd所具备的主要特征—very secure(非常安全之ftp)。资料表明:1、使用ASCII方式下载文件,在1G以太网上的下载速度可以达到86M/s。2、vsftpd可以支持 15000个并发用户的访问。

1、 检查是否安装vsftp包。# rpm –qa | grep vsftpd。如果没有则安装它。

2、 修改配置文件。Vsftpd的配置文件为/etc/vsftpd/vsftpd.conf,如果不打算提供匿名访问的话,需要修改配置文件 /etc/vsftpd/vsftpd.conf的项“anonymous_enable=Yes”为“anonymous_enable=No”。

3、 启用vsftpd服务。#service vsftpd start。

4、 客户端连接访问。可以是专用的ftp客户端工具,也可以使用浏览器。用工具访问vsftpd服务器的速度要比用浏览器快很多。

5、 vsftpd服务器的用户。Vsftpd服务器支持三种类型的拥护:本地用户(拥有系统账号)、虚拟用户(guest)、匿名账号;系统管理员应该根据安全需求来确定vsftpd服务器的用户访问策略。

TFTP服务器

Tftp服务器主要用于远程系统引导或远程备份象CISCO这样的网络设备的配置文件,例如tftp服务器与DHCP、FTP服务器相配合,就可以成为一组linux安装服务器,以利于进行大规模的网络安装linux操作系统。

与上文提及的几种服务器不同,tftp服务器是由超级守护进程xinetd运行的。这使的tftp服务器的配置操作比独立运行守护进程的服务器(如 vsftpd)简单很多。一般情况下,只要修改文件/etc/xinetd.d/tftp,把“disable =yes” 改成 “disable =no”,而后保存重新启动超级守护进程xinetd , # service xinetd restart 。

通过上面的实践,尽管我们已经能够顺利的完成各种文件服务器的搭建和运行,也基本上可以满足基本的用户服务需求,也许在实际的工作中,可能有更多的性能或安全要求。一个明显的例子就是,如果一个用户的服务器使用的磁盘空间没有做任何限制,那么他完全有可能把他从internet下载的连续剧上传到他自己的文件服务器目录,从而把有限空间的硬盘塞满。另外一个就是目录和文件的权限问题,特别是以本地账号(系统账号)访问文件服务器的情况,如果授权不当,将给系统管理带来极大的麻烦。

Linux所倡导的自由精神也同样在这些服务器的配置操作中得以体现。可以通过修改这些服务器的配置文件来满足特定的需求,而且这些修改是非常灵活的。比如vsftpd服务器的配置文件/etc/vsftpd/vsftpd.conf就有很多项目可以修改。

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

上面讲了这么多,大部分是网上转载的。下面我再来看看,嵌入式开发中应用samba还有NFS的一个例子。这也是这个文章最终要讲的东西。

我想很多新手在开发Linux应用程序的时候,希望应用程序是可以在板子上跑的,但是,每次要下载进去跑很麻烦,而且过程很繁琐。那么有什么办法可以实现主机文件和开发版的文件夹共享呢?那就是samba+nfs。

1.首先在按照上面所说的方法配置好Linux host端的samba并保证可用。并且samba 主机Linux上的开发文件夹到win7



2.NFS挂在host Linux的开发文件夹到开发板。这个确定开发版和主机的操作系统是支持并开启了NFS服务的,具体方法参见上面描述的。

sudo mount 192.168.100.ubuntuIP:/home/gzpl /mnt -t nfs -o nolock


这条命令可以放在开发版启动脚本里面,不过必须要在启动网卡之后,否则将会失败。
这样一来便实现了,开发板---〉Linux host〈---win7这样的文件共享模式,这样你就可以在win7上轻松的使用source insight进行代码编辑了,他们的代码是实时同步的。

OVER~~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: