标签: webdav

Apache 和每用户 WebDAV DocumentRoot

我设置了一个 WebDAV 用户,该用户当前从我的 MySQL 数据库中获取用户名和密码。我为用户提供了使用 WebDAV 上传大文件的选项(这是我目前正在开发的文件共享服务),但我遇到了一个我似乎无法弄清楚的小问题。

首先 - 我将如何处理每个拥有自己的 WebDAV 根的用户,以便他们无法查看其他用户的文件?我已经运行了一个 cronjob,它检查启用了 WebDAV 的所有用户并自动创建具有适当权限的目录。我只需要一些告诉 apache 的方法。

感谢您的帮助,我真的很感激。

我也知道我可以每分钟运行一次 cronjob 来生成我的 apache 配置并重新加载 apache 配置,但这只是有点太多的开销,我想要更多的灵活性。

webdav mod-webdav apache-2.2

6
推荐指数
1
解决办法
1万
查看次数

管理 Apache 以补偿 WebDAV 的安全屏蔽

当用户通过 WebDAV 创建文件时,默认行为是该文件归运行 Apache 进程的用户和组所有,umask 为 022。

不幸的是,这使得非特权用户无法通过其他方式写入文件而不是 Apache 运行的组的成员(这在我看来是一个特别糟糕的主意)。

我当前的解决方案是umask 000在 Apache 的 envvars 中设置并从用户的 webdav 父目录中删除所有世界权限。所以,如果WebDAV共享为/home/foo/www,然后/家/富/ www是由拥有www-data:foo与权限770。这或多或少地将其他无特权的用户拒之门外,但这充其量是骗人的,最糟糕的是等待的安全灾难。

从我的研究和对 mod_dav 和 Apache 的探索来看,除了将所有权限翻转回来的 cron 作业之外,我找不到合理的解决方案(我宁愿没有服务器上的负载和增加的复杂性)。SuExec 也不会工作,因为 WebDAV 操作不会以不同的用户身份执行。

对此有何想法?谢谢你。

security webdav apache-2.2

6
推荐指数
1
解决办法
1432
查看次数

Windows 文件资源管理器使用端口 80 (webdav) 而不是 445 (samba smb cifs) 作为 UNC 路径

我有一台 Windows 7 Ultimate x86_64 计算机,无法访问网络 samba 服务器。我启动“运行”对话框,然后输入内容,\\192.168.x.x这样我就绕过了 DNS 和 NetBIOS 名称解析以及广播发现,直接进入服务器 IP 地址。我运行wireshark,发现客户端正在尝试连接到端口80而不是445上的服务器。(这当然会失败,因为服务器没有监听80;服务器只运行samba和nmbd等,所以只有端口445和 137-139 均适用)。

我知道这个问题,并且我不相信这是重复的,因为(a)该问题在 Win XP 上已有 2 年多了,并且(b)在这种情况下没有任何答案有帮助,尽管其他问题已标记为已回答。

错误消息是: Windows Cannot Access \\192.168.x.x当我单击“查看详细信息”时,它说Error Code 0x800704cf The network location cannot be reached

我确认Microsoft 网络客户端存在并且已启用。我什至将其删除(被迫重新启动)并重新安装。没有效果。

我禁用了IPv6,没有效果。

我确认WebClient服务未运行。(它设置为手动,并且未运行)。

我确认TCP/IP NetBIOS Helper服务正在运行。(它设置为自动,并且正在运行。)

当然,我已经重新启动并重试了。(多次和多种方式)。

该问题似乎在旧补丁级别中存在,并且在应用所有 Windows 更新后仍然存在。

为什么 Windows 会尝试使用端口 80 (webdav) 而不是端口 445 (samba/smb/cifs) 将文件资源管理器连接到 UNC 路径?

net view 192.168.x.x在受影响的客户端上抛出错误消息:

C:\Windows\system32>net view 192.168.x.x
System error 53 has …
Run Code Online (Sandbox Code Playgroud)

windows samba cifs webdav unc

6
推荐指数
1
解决办法
3万
查看次数

带有 webdav 的 apache2.4 给出 405 错误

我刚刚将我的测试机器从 Apache 2.2.29 升级到 2.4.10,实际上我遇到了 webdav 模块的一些问题。

如果我尝试登录 webdav 帐户,它可以工作,但如果我尝试列出当前目录,则会出现 405 错误。

我知道这个新版本的一些配置发生了变化,我做了一些更改以使我的虚拟主机与 2.4 兼容。

我有 2 个虚拟主机,实际上所有这些都来自我的 2.2 设置,我对它们进行了一些更新以准备好使用 2.4。其中一个在 webdav 上工作正常,但第二个在列表目录上生成 405。

这是我正在工作的虚拟主机:

阿帕奇日志:

10.19.87.87 - maxence [02/Jan/2015:16:30:12 +0100] "PROPFIND / HTTP/1.1" 207 6331 "-" "Cyberduck/4.6.1 (16121) (Windows 7/6.1) (x86)"
Run Code Online (Sandbox Code Playgroud)
    <VirtualHost *:80>
    ServerAdmin info@test.com
    DocumentRoot /home/web/working/dev/

    ServerName webdav.working.test.net
    ServerAlias webdav.working.test.net

    ErrorLog /var/log/apache2/net.test.working.webdav-error.log
    CustomLog /var/log/apache2/net.test.working.webdav-access.log combined

    <Files ".ht*">
        allow from all
    </Files>

    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

    <Location />
        DAV on
        AuthName …
Run Code Online (Sandbox Code Playgroud)

linux debian web-server webdav apache-2.4

6
推荐指数
1
解决办法
1万
查看次数

如何将经过身份验证的 Apache 用户映射到他们自己的目录?

我正在尝试为我们的用户提供一个 Apache WebDav 空间,他们可以在其中存储他们的日历 (.ics) 文件。我已经运行了 Dav 和 LDAP 身份验证。但是我没有将用户监禁到某些子目录中。毕竟我不希望他们访问彼此的日历文件。

示例:假设用户johndoe登录。然后我想将他的“ / ”路径映射到磁盘上的/var/www/users/johndoe。这样每个用户都有自己的目录。

到目前为止我尝试过的:

  1. 用户目录 /var/www/users/*/

    但似乎这个目录只是设置了 /~johndoe/ 请求的路径,这不是我想要的。

  2. 重写规则 ^/ /users/%{REMOTE_USER} [R]

    失败。它可能只是重写了不是我想要的路径。

  3. AliasMatch ^/ /var/www/users/%{REMOTE_USER}/

    这应该将路径映射到磁盘上的目录,但 %{REMOTE_USER} 不会扩展。

是否可以将登录用户监禁到某个子目录?提前致谢。

users webdav apache-2.2

5
推荐指数
1
解决办法
3822
查看次数

AuthzSVNAccessFile 如何工作?

我已经设置了一个具有 WebDAV 访问权限的 SVN 存储库。出于某种原因,它不允许结帐。

这是我的 httpd.conf 部分:

<Location /svn>
  DAV svn
  SVNParentPath /home/svn/repositories
  AuthzSVNAccessFile /home/svn/dav_svn.authz
  Satisfy Any
  Require valid-user
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /home/svn/dav_svn.passwd
</Location>
Run Code Online (Sandbox Code Playgroud)

我有两个名为“first”和“second”的存储库,dav_svn.authz 的内容是:

[first:/]
doe = rw
* = r

[second:/]
doe = rw
grig = rw
* = r
Run Code Online (Sandbox Code Playgroud)

当我尝试使用用户 doe 签出第二个时,我在 error_log 中得到这个信息:user doe: authentication failure for "/svn/second": Password Mismatch

为了了解可能是什么问题,我想更好地了解 AuthzSVNAccessFile 应该如何工作。

svn webdav

5
推荐指数
2
解决办法
3万
查看次数

用于访问 iOS 应用程序文件服务器的 WebDAV

随着可以使用 WebDAV 进行同步的 iOS 应用程序的突然冲击,以及我们对存储在北卡罗来纳州的用户数据不满意(邪恶的 IT 霸主再次袭击),我们正在寻找适用于 iPad 和 iPhone 的 WebDAV 解决方案.

我们需要:

  • 针对 LDAP(首选)、RADIUS 或 Samba 的身份验证

  • 文件服务器上的用户主文件夹的 WebDAV 安装(为了更好的术语),或者可能是他们主文件夹中的文件夹,实际上是安装到其他地方。

  • 文件服务器可以是 Ubuntu(首选)、Windows 或 OS X 上的 Samba。

我们试图避免 Sharepoint 或 Confluance 的复杂性,但如果有一个开箱即用的系统会很棒。

我们提出的最佳解决方案是自制的 PHP/Apache mod_dav 和 mod_rewrite/LDAP 构造,但它确实为网络服务器提供了对文件服务器的完全根访问权限,事实证明这有点不受欢迎!

samba webdav apple-ios

5
推荐指数
1
解决办法
897
查看次数

Windows 无法记住 DAV 网络共享的登录凭据

我有一个通过 Apache 在 linux 服务器上运行的 WebDAV 服务器,然后我试图将其映射到 Windows 机器上。

映射工作正常,我提供了我的凭据并让我登录,但是 Windows 机器无法记住我的凭据,每次打开新文档时我都被迫点击“登录”按钮,以及当我打开机器时打开或从睡眠模式唤醒。在运行低于 Windows 7 的任何机器上,我还被迫在文档中使用的每个资源(例如 Word 文档中的图像等)的登录框中手动输入我的用户名和密码。

我的 apache 设置使用具有以下配置的摘要式身份验证;

    Alias /group /home/webdav/group
    <Location /group>
            DAV On
            AuthType Digest
            AuthName "group"
            AuthUserFile /home/webdav/users/group-password
            Require valid-user
    </Location>
Run Code Online (Sandbox Code Playgroud)

我不认为配置是这种奇怪行为的原因,但更多的是 windows 无法自动响应登录凭据的请求(并且在运行 Vista 和更低版本的机器的情况下,他们甚至无法将它们保存为一些奇怪的原因)。

linux windows webdav

5
推荐指数
1
解决办法
1471
查看次数

来自 Apache 服务器上的 Microsoft-WebDAV-MiniRedir/6.0.6002 用户代理的 PROPFIND 请求,其中 Samba 也在运行

好的,这是上下文。我们在我们的网络中有一个服务器;在服务器上配置了一个 Samba,提供对许多共享的访问;还有和Apache服务器提供其他服务(其中也有WebDav,但对于svn文件夹,所以它们是不同的文件夹)。

在过去的几个月里,我看到一些 Windows 机器会尝试访问(使用 PROPFIND)他们通过 SMB 访问的相同路径。为了清楚起见,有人发出

PROPFIND /share/directory/file
Run Code Online (Sandbox Code Playgroud)

我知道客户会访问的地方

\\server\share\directory\file
Run Code Online (Sandbox Code Playgroud)

由于未在这些目录上启用 WebDAV,因此目前的结果是 405 状态(不允许使用该方法)。

最近几周,我看到来自几台机器的 PROPFIND 激增;病毒扫描没有检测到它们有任何问题,它们似乎表现正常。

如何从这些机器禁用 PROPFIND?这是某个已知问题的信号吗?我怎样才能进一步调查他们?

server-message-block webdav

5
推荐指数
1
解决办法
1万
查看次数

当凭据作为参数传递时,NET USE 命令不会进行身份验证

我正在尝试通过使用NET USE命令将其映射为驱动器来连接到远程 WebDAV 服务器。

NET USE * <domain> /user:<username> <password>
Run Code Online (Sandbox Code Playgroud)

执行此命令会出现以下错误:

发生系统错误 1244。

由于用户尚未通过身份验证,因此未执行所请求的操作。

但是当我执行时

NET USE * <domain>
Run Code Online (Sandbox Code Playgroud)

它要求输入用户名,然后输入密码。

Enter the user name for <domain>: 
Enter the password for <domain>:
Run Code Online (Sandbox Code Playgroud)

输入后,我现在可以连接到远程位置并映射驱动器。

是什么导致了这个错误?我该如何解决?

这些命令将自动执行,因此我想将凭据作为参数传递,而不是在出现提示时输入。

windows network-share webdav windows-command-prompt net-use

5
推荐指数
1
解决办法
4536
查看次数