你如何赋予Apache2用户执行权限而不是其他人?

我有Ubuntu服务器运行,我设置一个单独的目录作为一个CGI斌。 我有目录准备好,我改变了该网站的文件。 但是,为了让它起作用,我需要更改文件夹中的Python脚本的权限,以便Apache可以执行它。 但是,我不想写入或执行除root,me和Apache以外的任何其他用户。 我假设这是可能的,但是怎么做呢?

将文件分配给您的Apache组(通常为www-data),并将权限设置为仅授予用户/组的权限:

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

这样设置,只有www-data用户和组可以写入文件,只有www-data用户可以执行该文件,每个人都可以阅读。

有两种方法可以让人想起。 首先,您可以在其中创build一个包含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 -md: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