允许通过samba访问htdocs目录

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

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

我很新的unix访问权限的东西,所以我真的不知道从哪里开始。 任何(容易)的解释赞赏。 谢谢!

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

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

权限是为每个定义的

  • 所有者
  • 世界

这里相关的主要权限是

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

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

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

(为清楚起见,添加空格)这意味着

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

当您使用Web浏览器访问服务器上的文件时,它是代表您访问这些文件的Web服务器。 后台服务器进程(AKA守护进程)具有与其关联的用户名和组成员关系。 通常情况下,Web用户是未经authentication的,所以Web服务器apache代表您自己的所有者和组。 如果Web服务器进程使用www-data作为组,那么它将能够读取上面的example.html并将其提供给Web浏览器。

你可以看到有效的用户和组的networking服务器是这样使用的:

 $ 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)可以使用多种安全configuration,所以确切的答案取决于你的Sambaconfiguration文件。

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