AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 986692
Accepted
Putnik
Putnik
Asked: 2019-10-04 10:54:41 +0800 CST2019-10-04 10:54:41 +0800 CST 2019-10-04 10:54:41 +0800 CST

apache:仅在另一个文件系统上“不允许符号链接或链接目标不可访问”

  • 772

我在远程目录中有一个文件,它被转换为 apache DocRoot 树。当我尝试从该目录下载文件(而不是写入)时,我得到 403: AH00037: Symbolic link not allowed or link target not accessible: /var/www/b2b/web/var

我尝试了什么:

  • Selinux 被禁用
  • Options +FollowSymLinks 存在
  • 如果我用同一个 FS 上的链接替换另一个 FS 的链接 - 它可以工作!

文件:

namei -l /var/www/b2b/web/var/assets/75259_box1_v29.jpg
f: /var/www/b2b/web/var/assets/75259_box1_v29.jpg
dr-xr-xr-x root     root     /
drwxr-xr-x root     root     var
drwxr-xr-x root     root     www
drwxrwxrwx www-data www-data b2b
drwxrwxrwx www-data www-data web
lrwxrwxrwx root     root     var -> /var/www/b2b/nfs/b2b-web-var
dr-xr-xr-x root     root       /
drwxr-xr-x root     root       var
drwxr-xr-x root     root       www
drwxrwxrwx www-data www-data   b2b
drwxrwxrwx www-data www-data   nfs
drwxrwxrwx www-data www-data   b2b-web-var
drwxrwxrwx www-data www-data assets
-rwxrwxrwx www-data www-data 75259_box1_v29.jpg

所以,在/var/www/b2b/web/我有:

lrwxrwxrwx 1 root     root       28 Oct  3 09:10 var -> /var/www/b2b/nfs/b2b-web-var

我创建var1的内容与 /var/www/b2b/nfs/b2b-web-var 相同,如果我喜欢下面的内容(链接是本地的),那么一切正常:

lrwxrwxrwx 1 root     root        4 Oct  3 18:15 var -> var1
drwxr-xr-x 4 root     root     4096 Oct  3 18:13 var1

/etc/fstab:

fs-1111111111:/  /var/www/b2b/nfs efs defaults,_netdev  0 0

DocumentRoot 是/var/www/b2b/web

我也试过strace了,但不明白到底出了什么问题:

[pid 11381] stat("/var/www/b2b/web/var/assets/75259_box1_v29.jpg",  [wait(0x857f) = 11381] WIFSTOPPED,sig=133
{st_mode=S_IFREG|0777, st_size=201249, ...}) = 0
[pid 11381] gettimeofday( [wait(0x857f) = 11381] WIFSTOPPED,sig=133
[pid 11419] semop(2326532, {{0, -1, SEM_UNDO|IPC_NOWAIT}}, 1 <unfinished ...>
[pid 11416] semop(2326532, {{0, -1, SEM_UNDO|IPC_NOWAIT}}, 1 <unfinished ...>
[pid 11381] stat("/var/www/b2b/web/var/assets/75259_box1_v29.jpg",  [wait(0x857f) = 11419] WIFSTOPPED,sig=133
[pid 11419] <... semop resumed> )       = -1 EAGAIN (Resource temporarily unavailable)
[pid 11416] <... semop resumed> )       = -1 EAGAIN (Resource temporarily unavailable)
[pid 11381] <... stat resumed> {st_mode=S_IFREG|0777, st_size=201249, ...}) = 0
[pid 11381] lstat("/var/www/b2b/web/var",  [wait(0x857f) = 11381] WIFSTOPPED,sig=133
[pid 11381] stat("/var/www/b2b/web/var",  [wait(0x857f) = 11381] WIFSTOPPED,sig=133
[pid 11381] gettimeofday( [wait(0x857f) = 11381] WIFSTOPPED,sig=133
[pid 11381] write(7, "[Thu Oct 03 18:34:35.430672 2019"..., 175 [wait(0x857f) = 11381] WIFSTOPPED,sig=133
[pid 11381] gettimeofday( [wait(0x857f) = 11381] WIFSTOPPED,sig=133
[pid 11381] read(12,  [wait(0x857f) = 11381] WIFSTOPPED,sig=133
0x555c658e7068, 8000) = -1 EAGAIN (Resource temporarily unavailable)
[pid 11381] gettimeofday( [wait(0x857f) = 11381] WIFSTOPPED,sig=133
[pid 11381] writev(12, [{"HTTP/1.1 403 Forbidden\r\nDate: Th"..., 172}, {"<!DOCTYPE HTML PUBLIC \"-//IETF//"..., 357}], 2 [wait(0x857f) = 11381] WIFSTOPPED,sig=133

我考虑过超时,但我可以使用su apachethen 读取文件内容,例如 with head /var/www/b2b/web/var/assets/75259_box1_v29.jpg | less。那么,这里有什么问题?

apache-2.4
  • 1 1 个回答
  • 4862 Views

1 个回答

  • Voted
  1. Best Answer
    Putnik
    2019-10-04T22:01:37+08:002019-10-04T22:01:37+08:00

    解决方案:符号链接的所有者必须与网站的其余部分相同:

    # pwd
    /var/www/b2b/web
    # chown -h www-data.www-data var #voila!
    

    注意:-SymLinksIfOwnerMatch在我的情况下还不够,我知道为什么。

    注意2:不要忘记'-h',否则 chownn 将在应用的目标上,而不是在链接本身上。如果你想 chown 链接到目录,那么不要添加斜杠!

    • 0

相关问题

  • Apache2 - SSL 不工作

  • Apache <VirtualHost> 标签,如果客户端的 IP = x 则不重定向... 怎么做?

  • 我无法启用我的网站?[关闭]

  • SELinux 阻止 Apache 写入文件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve