我需要限制用户目录的权限/home
,以便对于某些帐户,其他用户无法读取文件或进入其中。但我仍然需要授予系统服务对它们的访问权限。
到目前为止我一直使用的方法是chgrp www-data
主目录和chmod o-rx
它们,所以它们看起来像这样
drwxr-x--- user www-data user
但我刚刚发现,如果用户创建了一个~/.forward
文件,postfix 会忽略它并在本地发送邮件。如果我创建了chmod o+rx
目录,.forward
它又可以正常工作。(所以这似乎意味着,与这个答案相反,该文件要么.forward
在 postfix 的本地传送代理接收邮件之前被读取,要么本地传送代理没有以用户身份访问主目录。)
我该如何解决这个问题?如果有其他系统服务需要访问怎么办?
另一种方法可能是进入chgrp some-system-group
目录并确保访问该目录的任何系统服务都在该some-system-group
组中。
这可行吗?这是个坏计划吗?
还有其他更好的方法吗?
答案1
使用经典的 unix 权限,您最终会遇到问题。您可以尝试以下操作:
- 如果支持,请使用 ACL。这样,您可以为
wwww-data
组提供单独的权限。 - 如果这不起作用,您必须尝试阻止对主目录访问的要求:
- 除了经典方法
~/.forward
,也许可以尝试使用筛选过滤或其他传送方法。 - 对于 WWW 内容,您可以修改 Web 服务器配置,使用存储所有用户 Web 目录的备用目录,然后从实际主目录符号链接到该目录。如果您真的想要
~/username
网站,这些天我倾向于到处禁用它们。
- 除了经典方法
答案2
据记载,在默认配置下,postfix 在尝试投递之前会假定邮箱所有者的身份。
具体来说:
通过 ~/.forward 文件进行传递需要收件人的权限。因此,~/.forward 之类的文件必须对收件人可读,并且其父目录需要对收件人具有“执行”权限。
如果这对您不起作用,则您以某种方式弄乱了权限。