Apache-2.2用户权限设置与认证

简介:

背景介绍

有时我们使用Apache搭建出来的web站点仅给内部某些主机访问,或者访问时需要通过身份验证后才可以显示,如监控主机的web页面等,此时就需要控制访问者的权限和进行身份验证了,本章就以此来进行介绍

一、用户权限设置

在/etc/httpd/conf/httpd.conf配置文件中,DocumentRoot是指明web站点的根目录所在的路径(默认DocumentRoot "/var/www/html"),而其下的Directory容器中的部分<Directory "/var/www/html">则是对问目录用户权限的设置。如果我们要修改web站点的根目录位置,在httpd-2.2版本中,只需要修改DocumentRoot后的路径即可,不必给每一个web站点的根目录设置权限,而在httpd-2.4以后,每一个web站点的根目录都需要设置权限(即每一个DocumentRoot下面都需要有对应的<Directory "/path/to/">设置),此处就以DocumentRoot "/var/www/html"为例说明

使用yum -y install httpd 后,并在默认的DocumentRoot下面添加一些文件,在httpd的配置文/etc/httpd/conf/httpd.conf文件中,可以看到默认的用户权限为

<Directory "/var/www/html">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

避免Apache默认欢迎首页的干扰,删除/etc/httpd/conf.d/welcome.conf,使用浏览器登录本机,可以看到此时会将/var/www/html/目录内的内容以列表的形式显示wKiom1gMhlfx6oF7AAA1aNM3diA513.png

此处需要解释下<Directory "/var/www/html">容器内的常用选项

1.options:定义资源展示方式,后跟空白字符分隔的参数,建议设置为None

(1)Indexes:当网页不存在时目录中的文件已索引方式显示

(2)FollowSymLinks:允许跟踪网站资源下的符号链接对应的原文件

(3)None:所有都不启用

(4)All:所有的都启用

(5)ExecCGI:允许使用mod_cgi模块执行CGI脚本

(6)Includes:允许使用mod_include模块实现服务器端包含(SSI)

(7)ncludesNOEXEC:允许包含但不允许执行脚本

(8)MultiViews:允许使用mod_negotiation实现内容协商

(9)SymLinksIfOwnerMatch:在链接文件属主属组与原始文件的属主属组相同时,允许跟随符号连接所指向的原始文件

将Options 后面的参数改为None后再次刷新浏览器,可以看到不在以索引显示了wKiom1gMhlezBg1VAAAqaGOcGRg331.png

2.AllowOverride:表示当前容器的认证授权如Order allow deny等是否被覆盖,None表示不覆盖,如果在www/htdocs目录下有一个/www/htdocs/fin子目录,在<Directory "/var/www/html/fin">中AllowOverride AuthConfig则表明该容器要实现认证配置wKioL1gMhliTeqKsAADpZjBkwIk153.png

3.Order allow|deny:设置允许、拒绝对象次序,需要注意的是allow、deny有先后顺序,如果是Order Allow,Deny 则默认是拒绝;如果是Order Deny, Allow默认是允许,Allow from all 是允许所有人访问。允许、拒绝的对象可以是IP/NETMASK,也可以是FQDN

首先创建一个index.html主页,可以看到访问正常(主页必须命名为index.html

的原因是在/etc/httpd/conf/httpd.conf由配置文件中DirectoryIndex决定)wKiom1gMhljBYYVuAAAd5e8hKOA293.png

而后修改Director容器中的Order选项,拒绝我的本地计算机IP地址访问wKioL1gMhliQPQnRAAAUfavMb7s284.png

此时再刷新页面则无法正常显示wKioL1gMhljCs5B8AAAqaGOcGRg293.png

二、路径别名

如果一个图片在浏览器显示的资源位置为:www.contoso.com/images/picture,按照常规路径,picture文件应该是在/var/www/html/images目录下,有时候我们也可以将images目录放在别的地方,使用别名的方式重定向,在主配置文件/etc/httpd/conf/httpd.conf中,使用Alias /images/ "/data/images/"设置重定向,需要注意的是如果fakename与realname结尾要么都带/,要么都不带wKiom1gMhlign3LzAABMhyyHf9Y473.png

三、用户认证

用于认证的模块必须是存在于主配置文件并加载的模块,并使用mkdir -p创建/etc/httpd/conf/.htpasswd隐藏文件存放认证账户和密码wKioL1gMhlihre3jAAA5HA3iOgY197.png

然后再到主配置文件的<Directory "/var/www/html/fin">容器中添加如下内容:

<Directory "/var/www/html/fin">

Options None

AllowOverride AuthConfig

AuthType basic #基于basic的明文认证方式,也可以是digest认证,认证信息存放于文件系统、数据库、Ldap中

AuthName "Private web" #安全区域的提示名称信息

AuthBasicProvider file #存放认证的方式,默认是系统文件格式,可以不写

AuthUserFile "/etc/httpd/conf/.htpasswd"   #基于用户密码认证文件存放位置,文件中存放的用户可以访问该站点

Require valid-user #所有存在于AuthUserFile中的用户都可以访问该站点,或者使用Require user $username  指定AuthUserFile中的那些用户可以访问,多个用户名空格隔开

</Directory>

此时再刷新页面,就会出现输入账号密码的弹窗wKiom1gMhliw1nMjAABe3GUYzGY843.png


使用命令创建tom、jerry、andy用户,信息存放在.htpasswd文件中,重读配置文件

 htpasswd -c -m /etc/httpd/conf/.htpasswd tom

 htpasswd -c -m /etc/httpd/conf/.htpasswd jerry

 htpasswd -c -m /etc/httpd/conf/.htpasswd andy

-c :首次创建用户密码文件的时候需要指定-c,仅第一次需要,以后就不需要指定了

-d :使用CRYPT加密算法对用户密码文件加密

-m :强制指定使用md5加密算法对密码进行密码文件加密

-p :不加密用户密码文件

-s :强制使用SHA加密啊算法对用户密码文件进行加密

-D :删除指定用户

创建/var/www/html/fin目录,再在其中创建一个index.html文件,此时刷新浏览器

会看到在<Directory "/var/www/html/fin">容器中定义的AuthName在此处显示(谷歌浏览器不会显示)

wKiom1gMhlnidIj_AAAxQK__TXc096.png

输入用htpasswd创建的账号和密码后,网页就正常打开了

wKioL1gMhlmjc0VYAAAn38zImkI463.png

四、Http服务器常见响应报文代码含义

1XX:信息性状态码

100:Continue

2XX:成功状态码

200:OK

201:Created OK

3XX:重定向状态码

301:Moved Permanebtly 永久重定向,在响应报文中使用首部“Location:URL”指定资源现在所在的位置

302:Found 临时重定向,在响应报文中使用首部“Location:URL”指定临时资源位置

304:Not Modified,条件式请求中使用

4XX:客户端的错误

403:Forbidden,请求被服务器拒绝

404:Not Found,服务器无法找到请求的URL

405:Method Not Allowed,不允许使用此方法请求响应的URL

5XX:服务器类的错误

500:Internal Server Error,服务器内部错误

502:Bad Gateway:代理服务器从上游收到一条伪响应

503:Service Unavailable,服务器此时无法提供服务,但将来可能可用


本文转自 qiao645 51CTO博客,原文链接:http://blog.51cto.com/arkling/1864759



相关文章
|
25天前
|
移动开发 Linux Apache
apache 用户登录认证
在Redhat 9系统中,已安装Apache服务。遵循教程,首先创建用户&quot;DL&quot;并设置密码,然后创建用户目录/home/DL/public_html,存放index.html。启用Apache的userdir模块,取消UserDir disabled的注释,并重启服务。通过htpasswd创建用户认证文件,编辑userdir.conf添加权限设置,包括AllowOverride、authuserfile、authname、authtype和require user。最后,通过浏览器访问ip/~DL/进行测试,实现用户登录验证。
15 4
|
3月前
|
Java Apache
Apache HttpClient 4.5设置超时时间
Apache HttpClient 4.5设置超时时间
|
5月前
|
消息中间件 Kafka Apache
Apache Flink消费Kafka数据时,可以通过设置`StreamTask.setInvokingTaskNumber`方法来实现限流
Apache Flink消费Kafka数据时,可以通过设置`StreamTask.setInvokingTaskNumber`方法来实现限流
81 1
|
12月前
|
消息中间件 缓存 容灾
Apache Kafka-通过设置Consumer Group实现广播模式
Apache Kafka-通过设置Consumer Group实现广播模式
1578 0
|
Apache PHP
【PHP编程之路-1】设置apache虚拟目录
【PHP编程之路-1】设置apache虚拟目录
363 0
【PHP编程之路-1】设置apache虚拟目录
|
XML 存储 缓存
Spring认证中国教育管理中心-Apache Geode 的 Spring 数据教程一
Spring认证中国教育管理中心-Apache Geode 的 Spring 数据教程一
|
存储 XML NoSQL
Spring认证中国教育管理中心-Apache Cassandra 的 Spring 数据教程十
Spring认证中国教育管理中心-Apache Cassandra 的 Spring 数据教程十
|
NoSQL 安全 Java
Spring认证中国教育管理中心-Apache Cassandra 的 Spring 数据教程六
Spring认证中国教育管理中心-Apache Cassandra 的 Spring 数据教程六
|
存储 XML 缓存
Spring认证中国教育管理中心-Apache Cassandra 的 Spring 数据教程四
Spring认证中国教育管理中心-Apache Cassandra 的 Spring 数据教程四
|
存储 NoSQL 安全
Spring认证中国教育管理中心-Apache Cassandra 的 Spring 数据教程四
Spring认证中国教育管理中心-Apache Cassandra 的 Spring 数据教程四

推荐镜像

更多