Apache文档根目录的最佳权限/所有权


14

我需要一些帮助来设置apache文档根目录的正确权限或所有权。这是我需要的:

  • 存储在不同的网站 /var/www/html/<site>
  • 两个用户应通过ssh更新/管理网站
  • 所有权应不同于apache用户(出于安全性考虑)

我怎样才能做到这一点?目前,所有文件都是世界可写的,这不好。服务器运行CentOS 5.5

谢谢


对于用于确保文档根其他选项的更详细的回答,请参阅serverfault.com/questions/357108/...
奎因Comendant

我认为这是更好地存储在一个单独的位置的每个网站,那么每个系统管理员用户只拥有自己的网站(不要在DocumentRoot的,使用2个虚拟主机把两者),并设置这两个网站的目录作为Apache组的组所有者
的会计师

Answers:


22

建立新群组

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可以修改其内容。


这看起来不错。但是,如果用户创建新文件或复制更新的文件,将会发生什么。这些权限会自动应用吗?还是他每次都需要穿梭和chmod?
Marco Marco

复制的文件保留权限/所有权。新文件的默认文件权限由umask命令处理。此处更多信息osr507doc.sco.com/en/OSUserG/_default_perms_new_file.html
Andy

3
您可以让dir setgid
Webadmin

1
^ +1。快速的方式是:>> chmod 2775 -R / var / www / html /
James Broadhead

@James ta,更新
Andy

2

我更喜欢用-o acl挂载分区。这使您可以使用setfacl命令为文件和文件夹提供细粒度的设置权限,而不仅仅是指定用户组其他权限。

因此,将acl放在/ etc / fstab中的分区行中,或使用mount -o remount,acl / mnt / xy进行重新挂载,然后将您的Web目录的所有权授予没人:nobody。Chmod到770,并使用setfacl仅在需要它的文件夹上授予写权限,例如。向www-data(或您的网络服务器运行的用户)授予上载文件夹的写入权限,并为整个目录向您自己的用户授予写入权限。

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

现在,除了您的网络服务器和您自己的用户之外,没有人可以读取您的文件。您可以写入文件夹中的每个文件,而Web服务器只能写入上传文件夹。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.