我正在使用 Apache、CGI(C++)和平面文件(数据)在 Linux 中实现我的简单 web 服务。
我将 WWW 位置路径保存在/usr/share/www/
CGI 位置路径中,将/usr/lib/cgi-bin/
数据位置路径中/usr/share/Data/
我只想通过 Apache 服务器和 CGI 应用程序访问位于 WWW 和 Data 中的文件。有时我会更新 Data 文件,有时我会使用 CGI 应用程序将某些文件从 Data 复制到 WWW 文件夹。 重要的是我的数据文件只能由我的 CGI 应用程序访问无论如何都不能由其他人复制。所以我决定像下面这样授予权限和所有权。但它无法将文件从数据复制到 WWW 文件夹。
sudo chmod 644 -R /usr/share/Data/
sudo chown www-data /usr/share/Data/
使用我的 CGI 应用程序将文件从数据复制到 WWW 不起作用。我应该为上述 3 个位置(WWW、CGI、数据)提供哪些权限才能保护我的 Web 服务。
我的 Apache 配置是,
<VirtualHost *:80>
ServerName www.mytestsite.com
ServerAdmin webmaster@localhost
DocumentRoot /usr/share/www/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin/">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Require all granted
</Directory>
<Directory /usr/share/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet