Apache 抱怨无法访问文件。有没有简单的方法可以找出阻碍访问的原因?
我知道我可以完成这个过程:了解用户属于哪个组,通过ls -ld
对文件路径中的每个文件夹执行检查权限,最后ls -l
对文件本身执行检查,但这非常繁琐。此外,selinux 和文件 ACL 也可能发挥作用。
我也知道我可以将 apache 的登录 shell 从 更改/sbin/nologin
为/bin/bash
,然后su - apache
通过cd
文件夹直到我不能,但这也很繁琐。
这是我经常做的事情,而且我怀疑其他人也会这样做,所以我认为我遗漏了一些可以让事情变得更容易的东西。
答案1
我错了。我想下面的内容会更有帮助。
#!/bin/bash
uid=`id -u`
echo $uid
cmd='find . ! \( -user '${uid}
echo $cmd
for gid in `id -G`
do
cmd=${cmd}' -o -gid '${gid}
done
cmd=$cmd' \)'
echo "..."
echo $cmd
for file in `find . ! \( -gid 1000 \)`
do
a=$((`stat ${file} --print=%a`%10))
if [ $a -eq 0 ] ; then
echo $file
fi
done