Pages

Thursday, 1 August 2019

Linux 的 ACL

今天在配置 squid 的 basic auth 的时候遇到了一个问题
我把 htpasswd 生成的密码文件放在了 / root/config 目录下,然后在认证的时候老是遇到 http 407 deny
查看 / var/log/squid/cache.log 的时候发现不能够 stat 那个密码文件。
之后把那个密码文件 chmod 成 777, 发现还是不行
最后把那个密码文件放在了 /etc/squid 目录下,终于可以了
搜索了一下,发现 linux 除了一般的文件权限控制还有 acl.
查看了一下 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