文件权限和所有权隔离apache上的用户

我需要设置apache2来实现以下function

  • 几个不同的login帐户可以访问自己的文件,并可以随意读/写/replace它们。
  • 每个用户甚至不能读取其他用户文件的内容,或者最好甚至看到他们的文件存在。
  • 所有这些都可以正确访问的Apache和PHP

每个用户都会查看/ var / www / {hostname}网站的不同子目录。 我不能让每个用户看到其他人的文件,因为他们可能包含数据库login详细信息,例如在config.php

如何设置文件权限和文件/目录所有权来实现这一点。

如果我可以给一个以上的帐户访问一组特定的文件,这将是一个奖金。 如果像wordpress这样的自动更新机制在权限设置中正常工作,这将是一个奖金。

我已经看过用户和组的所有权和权限,但似乎无法找出如何实现我所需要的。

欢迎大家提出意见 :)

编辑:这是一个Linux Debian“lenny”系统

  • 使用Apache模块LDAPUserDir使homedir可用。 你需要有一个包含你的用户信息的LDAP服务器。

    LDAPUserDir /home/ LDAPUserDirDNInfo cn=admin,dc=YOURDOMAIN,dc=com PASSWORD LDAPUserDirBaseDN ou=People,dc=YOURDOMAIN,dc=com LDAPUSerDirServer localhost LDAPUserDirFilter "(&(uid=%u)(objectClass=posixAccount))" <Directory /home/*> DAV on Options Indexes FollowSymLinks Includes MultiViews Authtype basic AuthName "YOUHOSTSTANZA" AuthBasicProvider ldap AuthzLDAPAuthoritative off AuthLDAPURL "ldap://localhost" AuthLDAPURL "ldap://localhost:389/ou=People,dc=DOMAIN,dc=com?uid" <Limit GET PUT PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK POST OPTIONS PROPFIND> Require valid-user Order allow,deny Allow from all </Limit> </Directory> 
  • 为了确保apache / php可以在所有这些文件夹中读/写,添加Apache运行的用户(默认情况下是www-data)具有权限,方法是修改这些dir的ACL:

     setfacl -m user:www-data:rwx 
  • 如果您的文件系统/内核不允许ACL,则可以将www-data添加到您的用户所在的组中,并将所有权限设置为0664(文件)和0775(对于dir)。

这可能需要一些弄巧成拙的东西来获得PHP的东西来创build具有正确权限的新文件,甚至可能改变组Apache下运行(再次,默认www-data)到您的用户所在的组。LDAPUserDir默认安装在Debian,所以你必须安装它。