如何向 Apache2 用户授予执行权限而不向其他所有人授予执行权限?

如何向 Apache2 用户授予执行权限而不向其他所有人授予执行权限?

我正在运行 Ubuntu Server,并且正在设置一个单独的目录作为 cgi-bin。我已经准备好目录,并且更改了站点的文件。但是,为了使其正常工作,我需要更改文件夹中 Python 脚本的权限,以便 Apache 可以执行它。但是,除了 root、我和 Apache 之外,我不想向任何人授予写入或执行访问权限。我假设这是可能的,但是如何做到呢?

答案1

chown将文件保存到您的 Apache 组(通常是 www-data)并设置权限以仅授予用户/组权限:

chown -R www-data:www-data /path/to/cgi-bin
chmod -R 764 /path/to/cgi-bin

这样就只有 www-data 用户和组可以写入文件,并且只有 www-data 用户可以执行该文件,而每个人都可以读取。

答案2

我想到两种方法。首先,您可以创建一个包含您、root 和 apache 的组,并将 cgi-bin 的组所有权更改为:

groupadd web
usermod -a -G web $USER
chgrp web /path/to/cgi-bin && chmod -R 774 /path/to/cgi-bin

或者,您可以使用 ACL 为 apache 添加执行权限:

setfacl -m d:u:apache:rwx /path/to/cgi-bin

这将允许 apache 执行 cgi-bin 下的任何文件,但您需要在文件系统上启用 ACL,并且在查看文件和目录时有时很容易错过它们。

您可以通过修改文件系统默认值并重新挂载文件系统来启用 ACL:

tune2fs -o acl /dev/root/device
mount -o remount,acl /

附加了 ACL 的文件或目录在输出的所有权模式末尾会有一个 + ls -l

drwxr-xr-x+  2 username group    4096 May 21 21:58 tmp

相关内容