dream789 发表于 2018-11-29 08:57:08

apache下用户授权与认证的配置过程

用户授权和认证
在打开网页弹出用户名及密码认证对话框(apache版本是:httpd-suexec-2.0.52-41.ent)特别标注出来版本是因为先后做过两台服务器出的问题不一样,一台apache版本为httpd-2.0.52-9.ent的比httpd-suexec-2.0.52-41.ent在httpd.conf中要多出一些设置。
一、先说httpd-suexec-2.0.52-41.ent版本的(2101-5-4)
第一步修改httpd.conf
修改的这段大概httpd.conf的291~320行
   //改为自己网页文件所在目录,我的是在home下建了一个http目录所以我的改为

#
# Possible values for the Optionsdirective are "None", "All",
# or any combination of:
#Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGIMultiViews
#
# Note that "MultiViews" mustbe named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicatedand important.Please see
#http://httpd.apache.org/docs-2.0/mod/core.html#options
# for more information.
#
   Options Indexes FollowSymLinks

#
# AllowOverride controls what directivesmay be placed in .htaccess files.
# It can be "All","None", or any combination of the keywords:
#Options FileInfo AuthConfig Limit
#
    AllowOverride None//将这句改为AllowOverride All,这样.htaccess 文件才会起作用

#
# Controls who can get stuff from thisserver.
#
   Order allow,deny
   Allow from all


确认AccessFileName是.htaccess(这段大概在httpd.conf的385行)
AccessFileName .htaccess
第二步:建立.htaccess文件
这个文件也可以是任何名称,可以放在任何认为合适的位置,我是放在/home/http下
#cd home/http
#vi .htaccess
输入以下内容
AuthUserFile 用户帐号密码文件名
AuthGroupFile 群组帐号密码文件名
AuthName 画面提示文字
AuthType 验证方式
用户验证方式AuthType 目前提供了Basic和Digest 两种。
密码检验设定方法与httpd.conf 中的相关设定相同。
我输入的是:
AuthUserFile /etc/setureuser //这个setureuser是我在后面建立的存放认证用户用户名及密码的文件
AuthName UserLogin //这个随便起名,这只是弹出对话框的题目
AuthType Basic //用户认证的方式
require valid-user// valid-user参数意味着user文件中的所有用户都是可用的。
(#requirevalid-user 或者 require user frank 限制是所有合法用户还是指定用户)
wq! //保存退出
因为我没有设置组群,所以就没在写AuthGroupFile的设置,如果想设置组群
第三步:建立用户
#htpasswd –c /etc/setureusericedot //这是我建立了一个setureuser的密码文件,用来存储认证访问用户的用户名及密码,icedot是新建的用户的用户名,回车确认后系统会要求给用户输入密码及确认密码。
第一次建立用户时需要用-c这个参数,以后再加入新的用户时就不用了
想修改密码,可以如下
#htpasswd -m /etc/setureusericedot
最后重启httpd
#etc/init.d/httpdrestart
二、再说httpd-2.0.52-9.ent版本的(2101-5-6)
今天(2010-5-6)新做另一台服务器的MRTG时遇到了一个问题,前面做的三步与5月4日做的服务器的步骤一样,一切顺利,但到做完后打开网页弹出了用户认证对话框开始出错了,输入用户名和密码后不行,始终弹出对话框,我将.htaccess、用户密码文件,权限也改过,也新建过,始终不行,进入var/log/http/下查看error_log发现报错,这台服务器的apache的版本是httpd-2.0.52-9.ent
MySQL ERROR: Can't connect to local MySQL server through socket'/var/lib/mysql/mysql.sock' (2)
MySQL user icedot not found: /
从报错上来看就是说系统在验证用户时并没有到我设定的密码文件中去找查找,而是到mysql里去查找用户,于是通过/etc/init.d/mysqlstatus命令查看是否有mysql运行,发现mysql是没有启动的,想来还是httpd.conf的问题,查到后来解决的办法
这段大概在275~278之间

Options All
AllowOverride None

-------------------------------------------------------改为--------------------------------------------------------

Options All
AuthMySQLEnable off //这句是新加上去的,就是为了关闭web到mysql里查找用户
AllowOverride None

就是在中间加了一句让Mysql关闭
再打开网页,通过验证进入页面恢复正常。
这两次不一样可能是由于apache的版本不一样的原因
狂试狂改狂查资料两天不成功,不是不成功,今天终于成功了,我吐……


页: [1]
查看完整版本: apache下用户授权与认证的配置过程