我需要一些帮助来设置 Apache 文档根目录的正确权限或所有权。以下是我需要的:
- 存储在不同的网站
/var/www/html/<site>
- 两个用户应该通过 ssh 更新/管理网站
- 所有权应该与 Apache 用户不同(出于安全考虑)
我该怎么做?目前所有文件都是全球可写的,这不太好。服务器运行的是 CentOS 5.5
谢谢
答案1
创建新组
groupadd webadmin
将您的用户添加到群组
usermod -a -G webadmin user1
usermod -a -G webadmin user2
更改网站目录的所有权
chown root:webadmin /var/www/html/
更改站点目录的权限
chmod 2775 /var/www/html/ -R
现在任何人都可以读取这些文件(包括 apache 用户),但只有 root 和 webadmin 可以修改其内容。
答案2
我更喜欢使用 -o acl 挂载分区。这样你就可以使用 setfacl 命令为文件和文件夹授予细粒度的权限,而不是仅指定用户-组-其他权限。
因此,将 acl 添加到 /etc/fstab 中的分区行,或使用 mount -o remount,acl /mnt/xy 重新挂载,然后将您的 Web 目录的所有权授予 nobody:nobody。将 Chmod 设置为 770,并使用 setfacl 仅授予需要的文件夹的写入权限,例如,授予 www-data(或您的 Web 服务器以之运行的用户)对上传文件夹的写入权限,并授予您自己的用户对整个目录的写入权限。
mkdir dir
chown nobody:nobody dir
setfacl -m u:www-data:r-x,d:u:www-data:r-x dir
setfacl -m u:www-data:rwx,d:u:www-data:rwx dir/upload
setfacl -m u:youruser:rwx,d:u:youruser:rwx dir
现在除了你的网络服务器和你自己的用户之外,没有人可以读取你的文件。你可以写入文件夹中的每个文件,而网络服务器只能写入上传文件夹。