我设法在 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。