在EC2上使用Apache时,如何允许我的apache用户上传到用户目录?

时间:2010-11-26 07:00:48

标签: linux apache permissions amazon-ec2

我已经设置了Amazon EC2实例。默认情况下,我的apache以组apache的用户apache运行。

我创建了新的ftp用户test并将我的文件上传到/home/test/public_html。然后,我将虚拟主机DocumentRoot配置为指向我的项目,位于/home/test/public_html

当目录归用户test所有时,项目中的上传被拒绝:它会产生权限错误。如果我将目录的所有者更改为apache,则可以正常工作。

如何为apache用户授予超级用户权限,允许其在不更改目录所有者的情况下上传?

2 个答案:

答案 0 :(得分:3)

总是同样的问题。使用用户ftp上传,无权访问用户apache。

我使用文件系统扩展的acls解决了这个问题。

可以将“默认”用户和/或组放到新生成的文件中。

你需要做什么:

  • 将'acl'添加到所需文件系统的挂载选项中。 (在执行此操作之前,请检查您的内核是否配置了posix acl!)
  • 使用命令'setfacl'设置权限(根据您的发行版,您可能需要安装包含'setfacl'的包。)

示例:

首先拥有用户ftp,以便上传

# chown ftp:ftp /var/www/server/htdocs
# ls -la /var/www/server/htdocs/
insgesamt 0
drwxr-xr-x  2 ftp      ftp  40 26. Nov 12:40 .
drwxrwxrwt 15 root     root  360 26. Nov 12:40 ..

接下来设置用户apache的默认值

# setfacl -d -m u:apache:rwx /var/www/server/htdocs
# setfacl -d -m g:apache:rwx /var/www/server/htdocs
# getfacl /var/www/server/htdocs
# file: /var/www/server/htdocs
# owner: ftp
# group: ftp
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:apache:rwx
default:group::r-x
default:group:apache:rwx
default:mask::rwx
default:other::r-x

将文件或directorys放到此目录后,您将看到您有多个访问权限。但请记住,这些权利仅适用于不存在一次的新文件。

# getfacl /var/www/server/htdocs/test.txt

# file: /var/www/server/htdocs/test.txt
# owner: ftp
# group: ftp
user::rw-
user:apache:rwx                 #effective:rw-
group::r-x                      #effective:r--
group:apache:rwx                #effective:rw-
mask::rw-
other::r--

当使用'ls -l'时,你会在权限之后看到一个'+'来告知acl权限:

# ls -la /var/www/server/htdocs
insgesamt 0
drwxr-xr-x+  3 ftp      ftp   80 26. Nov 12:43 .
drwxrwxrwt  15 root     root 360 26. Nov 12:40 ..
drwxrwxr-x+  2 ftp      ftp   40 26. Nov 12:43 test
-rw-rw-r--+  1 ftp      ftp    0 26. Nov 12:43 test.txt

答案 1 :(得分:1)

我会不惜一切代价避免让apache用户拥有root权限。

这将是一个非常严重的安全问题:正是因为服务器可能(更)易受攻击,您通常会为其设置特定用户(此处为'apache'用户),您可以在其中指定仅限于服务器运行所需的权限。

如果Apache用户没有完全权限的问题,您应该通过将相应文件的所有权更改为apache用户来解决这些问题,

chown apache:apache <filename>

或者,通过使它们对更多用户可读/可写/可执行,例如使用

chmod 777 <filename>