(13)权限被拒绝:访问/〜我被拒绝

 zhoukaipc 发布于 2023-01-08 13:56

我正在尝试配置Apache httpd.conf(在我的CentOS 6.4上)以允许访问我的用户目录(即~me/public_html/index.html).

我更改了原始 httpd.conf(即开箱即用)如下:

[root@myhost www]# diff /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.orig.out-of-the-box 
366c366
<     #UserDir disabled
---
>     UserDir disabled
373c373
<     UserDir public_html
---
>     #UserDir public_html

这应该原则上提供访问权限,http://myhost/~me但相反,我得到了可怕的错误:

You don't have permission to access /~me on this server.

我检查了文件/ var/log/httpd/error_log,当然,它读取:

(13)Permission denied: access to /~me denied

我注意到的第一个奇怪的事情是a /先于~me.

这个领先者/来自哪里?

它只是一个"红鲱鱼"吗?

或者这是否指向问题的根本原因(即我需要在httpd.conf中修改其他内容)?

最重要的是,既然我知道我的 ~me/public_html权限具有世界可读性,那么如何解决这样的问题呢?

有没有办法找出为什么 "访问/〜我被拒绝"?

SELinux的?

httpd.conf文件?

目录权限?

上述所有的?


更新1,回答以下@UlrichSchwarz评论中的2个问题:

    主目录似乎具有'x'权限:

    [root @ myhost~] #ls -lad/home/me

    drwxr-XR-X.33 me me 4096 Feb 8 16:30/home/me

    关于public_html的SELinux信息:

    [root @ myhost~] #ls -Z -d/home/me/public_html /

    drwxrwxr-X.me me unconfined_u:object_r:file_t:s0/home/me/public_html /


更新2,在我确认这确实是SELinux问题之后(感谢@Scolytus的提示):

    我跑了命令:

    chcon -R -t httpd_user_content_t/home/me/public_html /

    仍然没有去.

    [root @ myhost~] #ls -Z -d/home/me/public_html /

    drwxrwxr-X.me me unconfined_u:object_r:httpd_user_content_t:s0/home/me/public_html /

    然后我从命令行运行"允许HTTPD读取主目录" :

    setsebool -P httpd_enable_homedirs = 1

    仍然没有去.

/ var/log/httpd/error_log现在显示(除了(13)权限被拒绝错误)以下内容:

 [notice] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
 [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
 [notice] Digest: generating secret for digest authentication ...
 [notice] Digest: done
 [notice] Apache/2.2.15 (Unix) DAV/2 configured -- resuming normal operations

也许问题在于context_system_u和httpd_user_content_t之间的差异?

我还需要做什么?(没有完全禁用SELinux,即)


更新3,感谢@ lserni的答案中的信息,我发现了ausearch命令:

ausearch -m avc --start today

其中提供了以下输出:

time->Fri Jul  4 09:16:44 2014
type=SYSCALL msg=audit(1404479804.256:1312): arch=40000003 syscall=196 success=no exit=-13 a0=12c2c80 a1=bfeb1d00 a2=a34ff4 a3=2008171 items=0 ppid=5880 pid=5886 auid=0 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=193 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1404479804.256:1312): avc:  denied  { getattr } for  pid=5886 comm="httpd" path="/home/me" dev=dm-3 ino=2 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:file_t:s0 tclass=dir

咦?为什么/home/me/home/me/public_html呢?

这是输出ls -Zd /home/me/:

drwxr-xr-x. me me system_u:object_r:file_t:s0      /home/me/

我也应该运行chcon -t httpd_user_content_ton / home/me吗?

继续研究......


更新4:成功!

我跑了命令:

chcon -t httpd_user_content_t /home/me/

一切都很顺利.

[root@myhost sa]# ls -Z -d /home/me/

drwxr-xr-x. me me system_u:object_r:httpd_user_content_t:s0 /home/me/

LSerni.. 5

我看到你给出的命令略有不同的版本,由sealert以下提供:

SELinux拒绝访问httpd请求的/ var/www/html/file1./ var/www/html/file1具有用于由不同程序共享的上下文.如果您还想从httpd共享/ var/www/html/file1,则需要将其文件上下文更改为public_content_t.如果您不打算进行此访问,则可能表示入侵尝试.

允许访问:

您可以通过执行chcon -t public_content_t'/ var/www/html/file1'来更改文件上下文

修复命令:

chcon -t public_content_t '/var/www/html/file1'

我如何解决这样的问题?

大多数与SELinux相关的信息通常都在审计日志中,但您可能需要一些工具,例如为sealert您解码.我做了一个简短的搜索,并提出了我不知道的这个工具,但看起来很有趣:SELinux GUI.

附录:一些例子semanage

1 个回答
  • 我看到你给出的命令略有不同的版本,由sealert以下提供:

    SELinux拒绝访问httpd请求的/ var/www/html/file1./ var/www/html/file1具有用于由不同程序共享的上下文.如果您还想从httpd共享/ var/www/html/file1,则需要将其文件上下文更改为public_content_t.如果您不打算进行此访问,则可能表示入侵尝试.

    允许访问:

    您可以通过执行chcon -t public_content_t'/ var/www/html/file1'来更改文件上下文

    修复命令:

    chcon -t public_content_t '/var/www/html/file1'
    

    我如何解决这样的问题?

    大多数与SELinux相关的信息通常都在审计日志中,但您可能需要一些工具,例如为sealert您解码.我做了一个简短的搜索,并提出了我不知道的这个工具,但看起来很有趣:SELinux GUI.

    附录:一些例子semanage

    2023-01-08 13:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有