网站目录设置权限,访问目录需密码直接访问文件无需密码

针对网站根目录下的某些子目录,有时候不希望把子目录内的所有文件公开,此时可以设置访问权限,访问这个子目录时,需要输入用户名和密码才可查看里面内容。
演示网站:https://aihm.adds.ltd
系统版本:CentOS 7 64
网站环境:LNMP/BT,Apache/nginx
例如,打开以上演示网站,可正常罗列站内的文件夹和文件,但当要打开https://aihm.adds.ltd/Softs/Linux/时,会提示需要输入用户名和密码才能浏览。如图:

设置方法很简单,Apache、litespeed、nginx都可以设置。
首先,利用htpasswd配置用户名和密码文件:

yum -y install httpd-tools
#在/home目录内生成密码文件passwd,添加用户名yours,根据提示设置密码
htpasswd -c /home/passwd yours

不同的Linux发行版,安装htpasswd方法不同,如果觉得麻烦,也可以用脚本直接生成密码文件,而无需使用htpasswd。
脚本下载及方法如下:

该资源需登录评论本文后刷新网页查看,如果没有账号,可以先进行注册


根据提示设置用户名密码和文件名,密码文件会在终端当前目录下生成。
密码文件生成后,就可以开始设置权限了。

Apache环境:

在需要设置权限的子目录内,通过添加.htaccess文件来设置目录权限。
编辑新建的.htaccess文件,添加以下内容:

AuthUserFile /home/passwd
AuthName "Good Jobs" 
AuthType Basic
require valid-user   
ErrorDocument 401 "Unauthorized Access"

不过,这样设置,直接访问此目录内的文件,也是需要输入用户名密码的。如果只是设置访问目录需要密码,直接访问目录内的文件不需要密码,则需要添加以下内容:

该资源需登录评论本文后刷新网页查看,如果没有账号,可以先进行注册


效果:
访问目录需要密码:https://aihm.adds.ltd/Softs/Linux/
访问文件不需密码:https://aihm.adds.ltd/Softs/Linux/Others/bench.sh

Nginx环境:

在网站的nginx配置文件中,添加以下信息:

location ^~ /Softs/Linux/
{
auth_basic "Authorized users only";
auth_basic_user_file /home/passwd;
}

重启nginx。不过,加上认证之后,该目录下的PHP将不会被解析,如果想可以解析PHP可以将上面的配置改为:

该资源需登录评论本文后刷新网页查看,如果没有账号,可以先进行注册

10 条评论 on “网站目录设置权限,访问目录需密码直接访问文件无需密码

  1. bysoulstudio
    Safari 605.1.15 | Mac OS X 10_15  
    福建省厦门市 电信

    到底要怎么才能下载你的分享呢?mac上。哭死~

    1. Yours Post author
      Safari 604.1 | iPhone iPhone OS 13_1_2 like Mac OS X) AppleWebKit  
      广东省广州市 联通

      留意一下总会下载到的~

      1. bysoulstudio
        Netscape Navigator 5.0 | iPhone iPhone OS 13_1_2 like Mac OS X) AppleWebKit  
        福建省福州市 电信

        实在是搞不懂那些代码什么的T T

  2. libra
    Safari 605.1.15 | Mac OS X 10_15  
    广东省广州市 电信

    威锋来的~
    是不是评论就能看到登陆账户密码呢

发表评论