httpd基于用户的访问控制
13、基于用户的访问控制 认证质询:WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户端提供账号和密码 认证:Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过时,则服务器发送响应的资源 认证方式两种: basic:明文 digest:消息摘要认证,兼容性差 安全域:需要用户认证后方能访问的路径;应该通过名称对其进行标识,以便于告知用户认证的原因 用户的账号和密码 虚拟账号:仅用于访问某服务时用到的认证标识 存储:文本文件,SQL数据库,ldap目录存储,nis等 basic认证配置 (1) 定义安全域 <Directory “/path"> Options None AllowOverride None #Require all granted AuthType Basic #认证方式 AuthName "String“ #登录描述信息 AuthUserFile "/PATH/HTTPD_USER_PASSWD_FILE" #账号路径文件,由htpasswd命令生成 Require user username1 username2 ... #允许文件中特定用户登录访问 Require valid-user #允许账号文件中的所有用户登录访问 </Directory> (2) 提供账号和密码存储(文本文件) 使用专用命令完成此类文件的创建及用户管理 htpasswd [options] /PATH/HTTPD_PASSWD_FILE username -c 自动创建文件,仅应该在文件不存在时使用 -p 明文密码 -d CRYPT格式加密,默认 -m md5格式加密 -s sha格式加密 -D 删除指定用户 方法一: 1.使用htpasswd -c /etc/http/conf.d/user.list zzhz 2.配置文件设置 <directory /var/www/html/admin> AuthType Basic AuthName "aaaaaaa" AuthUserFile "/etc/http/conf.d/user.list" Require valid-user </directory> 方法二: 1.在/var/www/html/admin下创建.htaccess文件并设置 AuthType Basic AuthName "aaaaaaa" AuthUserFile "/etc/http/conf.d/user.list" Require valid-user 2.设置配置文件 <directory /var/www/html/admin> AllowOverride AuthConfig </directory> 基于组账号进行认证 创建用户账号和组账号文件 组文件:每一行定义一个组(组名在文件中随意取名,用户要使用htpasswd生成) GRP_NAME: username1 username2 ... 示例: vim /etc/httpd/conf.d/.htgroup webadmins:wang mage <Directory "/www/htdocs/admin"> Options None AllowOverride None AuthType Basic AuthName "Administator private" AuthUserFile "/etc/httpd/conf.d/.htpasswd" AuthGroupFile "/etc/httpd/conf.d/.htgroup" Require group webadmins </Directory> 远程客户端和用户验证的控制(用户验证的控制有基于IP/用户的访问控制的两种) Satisfy ALL|Any ALL 客户机IP和用户验证都需要通过才可以 Any 客户机IP和用户验证,有一个满足即可 示例: Require valid-user <RequireAll> Require all granted Require not ip 172.16.1.1 </RequireAll> Satisfy Any 14、实现用户家目录的http共享 基于模块mod_userdir.so实现 相关设置: vim /etc/httpd/conf.d/userdir.conf <IfModule mod_userdir.c> #UserDir disabled UserDir public_html #指定共享目录的名称 </IfModule> <directory /home/wang/public_html> Require all granted #AuthType Basic #AuthName "wanghome Page" #AuthUserFile "/etc/httpd/conf.d/.httpuser" #Require valid-user </directory> 准备目录 su – wang; mkdir ~/public_html setfacl –m u:apache:x /home/wang 访问 http://localhost/~wang/index.html