Linux -- Web服务器配置之用户认证;Perl语言解释器的安装

一、用户认证

用户认证在网络安全中是非常重要的技术之一,它是保护网络系统资源的第一道防线。用户认证控制着所有登录并检查访问用户的合法性,其目标是仅让合法用户以合法的权限访问网络系统的资源。当用户第一次访问了启用用户认证目录下的任何文件,浏览器会显示一个对话框,要求输入正确的登录用户名和口令进行用户身份的确认。若是合法用户,则显示所访问的文件内容。此后访问该目录的每个文件时,浏览器会自动送出用户名和密码,不用再输入了,直到关闭浏览器为止。用户认证功能起到了一个屏障的作用,限制非授权用户非法访问一些私有的内容。下面通过一个实际的例子说明在Apache中启用用户认证功能的方法。

假设有一个名为mysecret的虚拟目录,其对应的物理路径是/usr/local/mysecret,现需要对其启用用户认证功能,只允许用户名为linden和tom的用户访问。

1.建立口令文件

要实现用户认证功能,首先要建立保存用户名和口令的文件。Apache自带的htpasswd命令提供了建立和更新存储用户名、密码的文本文件的功能。需要注意的是,这个文件必须放在不能被网络访问的位置,以避免被下载。本例将口令文件放在/etc/httpd/目录下,文件名为mysecretpwd。使用以下命令建立口令文件。

htpasswd -c /etc/httpd/mysecretpwd linden

命令执行结果如图7-9所示,htpasswd命令会提示为linden用户输入口令。

-c选项表示无论口令文件是否已经存在,都会重新写入文件并删去原有内容。所以在添加第2个用户到口令文件时,就不需要使用-c选项了。

htpasswd /etc/httpd/mysecretpwd tom

2.建立虚拟目录并配置用户认证

在Apache的主配置文件httpd.conf中加入以下语句建立虚拟目录并配置用户认证。

Alias /mysecret "/usr/local/mysecret"
<Directory "/usr/local/mysecret">
AuthType Basic
AuthName "This is a private directory. Please Login:"
AuthUserFile /etc/httpd/mysecretpwd
Require user linden tom
</Directory>

(1)设置认证类型

AuthType Basic

AuthType选项定义了对用户实施认证的类型,最常用的是由mod_auth提供的Basic。

(2)设置认证领域内容

AuthName "This is a private directory. Please Login:"

AuthName选项定义了Web浏览器显示输入用户/密码对话框时的领域内容。

(3)设置口令文件的路径

AuthUserFile /etc/httpd/mysecretpwd

AuthUserFile选项定义了口令文件的路径,即使用htpasswd建立的口令文件。

(4)设置允许访问的用户

Require user linden tom

Require user选项定义了允许哪些用户访问,各用户之间用空格分开。

3.测试用户认证

测试用户认证的具体步骤如下。

在服务器中使用命令"/etc/init.d/httpd restart"重启Web服务。

在客户端的Web浏览器中访问这个虚拟目录,这时Web浏览器会弹出输入用户名和口令的对话框,如图7-10所示。

输入正确的用户名和口令,就能访问该目录了,如图7-11所示。

如果用户名和口令不正确,则出现"401 Authorization Required"的错误信息,如图7-12所示。

测试用户认证时最好在虚拟目录中建立一个名为index.html的文件,否则输入正确的用户名和口令后,由于虚拟目录既没有设置默认文档,也没有设置允许目录浏览,所以会出现"403 Forbidden"的错误信息。

二、CGI运行环境的配置

CGI是通用网关接口Common Gateway Interface的缩写,用于连接网页和Web服务器应用程序的接口。众所周知,HTML语言的功能是比较贫乏的,难以完成诸如访问数据库等一类的操作,而实际的情况则是经常需要先对数据库进行操作(比如文件检索系统),然后把访问的结果动态地显示在网页上。诸如此类的需求只用HTML是无法做到的,所以CGI便应运而生。CGI是在Web服务器运行的一个可执行程序,由网页的一个超链接激活进行调用,并对该程序的返回结果进行处理,显示在客户端的Web浏览器上。用CGI程序可以实现处理网页的表单处理、数据库查询、发送电子邮件等工作。CGI使网页变得不再是静态的,而是交互式的。Web服务器的CGI程序需要有用户调用才会执行,下面是Web浏览器、Web服务器和CGI程序之间的一个工作流程。

(1)用户通过Web浏览器访问CGI程序。

(2)Web服务器接收用户请求并交给CGI程序处理。

(3)CGI程序执行基于输入数据的操作,包括查询数据库、计算数值或调用系统中其他程序。

(4)CGI程序产生某种Web服务器能理解的输出结果。

(5)Web服务器接收来自CGI程序的输出并且把它传回Web浏览器。

Perl语言解释器的安装

CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量,如Perl、C、C++、Java。其中,Perl易编译调试、移植性颇强,可以说在众多的CGI编程语言中是最好的、最容易上手的语言。Perl几乎成了CGI的标准或代言词。每当人们提到CGI的时候,必然会想到Perl。Perl是Practical Extraction and Reporting Language实用摘录与报告语言的缩写,它自1987年初次登台亮相以来,它的用户数一直急剧膨胀。Perl不是由某个公司大力推广而得到发展的,正如Java那样,Perl全凭自身的优势来发展。从最初被当作一种在跨平台环境中书写可移植工具的高级语言开始,Perl就已经被广泛地认为是一种工业级的强大工具。Perl特别适合系统管理和Web编程。Perl实际上已经被所有Linux(包括UNIX)捆绑在一起作为标准部件发布了,如今的Perl语言已经被移植到除了Linux之外的多种操作平台上。

默认情况下,Red Hat Enterprise Linux安装程序会将Perl语言解释器安装在系统上,读者可使用下面的命令检查系统是否已经安装了Perl解释器或查看已经安装了何种版本。

rpm -q perl

命令执行结果如图7-17所示,这表示Perl解释器已安装,它的版本为5.8.8-10。

如果系统还没有安装Perl解释器,应将Red Hat Enterprise Linux 5第1张安装盘放入光驱,加载光驱后在光盘的Server目录下找到Perl解释器的RPM安装包文件perl-5.8.8-10.i386.rpm,使用下面命令安装Perl解释器。

rpm -ivh /mnt/Server/ perl-5.8.8-10.i386.rpm

httpd.conf文件的配置

1.设置存放CGI文件的目录权限

设置存放CGI文件的目录权限可以告诉Apache允许CGI程序在哪些目录下运行。例如主目录需要执行的CGI文件,应在主目录权限设置的Options指令中添加一个"ExecCGI"选项,如图7-18所示。

2.标明CGI程序的文件类型

找到"#AddHandler cgi-script .cgi"语句,删除前面的"#"即可,该语句告诉Apache扩展名为".cgi"的文件是CGI程序。如果同时想运行扩展名为.pl的文件可以在语句后面添加"pl",如图7-19所示。

测试CGI运行环境

测试CGI运行环境的步骤如下。

在CGI文件存放的目录(如/var/www/html/)中建立一个名为test.cgi的文件,该文件的内容如下。

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello World!\n";

执行命令"chmod +x /var/www/html/test.cgi",为test.cgi文件添加运行权限。

在客户端的浏览器访问"http://Linux服务器的IP地址/test.cgi",如果出现如图7-20所示的"Hello World!",则代表CGI运行环境配置成功。

参考:http://book.51cto.com/art/200811/96897.htm

http://book.51cto.com/art/200811/96918.htm

时间: 2024-08-29 16:50:05

Linux -- Web服务器配置之用户认证;Perl语言解释器的安装的相关文章

Linux -- Web服务器配置及PHP解释器的安装;JSP运行环境的配置(Tomcat安装)

一.PHP运行环境的配置 PHP是超级文本预处理语言PHP Hypertext Preprocessor的嵌套缩写.PHP是一种HTML内嵌式的语言,PHP与微软公司的ASP颇有几分相似,都是一种在服务器端执行的"嵌入HTML文档的脚本语言",语言的风格类似于C语言,现在被很多的网站编程人员广泛运用.PHP独特的语法混合了C.Java.Perl以及PHP自创新的语法.它可以比CGI或者Perl更快速地执行动态网页.用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML

Linux基础入门之用户认证与加密

1:密码文件/etc/shadow cat /etc/shadow  下图红色画线部分为加密后的密码 2:加密方式 对称加密:加密和解密使用同一个密钥: 非对称加密:加密和解密使用一对密钥:公钥-公开:私钥-保密: CA:数字证书颁发机构 PKI:公钥基础设施 单向加密:提取数据的指纹,唯一特征码.1:定长输出:2:不可逆:3:雪崩效应-任何微小的改变,将导致整个加密结果完全不一样 Linux密码常用的加密算法与密文位数:            $1:MD5 ,(22位)            

Linux -- Web服务器配置及应用

WEB服务器是互联网最基本的服务之一,几乎所有的公司都拥有自己的主页,以方便客户浏览和查看公司信息,同时,交互式的Web还可以提供与客户之间的信息交互,提高公司的影响及业务能力.本节主要介绍Linux下Web服务器的基本原理及其配置方法. 本章第1节主要介绍Web服务器的基本原理,介绍客户端和服务器是如何进行交互的,当前Internet中主流的Web服务器应用软件及其各自的特点,最后,对Linux下应用最为广泛的Web服务器软件APACHE作了详细介绍. 本章第2节主要介绍如何配置Linux下的

Web.py session用户认证

调试一个用session来认证用户的程序 大概是这个样子 基本上可以当作webpy session认证的示例程序了 #!/usr/bin/env python #coding=utf-8 import web import time urls = ( '/', 'index', '/xml', 'pushxml', '/login', 'login', '/logout', 'logout', ) render = web.template.render('templates/') web.co

Linux -- Web服务器配置之整合Apache和Tomcat

一.整合Apache和Tomcat 虽然Tomcat可以独立作为Web服务器运行,但Tomcat的Web功能远没有Apache强大,所以在实际应用中是通过mod_jk连接器(Connectors)将Apache和Tomcat整合在一起提供服务的,Apache处理静态页面的请求,Tomcat则用于处理Servlet和JSP程序. 1.下载mod_jk 目前mod_jk连接器最新的稳定版本是1.2.23,使用Web浏览器访问http://www.apache.org/dist/tomcat/tomc

MEAN全栈开发 之 用户认证篇

作者:Soaring_Tiger http://blog.csdn.net/Soaring_Tiger/article/details/51418209 本篇将覆盖以下内容(阅读本文需要有一定Express.Mongoose基础): 在 MEAN全栈开发中添加用户认证 在Express中使用Passport模块管理用户认证 在Exrpess中生成JSON Web Tokens(JWT) 实现用户注册与登录 在Angular当中使用 local storage管理用户session 1.1 在ME

翻译:WebApi 认证--用户认证Oauth解析

The Web API v2用户认证模板提供了流行的应用用户认证场景,如.使用本地帐号的用户名密码认账 (包括创建用户.设置和修改密码)以及使用第三方的认证方式,如facebook,google等等– 在本地中包含了外部帐号的连接 所有的这些均通过使用一个OAuth2认证服务进行. To make all that happen the template combines quite a bit of new stuff together: OWIN, Katana authentication

nginx服务做用户认证和基于域名的虚拟主机

实验一.用nginx怎么实现用户访问时的认证 一.目标        通过调整Nginx服务端配置,实现以下目标: 访问Web页面需要进行用户认证 用户名为:tom,密码为:123456 二.方案         通过Nginx实现Web页面的认证,需要修改Nginx配置文件,在配置文件中添加auth语句实现用户认证.    最后使用htpasswd命令创建用户及密码即可,服务端:192.168.4.102,客户端:192.168.4.101 三.实施步骤(nginx服务安装见我的"搭建ngin

nginx之用户认证

1,需求访问Web页面需要进行用户认证用户名为:jluocc,密码为:123456 2,配置nginx[[email protected] ~]# vim /usr/local/nginx/conf/nginx.confserver {listen 80;server_name localhost;auth_basic "Input Password:"; //认证提示符auth_basic_user_file "/usr/local/nginx/pass"; //