服务器的搭建
1、TFTP服务搭建
1.1 概述
在嵌入式开发中有宿主机和目标机之分:宿主机是执行编译、链接嵌入式软件的计算机;目标机是运行嵌入式软件的硬件平台。TFTP服务器作为工作于宿主机的软件,主要提供对目标机的主要映像文件的下载工作。
1.2 TFTP服务器的安装
利用以下命令就可以看到TFTP服务器已启动,则不用安装
[root@localhost Server]# netstat -a |grep tftp
udp 0 0 *:tftp
若没有安装,在Redhat Enterprise Linux 5的安装光盘中有RPM安装包,挂载光盘后进入到文件夹,找到相应的安装包。
[root@localhost user]# cd /media/
[root@localhost media]# ls
RHEL_5.1 i386 DVD
[root@localhost media]# cd RHEL_5.1\ i386\ DVD/
[root@localhost RHEL_5.1 i386 DVD]# ls
[root@localhost RHEL_5.1 i386 DVD]# cd Server/
[root@localhost Server]# ls tftp*
tftp-0.42-3.1.i386.rpm tftp-server-0.42-3.1.i386.rpm
其中tftp-server-xxx.rpm是tftp服务器的安装文件,另一个是tftp客户端的安装文件。
执行安装命令
[root@localhost Server]# rpm -ivh tftp-server-0.42-3.1.i386.rpm
建立tftp的主工作目录
[root@localhost Server]# mkdir /tftpboot
修改配置文件
[root@localhost Server]# vi /etc/xinetd.d/tftp
主要注意修改的两个地方:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot -c
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
重启服务
[root@localhost Server]# /etc/init.d/xinetd restart
查看是否启动
[root@localhost Server]# netstat -a |grep tftp
udp 0 0 *:tftp *:*
1.3 TFTP客户端的安装
在终端下输入tftp检查客户端是否已经被正确安装。
[root@localhost Server]#tftp
如果提示command not found,则说明tftp客户端没有被正确安装。否则视为已正确安装。
上面已经找到tftp客户端的安装文件:tftp-0.42-3.1.i386.rpm
执行安装命令
[root@localhost Server]# rpm -ivh tftp-0.42-3.1.i386.rpm
1.4 测试TFTP服务
在终端提示符下输入命令:tftp
[root@localhost Server]#tftp 127.0.0.1
输入help命令,依据提示测试文件的上传和下载
2.、NFS服务搭建
2.1 概述
当您想在装有Linux和Windows的计算机之间共享磁盘空间的时候,Samba通常是您可选择的解决方案。当磁盘需要在Linux服务器之间共享时,网络文件系统(NFS)协议就会被调用. 基本的配置是比较简单的,本章将要讲述配置的关键步骤。
NFS(Network File System,网络文件系统)是一种将远程主机上的分区(目录)经网络挂在到本地的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地 分区一样来对远程主机的共享分区(目录)进行操作,类似于windows的共享目录。
2.1.1 NFS下的加载
NFS客户使用网络应用程序帮助中的远程程序呼叫(RPC)加载远程文件系统。如果默认RPC超时导致未能加载,客户端会继续尝试重新加载,直到超 过最大尝试次数。默认的超时时间为10,000分钟,大概是一个星期的时间。困难之处在于,如果NFS服务器无法读取,加载命令将会持续一个星期,直到服务器重新在线。用户可以使用bg选项终止重试,使得主加载命令能够继续执行其他请求。
2.1.2 硬加载与软加载
不论位于后台或者前台,不断进行重试的加载被称作硬加载。网络文件系统(NFS)不断进行重试,以保证数据的一致性。对于软加载,重复的远程程序呼 叫(RPC)失败将导致网络文件系统(NFS)操作失败同时也不能保证数据的一致性。不论加载的失败与否,软加载的优点是操作的速度快。缺点是软加载的选 择意味着你可能使用的是不可靠的NFS服务器,如果是这样的话,最好不要把需要更新的关键数据放在那台服务器上。
2.2 NFS服务的安装
几个重要的NFS后台程序
NFS不是一个独立的程序,它是对一系列互相关联的一起工作的后台程序的总称:
l portmap: The primary daemon upon which all the others rely主要的后台程序,其他程序都要依赖于它, portmap程序管理那些用RPC调用的程序的连接。portmap默认监听TCP端口111,这是一个默认启动的端口。然后portmap程序会分配 一些TCP端口用来传输接下来的数据,这些端口号通常是大于1024的。 你必须在NFS的服务器和客户机上同时运行protmap程序。
l nfs: 开启RPC进程用来共享NFS文件系统,你只需要在NFS服务器上运行这个程序。
l nfslock: 用来允许NFS客户端通过RPC进程锁定在服务器上的文件。你必须在NFS的服务器和客户机上同时运行这个程序
l netfs:允许运行在客户机上的RPC进程mount 服务器上的NFS文件系统。你只需要在NFS客户端上运行这个程序。
查看安装版本
[root@localhost Server]# rpm –qa | grep nfs
nfs-utils-1.0.9-24.el5.i386.rpm
[root@localhost Server]# rpm –qa | grep portmap
portmap-4.0-57
没有安装,从光盘中找到相应的RPM安装包并安装
[root@localhost Server]# rpm -ivh nfs-utils-1.0.9-24.el5.i386.rpm
2.3 NFS服务的配置
/etc/exports是NFS的核心配置文件,它由两列组成。第一列列出了你需要在网络中共享的目录,第二列被分成两部分,第一部分列出了可以访问你的共享目录的网络IP,或者DNS域名,第二部分列出了NFS的操作选项。
#/etc/exports
/data/files *(ro,sync,no_root_squash)
/home 192.168.1.0/24(rw,sync,no_root_squash)
/data/test *.my-site.com(rw,sync,no_root_squash)
/data/database 192.168.1.203/32(rw,sync,no_root_squash)
以上配置对应的信息如下:
l Read-only access to the /data/files directory to all networks
l Read/write access to the /home directory from all servers on the 192.168.1.0 /24 network, which is all addresses from 192.168.1.0 to 192.168.1.255
l Read/write access to the /data/test directory from servers in the my-site.com DNS domain
l Read/write access to the /data/database directory from a single server 192.168.1.203.
几乎在所有情况下,我们都会使用sync选项以确保存储器的文件数据缓存能够自动写入磁盘。
注:选项可以通过man exports查看
2.4 NFS服务的启动
2.4.1 开机自动开启NFS服务
使用chkconfig命令设置nfs服务开机自动启动
[root@localhost server]# chkconfig --level 35 nfs on
[root@localhost server]# chkconfig --level 35 nfslock on
[root@localhost server]# chkconfig --level 35 portmap on
2.4.2 手动开启NFS服务
[root@localhost Server]# /etc/init.d/nfs start
[root@localhost Server]# /etc/init.d/nfslock start
[root@localhost Server]# /etc/init.d/portmap start
最后,使用mount命令来挂载NFS服务器上的共享目录
2.5 测试NFS服务是否正确运行
[root@localhost server]# rpcinfo -p localhost
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100021 1 udp 1024 nlockmgr
100021 3 udp 1024 nlockmgr
100021 4 udp 1024 nlockmgr
100005 1 udp 1042 mountd
100005 1 tcp 2342 mountd
100005 2 udp 1042 mountd
100005 2 tcp 2342 mountd
100005 3 udp 1042 mountd
100005 3 tcp 2342 mountd
2.6 Mount the NFS
2.6.1 开机自动加载
/etc/fstab文件列出了系统启动时需要被自动挂载的所有分区,因此,如果希望自动挂载某个nfs服务器上的文件系统,你需要编辑/etc/fstab文件。例如,使用本地目录/mnt/nfs挂载位于server bigboy(IP:192.168.1.99)上的nfs类型的/data/files目录
#/etc/fstab
#Directory Mount Point Type Options Dump FSCK
192.168.1.100:/data/files /mnt/nfs nfs soft,nfsvers=2 0 0
这个例子仅使用了soft和nfsvers选项,下表列出了其他一些有用的挂载选项
/etc/fstab中的分区在系统启动时会被自动加载,同时也可以使用mount –a 激活。
2.6.2 手动加载
[root@localhost client]# mount -t nfs 192.168.1.99:/shared_dir /mnt/nfs
2.7 取消加载
[root@localhost client]umount /mnt/nfs
3、 Http服务搭建
3.1 概述
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数电脑操作系统中运行,由于其跨平台和安全性[2] 被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等直译器编译到服务器中。
3.2 httpd的安装
在Apache官网下载apache httpd的源码包:httpd-2.2.22.tar.gz
[root@localhost server]# wget \ http://labs.mop.com/apache-mirror//httpd/httpd-2.2.22.tar.gz
解压源码包
[root@localhost server]# tar –zxvf httpd-2.2.22.tar.gz
配置
[root@localhost server]# cd httpd-2.2.22
[root@localhost server]# ./configure --prefix=PREFIX
编译、安装源码包
[root@localhost server]# make && make install
安装完毕
开启服务
[root@localhost server]# PREFIX/bin/apachectl start
3.3 测试http服务是否可用
3.3.1 测试1
打开Firefox 在地址栏输入:http://localhost/
显示it works !
到现在为止,apache httpd 已经可以正确启动了。
3.3.2 测试2 – 自定义html文件
新建文件test.html编辑test.html ,加入一下内容(参考)
<html>
<body>
<center><h1>Test For Apache Httpd</h1></center>
</body>
</html>
将文件复制到PREFIX/ htdocs/ 下参考的命令如下:
打开Firefox ,在地址栏输入http://localhost/test.html ,查看结果。
4、 Vsftp服务搭建
4.1 概述
文件传输协议(FTP)是互联网上服务器之间最常用的一种文件拷贝方式。大多数基于下载的web站点都利用浏览器的内置FTP组件,因此大多数的服务器操作系统都将FTP服务应用程序作为它的软件套件。Linux也不例外。
本章节将向您展示如何利用Fedora中默认的 非常安全FTP守护进程(VSFTPD)软件包 使您的linux服务器成为一个FTP服务器。
4.2 FTP总览
FTP是依靠一对TCP端口来完成工作的。它是按下面解释的2条连接通道来操作的:
FTP控制通道,TCP 21 端口:所有您发出和FTP服务器的响应命令都是通过这条控制通道来传递的,但是任何返回的数据(例如: "ls" 命令 显示文件或目录列表)都将通过数据通道来传递。
FTP 数据通道,TCP 20 端口:这个端口用于客户端和服务器端所有并发数据的传输。
除了这些通道外,还有多个FTP服务种类。
4.3 FTP类型
从网络的观点来看,主要有2中FTP类型:主动FTP和被动FTP。对于主动FTP来说,ftp服务器主动向FTP客户端发起一个数据传输连接。而对于被动FTP来说,这个连接是FTP客户端发起的。下图是相关说明。
从用户管理的角度来看FTP可分为2类:常规FTP,这此种FTP服务器文件传输需要使用通过验证的用户名和密码,匿名FTP提供全体都可 以登陆进行普通的访问.仔细看下面的每个类型.
4.3.1 主动 FTP
主动FTP的事件顺序如下:
1. 服务器的FTP服务端以端口21和你的客户端建立连接。你的命令,例如“ls”和“get”通过这个连接来发送。
2. 一旦客户端通过控制连接发送一个数据请求,服务器端就会和建立一个数据传输连接反户客户端。这个数据传输连接的源端口在服务器端通常为20,而目的端口在客户端上则通常为一个高于1024的端口。
主动ftp可能失败原因在客户端保护来在互联网路由可能由一个地址转换防火墙不会知道许多服务器在这个接收都需要返回. 主动FTP失败的原因可能是客户端由一个地址转换路由与互联网隔离了。防火墙不会知道许多服务器在这个接收都需要返回.
4.3.2 Passive FTP
被动FTP的事件顺序如下:
1. 你的客户商与ftp服务端端口21进行连接,你的那些命令如其中的ls和get是发送在这个连接上.
2. 每次客户端请求数据在这个控制连接,这个客户端初始化这个数据传输到这个服务器,客户端上一个很高的请求端口与服务器很高的目的地端口.
被动连接是服务器从没主动尝试与客户端连接来看,因为客户端总是初始化请求连接,被动ftp更好工作在受保护的防火墙.
由于windows 默认是工作主动Ftp.Linux默认是工作在被动ftp.你要必须在你的ftp服务器容纳这两种不同工作方式.
4.3.3常规FTP服务器
默认情况下,VSFTPD允许用户经过用户名和密码从FTP客户端登陆验证后,复制来他们的文件. VSFTPD也有一些选项允许这些类型的访问只能为某一些组用户,使你能设置授权人员添加新文件.
非匿名的FTP服务器缺点是不利于普通的下载,当发布软件的时候给每个设置不同的linux账号,或者共 享一个用户和密码.使用匿名FTP服务器可以解决这个缺点
4.3.4 匿名FTP
匿名FTP对于需要给远程未知用户交换文件的网站来说,是一个不错的选择.常见用途包括软件下载、更新mp3、上传错误信息给技术支持等。
不同于常规FTP(如果你要登陆还要预先有一个linux用户和密码).匿名服务器只需要你有一个匿名用户名和一个作为密码使用的邮箱地址。一旦登录到vsftpd服务器,你将自动拥有对于匿名ftp目录(VSFTPD的匿名目录是/var/ftp)以及子目录的访问权限.
使用匿名的FTP作为一个远程用户是相当方便的. VSFTPD可以在配置文件配置支持匿名和基于用户的FTP服务器。 你将在下面看到这些内容。
4.4 安装vsftpd服务
查看系统中是否已经安装了vsftpd
[root@localhost root] rpm -qa | grep vsftpd
若没有安装,在Redhat Enterprise Linux 5的安装光盘中有RPM安装包,挂载光盘后进入到文件夹,找到相应的安装包
[root@localhost user]# cd /media/
[root@localhost media]# ls
RHEL_5.1 i386 DVD
[root@localhost media]# cd RHEL_5.1\ i386\ DVD/
[root@localhost RHEL_5.1 i386 DVD]# ls
[root@localhost RHEL_5.1 i386 DVD]# cd Server/
[root@localhost Server]# ls vsftpd*
vsftpd-2.0.5-16.el5_4.1.i386.rpm
安装该rpm包
[root@localhost root] rpm –ivh vsftpd-2.0.5-16.el5_4.1.i386.rpm
启动vsftpd服务
[root@localhost root] service vsftpd start
4.5 测试vsftpd
4.5.1 使用netstat命令测试
[root@bigboy root]# netstat -a | grep ftp
tcp 0 0 *:ftp *:* LISTEN
[root@bigboy root]#
如果vsftpd没有运行,则该netstat命令不会有任何输出。
4.5.2 实例测试
确认vsftpd服务已经启动后,我们可以在任意一台主机的DOS命令窗口里输入"ftp FTPAddres"(用实际的FTP服务器IP地址或者域名代替FTPAddres),注意用户名、密码都是ftp(ftp是匿名用户的映射用户账号),如下所述:
[root@localhost user]# ftp ftpServerAddr
Connected to localhost.localdomain.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:wzz): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
4.6 配置vsftpd服务
在Red Hat Linux里的vsftpd共有3个配置文件,它们分别是:
vsftpd.ftpusers:位于/etc或者/etc/vsftpd目录下。它指定了哪些用户账户不能访问FTP服务器,例如root等
vsftpd.user_list:位于/etc或者/etc/vsftpd目录下。该文件里的用户账户在默认情况下也不能访问FTP服务器,仅当vsftpd .conf配置文件里启用userlist_enable=NO选项时才允许访问。
vsftpd.conf:位于/etc或者/etc/vsftpd目录下。它是一个文本文件,我们可以用Kate、Vi等文本编辑工具对它进行修改,以此来自定义用户登录控制、用户权限控制、超时设置、服务器功能选项、服务器性能选项、服务器响应消息等FTP服务器的配置。
#vi /etc/vsftpd/vsftpd.conf
4.6.1 用户登录控制
l anonymous_enable=YES,允许匿名用户登录。
l no_anon_password=YES,匿名用户登录时不需要输入密码。
l local_enable=YES,允许本地用户登录。
l deny_email_enable=YES,可以创建一个文件保存某些匿名电子邮件的黑名单,以防止这些人使用Dos攻击。
l banned_email_file=/etc/vsftpd.banned_emails,当启用deny_email_enable功能时,所需的电子邮件黑名单保存路径(默认为/etc/vsftpd.banned_emails)。
4.6.2 用户权限控制
l anon_root=xxx 设定匿名用户登录的根目录,即匿名用户登录后,被定位到此目录下。主配置文件中默认无此项,默认值为/var/ftp/。
l write_enable=YES,开启全局上传权限。
l local_umask=022,本地用户的上传文件的umask设为022(系统默认是077,一般都可以改为022)。
l anon_upload_enable=YES,允许匿名用户具有上传权限,很明显,必须启用write_enable=YES,才可以使用此项。同时我们还必须建立一个允许ftp用户可以读写的目录(前面说过,ftp是匿名用户的映射用户账号)。
l anon_mkdir_write_enable=YES,允许匿名用户有创建目录的权利。
l chown_uploads=YES,启用此项,匿名上传文件的属主用户将改为别的用户账户,注意,这里建议不要指定root账号为匿名上传文件的属主用户!
l chown_username=whoever,当启用chown_uploads=YES时,所指定的属主用户账号,此处的whoever自然要用合适的用户账号来代替。
l chroot_list_enable=YES,可以用一个列表限定哪些本地用户只能在自己目录下活动,如果chroot_local_user=YES,那么这个列表里指定的用户是不受限制的。
l chroot_list_file=/etc/vsftpd.chroot_list,如果chroot_local_user=YES,则指定该列表(chroot_local_user)的保存路径(默认是/etc/vsftpd.chroot_list)。
l nopriv_user=ftpsecure,指定一个安全用户账号,让FTP服务器用作完全隔离和没有特权的独立用户。这是vsftpd系统推荐选项。
l async_abor_enable=YES,强烈建议不要启用该选项,否则将可能导致出错!
l ascii_upload_enable=YES;ascii_download_enable=YES,默认情况下服务器会假装接受ASCⅡ模式请求但实际上是忽略这样的请求,启用上述的两个选项可以让服务器真正实现ASCⅡ模式的传输。
注意:启用ascii_download_enable选项会让恶意远程用户们在ASCⅡ模式下用"SIZE/big/file"这样的指令大量消耗FTP服务器的I/O资源。这些ASCⅡ模式的设置选项分成上传和下载两个,这样我们就可以允许ASCⅡ模式的上传(可以防止上传脚本等恶意文件而导致崩溃),而不会遭受拒绝服务攻击的危险。
4.6.3 用户连接和超时选项
l idle_session_timeout=600,可以设定默认的空闲超时时间,用户超过这段时间不动作将被服务器踢出。
l data_connection_timeout=120,设定默认的数据连接超时时间。
4.6.4 服务器日志和欢迎信息
l dirmessage_enable=YES,允许为目录配置显示信息,显示每个目录下面的message_file文件的内容。
l ftpd_banner=Welcome to blah FTP service,可以自定义FTP用户登录到服务器所看到的欢迎信息。
l xferlog_enable=YES,启用记录上传/下载活动日志功能。
l xferlog_file=/var/log/vsftpd.log,可以自定义日志文件的保存路径和文件名,默认是/var/log/vsftpd.log。
配置后之后记得把/var/ftp/pub权限设置好哦!不然不能上传。
4.6.5 一个简单的配置实例
以下是一个简单地vsfptd配置实例,允许匿名用户登陆,上传及新建权限
anonymous_enable=YES
no_anon_password=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
idle_session_timeout=600
data_connection_timeout=120
5、 Samba服务搭建
5.1 简介
Samba 是一个允许将linux 的文件以及其它资源(例如打印机)共享给Windows 的软件套装。
5.2 安装Samba服务
大多数RedHat和Fedora linux软件都是采用RPM格式的。下载和安装RPM软件包并不难,可以参考第6章"安装Linux软件"(那里涉及到具体的操作细节)
Samba由一系列的RPM软件包组成,可以在Fedora安装CD中找到。这些文件包括
· samba
· samba-common
· perl-Convert-ASN1
· samba-client
· samba-swat
当你搜索这些文件的时候,记住这些RPM软件包的名字通常带有一系列的数字,比如samba-client-3.0.0-15.i386
5.3 启动Samba
l 你可以使用chkconfig命令使Samba在系统启动时启动
[root@bigboy tmp]# chkconfig smb on
l 你也可以在启动后运行如下的smb初始化脚本来启动/停止/重启Samba
[root@bigboy tmp]# service smb start
[root@bigboy tmp]# service smb stop
[root@bigboy tmp]# service smb restart
注意事项:和其它Linux软件不同的是,在修改Samba配置文件后无需重启Samba,因为Samba当每次客户端请求时都读取配置文件。
· 你可以使用pgrep命令来测试smb进程是否在运行,然后你将得到一个进程号
[root@bigboy tmp]# pgrep smb
5.4 配置Samba服务
/etc/samba/smb.conf是samba的主要配置文件,也是你需要修改的主要配置文件,它分为五部分如表10-1所示
表10-1 文件格式 - smb.conf
|
小节 |
描述 |
|
[global] |
全局配置参数 |
|
[printers] |
关于打印机的配置 |
|
[homes] |
用户登录方式 |
|
[netlogon] |
用户登录脚本(默认不配置) |
|
[profile] |
域名登陆信息,包括收藏夹和桌面图标(默认不配置) |
你可以手动修改配置文件或者使用SWAT软件的web界面修改。
5.5 /etc/samba/smb.conf文件
Samba的主配置文件: /etc/samba/smb.conf,内容如下:
注释:
#注释描述
;设置选项进行注释
testparm:修改配置后,检测是否有语法错误
5.5.1 Samba配置文件结构
l [global] 设置全局环境选项
l [homes] 设置用户宿主目录共享
l [printers] 设置打印机共享
l [sharefiles] 设置文件共享
5.5.2 global段:
l workgroup=指定工作组或域,与Windows工作组一致
l netBios name=smb-server 出现在网上邻居中主机名
l server string=描述信息,服务器简要描述
l security=指定Samba服务器的安全模式
share 不需要用户名和密码,无权限验证
user 缺省,推荐,由Linux Samba服务器做验证
server 第三方主机验证
domain 第三方主机验证(第三方必须是Windows域控制器DC)
l hosts allow=限定主机访问。服务基本限定:哪些主机可以访问,缺省所有人都可以访问。如果设置超过一个,用空格、TAB或逗号分隔。
hosts allow=127. 192.168.1.
hosts deny=
如果在配置文件中allow和deny都出现,samba规定允许优先
l log file =指定日志文件存放位置=/var/log/samba/%m.log,默认在/var/samba目录下,Samba服务器会为每一个连接主机建立一个单独的日志文件。Samba服务器会将%m转换为连接主机的NetBios名
l max log size=指定日志文件大小,不指定表示无限制
5.6 Samba服务的共享模式
security=share
Comment=Public Share
path=/home/samba
public=yes
writable=yes
write list=@staff
通过windows访问Linux Samba:
net use */delete /y
net use
5.7用户模式
l homes段:共享用户宿主目录
l security=user
l comment=Home Directories
l browseable=no user 对无权限用户隐藏目录
l writable=yes /no 可写或只读
l valid users:描写有效用户
浙公网安备 33010602011771号