允许通过 samba 访问 htdocs 目录

允许通过 samba 访问 htdocs 目录

我设法在 ubuntu 服务器上设置 samba,以便我可以/home/max通过 Windows 浏览我的主目录。

现在我想共享目录/usr/local/apache2/htdocs- 为了在 Windows 和 apache htdocs 目录之间共享文件,我必须做什么?htdocs 目录归 拥有www-data

我对 unix 访问权限还不太熟悉,所以我真的不知道从哪里开始。任何(简单的)解释都值得赞赏。谢谢!

答案1

传统的 Unix 访问权限相当简单。

对于每个文件或目录,您都定义其所有者及其所属组。一个文件或目录只有一个组,但一个用户可以属于多个组。

为每个权限定义权限

  • 所有者
  • 团体
  • 世界

这里相关的主要权限是

  • 写入(包括更新)
  • 执行(如果是文件)或“访问”(如果是目录)

当您使用 ls -l 时,这些权限将按上面建议的顺序列出。例如

rw- r-- --- joe www-data ... example.html

(为清晰起见添加了空格)这意味着

  • 所有者 joe 具有 rw- 权限,可以读取或写入该文件。
  • 组 www-data 的成员具有 r-- 权限,并且只能读取该文件
  • 不属于 www-data 组成员的用户有 --- 权限并且无法读取文件

当您使用 Web 浏览器访问服务器上的文件时,Web 服务器将代表您访问这些文件。后台服务器进程(又称为守护进程)具有与之关联的用户名和组成员身份。通常,Web 用户未经身份验证,因此 Web 服务器 apache 代表您使用其自己的所有者和组。如果 Web 服务器进程使用 www-data 作为其组,那么它将能够读取上述 example.html 并将其提供给 Web 浏览器。

您可以看到 Web 服务器正在使用哪些有效用户和组,如下所示:

$ ps -eo user,group,cmd | grep apache
root     root     /usr/sbin/apache2 -k start
www-data www-data /usr/sbin/apache2 -k start
www-data www-data /usr/sbin/apache2 -k start
www-data www-data /usr/sbin/apache2 -k start

主进程具有全能的 root 权限,但满足 Web 浏览器请求的进程(本例中为三个)具有用户 www-data 和组 www-data。因此,这些进程可以使用组权限读取 example.html 文件

相同的一般原则也适用于 Samba。Samba 服务器进程(例如 smbd)可以使用多种安全配置运行,因此确切的答案取决于您的 Samba 配置文件。

如果您的“htdocs”共享的 samba 配置为“guest account = pcguest”并且用户 pcguest 是组 www-data 的成员,那么它应该能够读取 example.html。

相关内容