今天在配置 squid 的 basic auth 的时候遇到了一个问题
我把 htpasswd 生成的密码文件放在了 / root/config 目录下,然后在认证的时候老是遇到 http 407 deny
我把 htpasswd 生成的密码文件放在了 / root/config 目录下,然后在认证的时候老是遇到 http 407 deny
查看 / var/log/squid/cache.log 的时候发现不能够 stat 那个密码文件。
之后把那个密码文件 chmod 成 777, 发现还是不行
最后把那个密码文件放在了 /etc/squid 目录下,终于可以了
最后把那个密码文件放在了 /etc/squid 目录下,终于可以了
搜索了一下,发现 linux 除了一般的文件权限控制还有 acl.
查看了一下 fstab 文件,确实已经开启了
查看了一下 fstab 文件,确实已经开启了
1
| /dev/vda1 / ext3 noatime,acl,user_xattr 1 1 |
我去查看了一下那个密码文件的 acl,发现是 rwx,好像正常的
1
2
3
4
5
6
7
| debian:~/config# getfacl pass2 # file: pass2 # owner: root # group: root user::rwx group::rwx other::rwx |
后来才发现,原来是 /root 目录对于非 root 用户设置成了不可读不可写.
1
2
3
4
5
6
7
8
| debian:~# getfacl /root getfacl: Removing leading '/' from absolute path names # file: root # owner: root # group: root user::rwx group::--- other::--- |
运行 squid 的用户是 proxy,由于设置了 acl,proxy 用户访问不了 / root 内的文件(就算 / root/config 文件夹和 /root/config/pass 权限设置成 777 也没用!),所以就导致了 squid 没有权限去认证了。
ACL 使得 Linux 可以进行更加复杂的权限控制,详细可以参见 Linux ACL 体验.
No comments:
Post a Comment