我设置了一个 WebDAV 用户,该用户当前从我的 MySQL 数据库中获取用户名和密码。我为用户提供了使用 WebDAV 上传大文件的选项(这是我目前正在开发的文件共享服务),但我遇到了一个我似乎无法弄清楚的小问题。
首先 - 我将如何处理每个拥有自己的 WebDAV 根的用户,以便他们无法查看其他用户的文件?我已经运行了一个 cronjob,它检查启用了 WebDAV 的所有用户并自动创建具有适当权限的目录。我只需要一些告诉 apache 的方法。
感谢您的帮助,我真的很感激。
我也知道我可以每分钟运行一次 cronjob 来生成我的 apache 配置并重新加载 apache 配置,但这只是有点太多的开销,我想要更多的灵活性。
当用户通过 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 操作不会以不同的用户身份执行。
对此有何想法?谢谢你。
我有一台 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) 我刚刚将我的测试机器从 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) 我正在尝试为我们的用户提供一个 Apache WebDav 空间,他们可以在其中存储他们的日历 (.ics) 文件。我已经运行了 Dav 和 LDAP 身份验证。但是我没有将用户监禁到某些子目录中。毕竟我不希望他们访问彼此的日历文件。
示例:假设用户johndoe登录。然后我想将他的“ / ”路径映射到磁盘上的/var/www/users/johndoe。这样每个用户都有自己的目录。
到目前为止我尝试过的:
用户目录 /var/www/users/*/
但似乎这个目录只是设置了 /~johndoe/ 请求的路径,这不是我想要的。
重写规则 ^/ /users/%{REMOTE_USER} [R]
失败。它可能只是重写了不是我想要的路径。
AliasMatch ^/ /var/www/users/%{REMOTE_USER}/
这应该将路径映射到磁盘上的目录,但 %{REMOTE_USER} 不会扩展。
是否可以将登录用户监禁到某个子目录?提前致谢。
我已经设置了一个具有 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 应该如何工作。
随着可以使用 WebDAV 进行同步的 iOS 应用程序的突然冲击,以及我们对存储在北卡罗来纳州的用户数据不满意(邪恶的 IT 霸主再次袭击),我们正在寻找适用于 iPad 和 iPhone 的 WebDAV 解决方案.
我们需要:
针对 LDAP(首选)、RADIUS 或 Samba 的身份验证
文件服务器上的用户主文件夹的 WebDAV 安装(为了更好的术语),或者可能是他们主文件夹中的文件夹,实际上是安装到其他地方。
文件服务器可以是 Ubuntu(首选)、Windows 或 OS X 上的 Samba。
我们试图避免 Sharepoint 或 Confluance 的复杂性,但如果有一个开箱即用的系统会很棒。
我们提出的最佳解决方案是自制的 PHP/Apache mod_dav 和 mod_rewrite/LDAP 构造,但它确实为网络服务器提供了对文件服务器的完全根访问权限,事实证明这有点不受欢迎!
我有一个通过 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 和更低版本的机器的情况下,他们甚至无法将它们保存为一些奇怪的原因)。
好的,这是上下文。我们在我们的网络中有一个服务器;在服务器上配置了一个 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?这是某个已知问题的信号吗?我怎样才能进一步调查他们?
我正在尝试通过使用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)
输入后,我现在可以连接到远程位置并映射驱动器。
是什么导致了这个错误?我该如何解决?
这些命令将自动执行,因此我想将凭据作为参数传递,而不是在出现提示时输入。
webdav ×10
apache-2.2 ×3
windows ×3
linux ×2
samba ×2
apache-2.4 ×1
apple-ios ×1
cifs ×1
debian ×1
mod-webdav ×1
net-use ×1
security ×1
svn ×1
unc ×1
users ×1
web-server ×1