参考这主题,我想问一下另一种情况,我们必须将重要文件保存在文档根目录上方的文件夹中以保护重要的用户数据(例如用户图片)。我想问以下问题:-
- 将重要的用户数据文件保存在文档根目录之外是一种好的做法吗?
- 如果是,那么为这样的文件夹定义文件和文件夹权限的最佳方法是什么,以便 apache 可以安全地写入和提供这些文件和文件夹,同时保护服务器的其余部分。
谢谢。
使用收到的上述答复信息重新表述我的问题:
chown -R user:apache /var/www/mysite.com
具有目录结构
( 750) (750)
/var/www/mysite.com/ html () (730)
\ internal\uploads\test.jpg (660)
\ (710)
\scripts\test.php (640)
\ (710)
\functions\fn.php (640)
DOCROOT 是 html。OUTSIDE DOCROOT 是内部。上传存储用户的个人资料照片,并且需要用户 apache 的文件的 g+rw 权限,而文件夹上传需要 w_x 权限。
您是否认为文件夹结构中显示的这些权限是正确的?有了这些权限,我是否应该担心 apache 遍历根目录之外以将文件写入 uploads 中?
答案1
是的。我认为最好将您更改的任何内容(甚至是配置文件)放在不同的分区上,这样您就可以单独备份此分区。您可以使用符号链接和/或“cp”将它们连接在一起。创建一个脚本来执行此操作。
这个问题既简单又难回答:不要为特定文件添加超出需要的权限。如果不需要执行权限,就不要添加。如果文件只需要读取,就不要添加写入权限。永远不要使用,
chmod 777
因为这会完全破坏任何安全性。这是简单的答案。稍微更详细的答案...
如果您使用 ftp/ssh,请为每个人创建一个用户,并将这些用户添加到您为 apache 设置的组(可能
apache
),然后专注于为组设置权限,而不是为单个用户设置权限。对于其他人,我总是禁用权限。原因:如果另一个人抱怨禁止该人做某事,您就知道这是与该用户的组设置有关的问题。这使得它很容易修复。如果服务器是单用户设置,您可以专注于设置 apache 使用的用户权限,并可以降低组的权限。但是,您也可以对 1 个用户使用组方法。
为用户设置通用的第一种方法(f 代表文件,d 代表目录):
find /var/www/ -type f -print0 | xargs -0 chmod 640 find /var/www/ -type d -print0 | xargs -0 chmod 750
这将禁用“其他”。如果您想使用组,请将其更改为 460 或 660 和 570 或 770(其中第二对也启用用户)。如果其中有任何
/var/www/
需要执行的文件,它们不应该在那里,因此您将使用此设置捕获它们(它们应该在cgi-bin/
之外的目录中/var/www/
)。如果您使用组,您可以将普通用户添加到 apache 组。
我自己不会使用管理员用户,而是使用专门的用户来维护网站。保留管理员以备紧急情况和设置。