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

标签 linux apache permissions amazon-ec2

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

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

当目录由用户test拥有时,在项目中上传被拒绝:它给出权限错误。如果我将目录的所有者更改为 apache,它就可以工作。

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

最佳答案

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

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

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

你必须做什么:

  • 将“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

将文件或目录放入此目录后,您将看到您对它们拥有多个访问权限。但请记住,这些权限仅授予新文件,而不是一次性存在的文件。

# 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

关于linux - 在 EC2 上使用 Apache 时,如何允许我的 apache 用户上传到用户目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4283132/

相关文章:

apache - 上传大于 10mb 的文件 - 通过 Mod_JK 连接的 Apache 2.4 和 JBoss EAP 7

apache - 如何将这 2 个 .htaccess RewriteRules 合并为一个?

apache - 错误 util.Shell - 无法在 Windows 10 的 hadoop 二进制路径中找到 winutils 二进制文件

windows - 通过 WMI(Windows 管理规范)检索另一个用户拥有的进程的命令行参数

node.js - 如何写入全局安装的 Node 模块中的文件?

linux - SSH 并在脚本中运行命令

linux - 脚本中的 cp 不适用于 incron?

linux - 如何获取运行目录中的文件夹列表并将它们分别分配给一个变量?

python - PhantomJS webdriver 的创建导致 Python 中通过 ssh session 的用户输入问题

linux - 如何在 LINUX 中实现 AJAX(交互式)搜索以查找文件?