⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000011.htm

📁 一份很好的linux入门资料
💻 HTM
📖 第 1 页 / 共 4 页
字号:
&nbsp;&nbsp;现在我们来看看身份控制功能。身份控制功能其实很简单,就是对某个目录的存取权&nbsp;<BR>限加上限制,最常用的功能是加上密码,要求用户必须输入正确的用户名和密码才能进&nbsp;<BR>入。作用上,它和前面的地址控制类似,只是这一次限制的是用户的身份。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;要设置某个目录的存取权限,首先必须允许身份认证,这是在对应的directory段落里&nbsp;<BR>面设置的,例如,有个目录/home/public,要使用身份认证,需要使用AuthType进行定&nbsp;<BR>义:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;Directory&nbsp;&quot;/home/public&quot;&gt;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AuthType&nbsp;Basic&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AuthName&nbsp;&quot;Give&nbsp;Your&nbsp;Name&nbsp;and&nbsp;Passwd&quot;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;Require&nbsp;valid-user&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;order&nbsp;allow,deny&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;allow&nbsp;from&nbsp;all&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AuthGroupFile&nbsp;/etc/httpd/conf/groups&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AuthUserFile&nbsp;/etc/httpd/conf/users&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;/Directory&gt;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;这里面涉及到了几个新的命令:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AuthType&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;使用的身份认证形式,就我所知道的,实际上只能使用Basic和Digest两个选项,而且&nbsp;<BR>通常总是使用Basic。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AuthName&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;当进入一个需要身份认证的目录的时候,将弹出一个对话框让你输入用户名和口令,&nbsp;<BR>AuthName是对话框的提示信息。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AuthGroupFile&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AuthUserFile&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;这两个选项用来设置身份认证的用户名文件。注意Apache并不使用机器的真实账号,&nbsp;<BR>相反你必须用htpasswd命令来建立WWW用户,格式是:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;htpasswd&nbsp;[-c]&nbsp;文件名&nbsp;用户名&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;-c选项创建一个新的www用户名字文件,文件名是容纳www用户名和口令的文件名字,&nbsp;<BR>例如&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;htpasswd&nbsp;–c&nbsp;/etc/httpd/conf/users&nbsp;user1将创建/etc/httpd/conf/users文件,并&nbsp;<BR>且加入user1用户,htpasswd程序还同时提示你输入用户口令。htpasswd&nbsp;/etc/httpd/c&nbsp;<BR>onf/users&nbsp;user2将继续加入user2。以此类推。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;至于www的group文件就是一个普通的文本文件,每行格式是:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;组名:用户1&nbsp;&nbsp;用户2,....&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;例如:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;group1:user1&nbsp;&nbsp;user2&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;至于两个Auth命令的用法则可以看看刚才的那个例子,就是直接给出文件名。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;Require&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;这个选项设定允许哪些用户进入,Require&nbsp;user&nbsp;[用户列表]将允许某些用户进入,例&nbsp;<BR>如Require&nbsp;user&nbsp;user1&nbsp;user2&nbsp;将允许user1和user2访问,而Require&nbsp;group&nbsp;[组列表]将&nbsp;<BR>允许某些组访问。另外有两个特殊的选项就是Require&nbsp;valid-user和Require&nbsp;valid-gr&nbsp;<BR>oup,分别表示只允许在www用户/组文件中存在的用户和组访问。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;如上面说的那样设置了httpd.conf并且建立了users和groups文件,然后重新启动Apa&nbsp;<BR>che,现在就可以访问这个站点了。当你用IE或者Netscape&nbsp;访问的时候,会弹出一个对&nbsp;<BR>话窗口让你输入用户名和口令:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;图6.1&nbsp;身份认证&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;这是进行用户身份认证的标准方法。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;一般来说,对于普通的站点,这样的处理方式就已经足够,问题是,在虚拟主机的情&nbsp;<BR>况下,允许每个虚拟主机的Web管理者修改你的httpd.conf显然是无法想象的。还记得我&nbsp;<BR>们前面提到的AccessFileName和AllowOverride选项吗?利用AccessFileName选项可以定&nbsp;<BR>义缺省的存取控制文件的名字,一般是.htaccess。然后,你需要允许每个目录的自身设&nbsp;<BR>定功能:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AllowOverride&nbsp;AuthConfig&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;这样的行将允许用户用自己的有关Auth的定义去覆盖缺省的定义,例如,我们可以把&nbsp;<BR>上面的设置改成:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;Directory&nbsp;&quot;/home/public&quot;&gt;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;order&nbsp;allow,deny&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;allow&nbsp;from&nbsp;all&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AllowOverride&nbsp;AuthConfig&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;/Directory&gt;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;然后在/home/public这个目录下面建立一个文件.htaccess,内容是&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AuthType&nbsp;Basic&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AuthName&nbsp;&quot;Give&nbsp;Your&nbsp;Name&nbsp;and&nbsp;Passwd&quot;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;Require&nbsp;valid-user&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AuthGroupFile&nbsp;/etc/httpd/conf/groups&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AuthUserFile&nbsp;/etc/httpd/conf/users&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;然后同样建立users和groups文件,当Apache准备访问这个目录的时候,会自动使用.&nbsp;<BR>htaccess里面定义的信息去代替本来应该在httpd.conf里面设置的内容。当然,这种代&nbsp;<BR>替只是对于这个目录有效。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;Limit和Order,Allow/Deny也可以在.htaccess文件里面设置。当然,AccessFileNam&nbsp;<BR>e则设置这个文件的缺省名字。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;6.3.5&nbsp;重新编译Apache和附加产品&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;Apache的功能已经十分强大了,但是很多人仍然认为它的功能还不够强大,于是为它&nbsp;<BR>开发了许许多多的功能,这些功能通常都以源代码的形式提供。另外,由于某些原因,&nbsp;<BR>Apache的一些特殊功能(比如我们马上要介绍的SuEXEC)在缺省设置里面是不包括的。&nbsp;<BR>如果你只是要自己建立一个简单的Web站点,那可能并不需要这些功能,但是很多人总希&nbsp;<BR>望自己的站点功能更强大,页面更美观。无论哪一种情况,你都很可能需要重新编译Ap&nbsp;<BR>ache或者某些产品。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;编译Apache是一件相当恶心的事情,因为有太多的东西需要设定,你可以安装apache&nbsp;<BR>的源代码,将它展开后进入到里面,执行./configure&nbsp;–help可以显示configure命令的&nbsp;<BR>选项,你看看需要设置多少东西。其中最主要的是设置允许使用哪些模块或者DSO,以及&nbsp;<BR>缺省的系统目录。要在命令行输入如此之长的配置命令是不现实的,你肯定需要建立一&nbsp;<BR>个脚本文件来处理这件事情,例如,下面是我的配置文件:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;./configure&nbsp;--enable-module=ssl&nbsp;--enable-module=proxy&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--enable-module=alias&nbsp;--enable-module=so&nbsp;--enable-module=auth_db&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--enable-module=vhost_alias&nbsp;--with-perl=/usr/bin/perl&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;--prefix=/usr&nbsp;--exec-prefix=/usr&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--bindir=/usr/bin&nbsp;--sbindir=/usr/sbin&nbsp;--libexecdir=/usr/libexec&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--mandir=/usr/man&nbsp;--sysconfdir=/etc/httpd/conf&nbsp;--datadir=/home/httpd/html&nbsp;&nbsp;<BR>\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--includedir=/usr/include/apache&nbsp;--localstatedir=/var/state/httpd&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--runtimedir=/var/log&nbsp;--logfiledir=/var/log&nbsp;--proxycachedir=/var/cache&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--enable-suexec&nbsp;--suexec-caller=nobody&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--suexec-logfile=/var/log/httpd/suexec.log&nbsp;--suexec-userdir=cgi-bin&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--suexec-uidmin=10&nbsp;--suexec-gidmin=10&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--suexec-safepath=/usr/bin:/bin:/usr/local/bin&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--suexec-docroot=/home/&nbsp;\&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;其中关于xxxdir=的选项的含义是一目了然的,通常Apache源代码的设置是将所有的东&nbsp;<BR>西安装在/usr/local/apache下面,而你可以用-xxxdir=选项改变它,例如-mandir=/us&nbsp;<BR>r/man表示手册页面将被安装到/usr/man,而-bindir=/usr/bin和-sbindir=/usr/sbin代&nbsp;<BR>表apache的执行程序被安装到/usr/bin和/usr/sbin等等。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;--enable-module是将某个模块编译入内核,通常用./configure&nbsp;–help可以显示那些&nbsp;<BR>模块被设定为缺省打开而那些是缺省关闭的。例如-enable-module=ssl代表在apache执&nbsp;<BR>行程序中直接启用ssl。还有一个相反的选项叫-disable-module。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;而-enable-suexec是启动SuEXEC功能(见下节)。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;执行配置文件之后,make,make&nbsp;install,然后重新启动Apache,就可以使用新的功能&nbsp;<BR>了。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;实际上,编译apache的主要理由是加入一些模块,所谓的模块是可以添加在Apache里&nbsp;<BR>面提供新功能的产品。通常,我们可以象我刚才说的那样用-enable-module命令把模块&nbsp;<BR>直接加入Apache里面。不过,也有时候,可以把模块编译成独立的模块文件-DSO(Dyna&nbsp;<BR>mic&nbsp;Shared&nbsp;Object),以独立文件的形式提供,并且在httpd.conf文件里面用LoadMod&nbsp;<BR>ule命令装入,这样就不需要重新编译源代码了。这要求你的apache编译的时候必须支持&nbsp;<BR>装入模块(--enable-mudule=so,--enable-rule=SHARED_CODE)。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;把模块编译成为DSO的命令是-enable-shared=xxx。例如把proxy支持编译成DSO的命令&nbsp;<BR>就是-enable-shared=proxy。编译后会生成对应的.so文件,就可以用LoadModule命令装&nbsp;<BR>入了。不过,一般我们建议将模块直接编译入apache程序,除非是使用后提供的模块。&nbsp;<BR>(如下面说的PHP3)&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;由于可以使用模块扩展Apache的功能,有许多的人为它编写各种功能扩展程序,其中&nbsp;<BR>最重要的是SSL支持和脚本语言支持。SSL支持我们将放在安全性的那一章来讲,现在主&nbsp;<BR>要介绍服务器脚本。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;用过Windows&nbsp;NT作页面服务的用户应该都知道ASP,ASP在服务器端运行,服务器将它&nbsp;<BR>解释为HTML文件并且送交给客户。不过ASP只能在IIS&nbsp;Server上运行。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;Apache有一个类似的东西叫php3,也是一种服务器端脚本语言,通常在Apache的缺省&nbsp;<BR>安装中并没有php3支持,你需要自己安装php3源码并且编译成Apache模块。php3的源程&nbsp;<BR>序在RedHat&nbsp;6.1的源代码盘里面有,当然你也可以自己去下载它。另外,确定你已经安&nbsp;<BR>装了apache-devel软件包。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;为了把php3编译为apache模块,需要一个apache工具,称为apxs程序,缺省的情况下&nbsp;<BR>,这个文件是/usr/sbin/apxs,先确定一下这个文件的位置,然后安装php3源代码。通&nbsp;<BR>常这个代码是rpm文件,安装后是位于/usr/src/redhat/SOURCES下的一个tgz包,展开它&nbsp;<BR>之后,进入php3源代码目录,先浏览一下configure程序的选项(./configure&nbsp;–help)&nbsp;<BR>,然后开始编译,这里用的是最小编译选项:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;./configure&nbsp;–with-apxs=/usr/sbin/apxs&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;make&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;然后将生成的libphp3.so拷贝到一个合适的地方,比如说/usr/lib。接着就可以装入&nbsp;<BR>动态连接库了。这可以用LoadModule命令完成:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;在httpd.conf中加入这样的行:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;LoadModule&nbsp;php3_module&nbsp;/usr/lib/libphp3.so&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AddModule&nbsp;mod_php3.c&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AddType&nbsp;application/x-httpd-php3&nbsp;.php3&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;AddType&nbsp;application/x-httpd-php3-source&nbsp;.phps&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;LoadModule的语法是LoadModule&nbsp;[模块名]&nbsp;[模块文件名],然后的AddType命令启用了&nbsp;<BR>php3的解释功能,重新启动apache,php3功能就可以使用了。当然,如果你重新编译了&nbsp;<BR>apache,要确保加入了装入模块支持。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;为了测试php3是否正确安装了,可以建立这样的一个文件,命名为test.php3:&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;html&gt;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;?php&nbsp;phpinfo();&nbsp;?&gt;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&lt;/html&gt;&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;然后把它拷贝到你的DocumentRoot下面,在浏览器中输入(比如说)httpd://www.mydo&nbsp;<BR>main.com/test.php3,你会看到好几屏的测试信息,这就表示php3已经工作了。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;php3支持很多扩展功能,其中最重要的是和各种数据库的接口,例如可以用php3脚本&nbsp;<BR>访问Oracle,Sybase,MySQL等等,由于本书不是主页指南,无法详细地向你叙述php3的&nbsp;<BR>详情,你可以自己看php3的手册。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;不过,尽管php3功能十分强大,但是它确实不容易学懂。为此,有一些其他的脚本工&nbsp;<BR>具,例如服务器端的JavaScript等等,它们也经常被发行为Apache的模块,安装方法和&nbsp;<BR>php3大同小异。另外,也有一些人开发了ASP到java或者php3的解释程序,这样就可以在&nbsp;<BR>Apache上使用ASP了(主要是为了支持用FrontPage做的主页),安装起来也不复杂,例&nbsp;<BR>如iasp,这个程序可以把ASP翻译成java程序,只要你安装了java&nbsp;jdk,使用它是一件很&nbsp;<BR>轻松的事情。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;6.3.6&nbsp;SuEXEC和其他&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;对于许多用户来说,可能最常用的交互工具仍然是CGI。CGI程序从网页的输入得到信&nbsp;<BR>息,并且存取服务器的文件。&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -