首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >apache:仅在另一个文件系统上“不允许符号链接或链接目标不可访问”。

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

Server Fault用户
提问于 2019-10-03 18:54:41
回答 1查看 6.4K关注 0票数 0

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

我试过的是:

  • Selinux是残疾的
  • Options +FollowSymLinks出现了
  • 如果我用同一个FS上的链接替换到另一个FS的链接--它可以工作!

档案:

代码语言:javascript
运行
复制
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/中,我有:

代码语言:javascript
运行
复制
lrwxrwxrwx 1 root     root       28 Oct  3 09:10 var -> /var/www/b2b/nfs/b2b-web-var

我创建了与/var/www/b2b/nfs/b2d-web-var具有相同内容的var1,如果我喜欢下面的内容(链接是本地的),那么所有东西都能工作:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
fs-1111111111:/  /var/www/b2b/nfs efs defaults,_netdev  0 0

DocumentRoot是/var/www/b2b/web

我也尝试过strace,但不知道到底是什么错了:

代码语言:javascript
运行
复制
[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 apache读取文件内容,然后使用head /var/www/b2b/web/var/assets/75259_box1_v29.jpg | less。那么,这里怎么了?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2019-10-04 06:01:37

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

代码语言:javascript
运行
复制
# pwd
/var/www/b2b/web
# chown -h www-data.www-data var #voila!

注意:在我的例子中,-SymLinksIfOwnerMatch是不够的,idk为什么。

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

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/986692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档