Linux学习笔记:REHL AS4的上网配置,Http服务安装及配置,ftp服务的安装及配置
Linux下上网.
其实在linux下上网和在windows下上网一样简单,常用的方式有EthernetConnection,XDSL Connection和Wireless Connection.
在REHL AS4下,通过图形界面,可以很轻松的配置.在应用程序->系统工具->网络设备控制中可以调出设置面板.点添加新设备,可以根据自己的网络情况来选择以何种方式.如下图:
因为我自己是小区宽带接入方式,因此我选择了以太网连接.像学校教育网内学生宿舍那种使用固定内网IP的,也应该选用这种,如果是自动获取IP的,也是这个,只是在后来的IP设置中选dhcp自动获得.
如果是家庭的ADSL拨号上网,则选用XDSL链接方式,无线网卡上网则选择无线连接,这里就不赘述了.
因为我是在VMW里用rehl上网,因此我还需要安装些针对虚拟机的特殊服务.我VMW网络选择的桥接模式(bridge),因此还需要安装VMware网络服务接口和VMware桥接网络服务,另外还要开启dhcp服务.这些在安装VMW时应该就都会安装上,不过因为我使用的是绿色版本,所以需要手动来安装和启动,稍微麻烦点.
这些都配好后,在以太网设备属性选项卡里根据自己的情况,勾选自动获取IP和DNS或静态输入.
在保证你的宿主机能正常上网的前提下,现在你的虚拟机下的linux应该也能上网了.测试一下:
在terminal中输入ifconfig命令可以查看当前的网络状况.ping 网关来测试与路由器是否连接正常.最后ping 外网地址,能通的话,就算大功告成了.
Http服务和apache
作为服务器OS,提供http服务是再经常不过的一项需求,在windows2000/2003中,我们最经常使用IIS作为web server来提供http服务.在linux下可没有IIS,这里最广泛使用的web server是apache,虽然我最终会选用lighthttpd来作为我的web server,但是在这之前要先了解下apache.
rhel默认安装包含了apache,如果你不确定,可以用rpm -q httpd来查询一下,如果已经安装了,将返回版本号,比如在rhel AS4下,输入后将返回:httpd-2.0.52-25.ent.如果没有安装的话,你可以在Applications->System Settings->Add/Remove Applications中,把Web Server(万维网服务)前的勾给选上,再点更新即可.如果提示插入安装盘,按提示把盘放入光驱即可.或者直接去apache的网站下载最新的版本,解压后,用rpm -ivh来安装也可以.
安装了apache后,需要在启动http服务,rehl一样提供了非常简单直观的图形操作界面,可以在Applications->System Settings->Service中选中httpd,然后启动它.或者直接输入命令service httpd start.
服务启动后,就已经可以访问了,打开浏览器,在里面输入http://localhost/,就可以看到默认的redhat的页面了,如下所示:
这个时候,如果是在一个局域网内,就可以用其他的机器输入IP来直接访问该页面了.
接下来是配置问题,rhel提供了一个http服务的配置工具,在Applications->System Settings->Server Settings->HTTP可以调出该配置器,使用非常的简单.如果有过配置IIS的经验,配置这个也不难,但是里面没有配置虚拟目录的功能(不会是我没找到吧?),这里我介绍下如何配置虚拟目录.
在linux中,软件大量的依赖配置文件,不光是静态信息,功能和模块也大量使用配置文件动态生成(保存后常常需要重启服务).这对于软件的扩展非常好,如果要增加第三方的组件,可以很容易实现,其本身的配置也可以相当的灵活.这些年在.NET项目里,配置文件也开始大量的被使用,与早期的开发方式相比,这种方式优点太多,低耦合,易维护,灵活等,像CS,castle,DNN都是典型.
继续回到apache的配置中来,上面说到配置文件,虚拟目录的建立也需要通过修改配置文件实现.
首先找到配置文件并编辑
vi /etc/httpd/conf/httpd.conf
在apache中添加虚拟目录是通过"别名(alias)"来实现的,具体如下:
比如我要在根目录下添加一个虚拟目录User,指向一个我自己的文件价/UserData/wiseman,那么我该这么写
Alias /User/ "/UserData/wiseman/"
把上面这句写入到配置文件当中.注意这里路径的"/"号,两个路径的"/"号应该保持一致,即,前面带的话,后面也带,不带,则都不带.在访问的时候,如果配置的带了"/"号,那么输入地址必须要写,否则将返回404错误,如果不带"/"号的话,则输入地址无论带不带"/"号,都能正确显示.即是:
假如你配置了http://localhost/user/,那么你只能通过http://localhost/user/来访问,假如你输入了http://localhost/user,将返回404错误.如果你配置的是http://localhost/user,那么无论是http://localhost/user还是http://localhost/user/都能正确显示.
添加了别名,如果想要用户能够访问,还需要添加目录权限.
在conf文件底部填写如下的内容
<Directory "/UserData/wiseman">
Options Indexes Includes FollowSymLinks
AllowOverride None
Allow from all
Order allow,deny
</Directory>
AllowOverride None保证所有用户都可以访问该目录下页面.
Allow from all 保证所有来源都可以显示该目录下内容,这个部分可以用来做防盗链,from 后面填写自己的网站地址即可.
Order allow,deny 表示默认情况是不允许任何网站的访问,然后不在allow范围的网站和在deny范围的网站将被禁止访问.
这里allow所有网站,deny没有,因此最后得出允许所有网站访问的结论.
关于allow,deny和order指令,可以参看这篇介绍:http://man.chinaunix.net/newsoft/ApacheManual/mod/mod_access.html
其他的参数含义如下:
Option:定义在目录内所能执行的操作。
None:表示只能浏览,
FollowSymLinks:允许页面连接到别处,
ExecCGI:允许执行CGI,
MultiViews:允许看动画或是听音乐之类的操作,
Indexes:允许服务器返回目录的格式化列表,
Includes:允许使用SSI。这些设置可以复选。
All:则可以做任何事,但不包括MultiViews。
AllowOverride:加None参数表示任何人都可以浏览该目录下的文件。
另外的参数有:FileInfo、AuthConfig、Limit。
修改完毕后,用:wq退出vi,然后service httpd restart
再通过http://localhost/User/看,已经可以访问了.
FTP服务和vsftp
最后是ftp的配置了.在win2003下,我最常使用的ftp服务端软件是serverU,功能确实强大,不过有一些安全漏洞,可以通过配置权限解决,这里不多说明了.
可惜的是,在linux下没有serverU,不过一样也有其他的ftp软件,这里面最受推崇的就是vsftp(very safe ftp)了,听名字就知道是个非常安全的ftp.ftp的配置过程比较的复杂,也没有任何配置工具,全部要手工输命令操作,下面介绍下简单的流程.
首先,同样是检查vsftp的安装.在rhel AS4里,默认安装时,是没有安装vsftp的,如果当时安装的时候没有勾选的话,那么就需要先安装.检查自己的机子是否安装的命令是rpm -qa |grep vsftpd,如果有安装,将返回版本号,在AS4的光盘中带的vsftp版本是2.0.X.
与安装apache一样,你可以通过rehl图形界面里的添加/删除工具添加ftp服务,然后按提示插入光盘,最后安装vsftp.或者在光盘中找到rpm包,通过rpm ivh安装.在安装完毕后,记得输入rpm -qa |grep vsftpd来确定已经安装成功(如下图).
接下来,service vsftpd start
启动ftp服务,然后ftp localhost(或者IP),这时已经可以连上ftp了,提示输入用户名和密码.这个时候,如果你输入root和口令,将提示login failed,如果你有建立其他的系统用户,输入用户名和相应的口令就能登录成功.
vsftp默认的配置是与linux系统共用用户库的,即是,操作系统的用户可以登录ftp,默认的列表是其用户目录(/Home/用户名),在/etc/vsftpd/vsftpd.conf中可以修改其权限,匿名用户的设置也在那里.
不过我想要的并不是这种ftp服务,我希望像serverU一样,可以建立用户,这个用户与OS登录的用户没有任何关系,其可以管理的文件夹位置也可以自己定义.这种用户被称为虚拟用户.在linux里,要实现上面的功能一般有两种方法.第一种是建立用户,然后去掉shell登录权限,然后设定文件路径.另一种是建立用户库,里面包含若干用户,映射到一个系统用户上,然后设定文件路径.
我使用的是第二种方法.
首先建立虚拟用户vUser,这个用户不用来ftp登录,作为虚拟用户存在,每一个虚拟用户可以看作一个用户组.
useradd -d /ftp地址 vUser //建立用户组,并指定该组用户的列表文件夹
chmod 700 /ftp地址 //把该文件夹设置为仅该组用户可以操作.
然后是具体的过程
1)构造口令文件ftpUserInfo.txt
按照奇数行为用户名,偶数行为密码的方式创建该文件.如,文件内容如下:
wiseman
12345
wiseman2
54321
表示有两个用户,wiseman的密码是12345,wiseman2的密码是54321,这两个用户最终用于ftp登录.
建立文件可以用cat或vi命令,如果在图形界面下,也可以直接创建.
这里有个问题,我在创建的时候,在后面的build过程中出现过如下出错提示:
db_load: unexpected end of input data or key/data pair
db_load: odd number of key/data pairs
原因大概是在ftpUserInfo.txt最后需要再加个回车,加回车后,就没问题了,在图形界面的文本编辑器保存默认也会添加一个回车,所以,如果是在图形界面的文本编辑器下直接生成的,不会出现该错误.
2)生成加密用户库
db_load -T -t hash -f ~/ftpUserInfo.txt /etc/vsftpd_login.db
chmod 600 /etc/vsftpd_login.db //修改加密用户库文件的权限
这部分很容易出问题,首先是hash那个参数,这指定的是用hash加密(也就是md5),使用其他的,或没该参数,最后登录会出错.
然后是db_load指令,似乎很多版本的linux都没装这个命令,至少rhel AS4默认就没装,网上很多朋友也说没有装.如果指定该指令出现"没有该指令"的提示,说明肯定没装了.
先用rpm -qa|grep db4查下自己的系统装了什么.在rhel AS4里,默认装了个db4-4.XXX,实际上,该指令还需要db4-devel-xxx,db4-utils-xxx两个文件.在rhel 4的安装盘里,这几个文件都有,具体哪张盘不记得了,如果有问题的,可以自己去rpm包里找找.
安装完后,在执行db_load命令就没问题了.
3)增加vsftp的pam验证.
先建个文件
vi /etc/pam.d/ftp.vu
然后再里面加入两句命令,对ftp的登录进行处理.
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
4)修改vsftp的配置文件
vi /etc/vsftpd/vsftpd.conf
主要修改下面的内容
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES //这里的guest用户就是指的上面用户库里的用户
guest_username=vUser //与为ftp建立的用户名要一致
ftpd_banner=这里填写FTP的欢迎信息
pam_service_name=ftp.vu //这里指定PAM的配置文件.
保存退出后,配置就算是结束了
先重启服务service vsftpd restart
这个时候,ftp localhost之后,返回的信息将多一行KERBEROS_V4 rejected as an authentication type Name 这样的信息,输入在ftp用户库里的用户名和密码,就可以成功登陆了.
PS:这之后,如果遇上文件不能列表,文件不能下载,不能上传等问题,请注意文件的权限,这个可以耐心点慢慢测试.