设为首页 收藏本站
查看: 872|回复: 0

[经验分享] Apache-2.2用户权限设置与认证

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-10-25 11:12:53 | 显示全部楼层 |阅读模式
背景介绍
有时我们使用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.jpg
此处需要解释下<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.jpg
2.AllowOverride:表示当前容器的认证授权如Order allow deny等是否被覆盖,None表示不覆盖,如果在www/htdocs目录下有一个/www/htdocs/fin子目录,在<Directory "/var/www/html/fin">中AllowOverride AuthConfig则表明该容器要实现认证配置 wKioL1gMhliTeqKsAADpZjBkwIk153.jpg
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.jpg
而后修改Director容器中的Order选项,拒绝我的本地计算机IP地址访问 wKioL1gMhliQPQnRAAAUfavMb7s284.jpg
此时再刷新页面则无法正常显示 wKioL1gMhljCs5B8AAAqaGOcGRg293.jpg
二、路径别名
如果一个图片在浏览器显示的资源位置为:www.contoso.com/images/picture,按照常规路径,picture文件应该是在/var/www/html/images目录下,有时候我们也可以将images目录放在别的地方,使用别名的方式重定向,在主配置文件/etc/httpd/conf/httpd.conf中,使用Alias /images/ "/data/images/"设置重定向,需要注意的是如果fakename与realname结尾要么都带/,要么都不带 wKiom1gMhlign3LzAABMhyyHf9Y473.jpg
三、用户认证
用于认证的模块必须是存在于主配置文件并加载的模块,并使用mkdir -p创建/etc/httpd/conf/.htpasswd隐藏文件存放认证账户和密码 wKioL1gMhlihre3jAAA5HA3iOgY197.jpg
然后再到主配置文件的<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.jpg

使用命令创建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.jpg
输入用htpasswd创建的账号和密码后,网页就正常打开了
wKioL1gMhlmjc0VYAAAn38zImkI463.jpg
四、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,服务器此时无法提供服务,但将来可能可用





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-291059-1-1.html 上篇帖子: 配置apache 80时端口被占用 下篇帖子: 编译安装完Apache之后发现modules目录下没有libphp5.so 解决方法 认证 用户
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表