網站無法寫入文件或創建目錄
我已經嘗試安裝 TeemIP 大約 6 個多月了,但我一直無法在 Centos7 上解決這個問題。
我得到的錯誤如下:
- 目錄 ‘/var/www/teemip/public_html/web/log’ 存在,但對應用程序不可寫。
- TeemIp 需要目錄 ‘/var/www/teemip/public_html/web/env-production’ 是可寫的。目錄“/var/www/teemip/public_html/web/env-production”不存在且“/var/www/teemip/public_html/web/”不可寫,應用程序無法創建目錄“env-production”在裡面。
- TeemIp 需要目錄 ‘/var/www/teemip/public_html/web/env-production-build’ 是可寫的。目錄’/var/www/teemip/public_html/web/env-production-build’不存在且’/var/www/teemip/public_html/web/‘不可寫,應用程序無法創建目錄’env-生產-建構’裡面。
- TeemIp 需要目錄 ‘/var/www/teemip/public_html/web/conf’ 是可寫的。目錄“/var/www/teemip/public_html/web/conf”不存在且“/var/www/teemip/public_html/web/”不可寫,應用程序無法在其中創建目錄“conf”。
- 目錄 ‘/var/www/teemip/public_html/web/data’ 存在,但對應用程序不可寫。
我為 apache httpd 創建了一個名為 www-data 的使用者和組,權限如下:
[root@TeemIP html]# ls -l total 648 drwxrwsr-x. 3 www-data www-data 24 Apr 7 21:24 addons drwxrwsr-x. 3 www-data www-data 4096 Apr 7 21:24 application -rwxrwxr-x. 1 www-data www-data 245 Apr 7 21:24 approot.inc.php drwxrwsr-x. 3 www-data www-data 4096 Apr 7 21:24 core drwxrwsr-x. 6 www-data www-data 4096 Apr 7 21:24 css drwxrwsr-x. 2 www-data www-data 58 Apr 7 21:24 data drwxrwsr-x. 3 www-data www-data 17 Apr 7 21:24 datamodels drwxrwsr-x. 2 www-data www-data 4096 Apr 7 21:24 dictionaries drwxrwsr-x. 2 www-data www-data 30 Apr 7 21:24 documentation drwxrwsr-x. 2 www-data www-data 24 Apr 7 21:24 extensions drwxrwsr-x. 4 www-data www-data 8192 Apr 7 21:24 images -rwxrwxr-x. 1 www-data www-data 1030 Apr 7 21:24 index.php drwxrwsr-x. 7 www-data www-data 4096 Apr 7 21:24 js drwxrwsr-x. 7 www-data www-data 84 Apr 7 21:24 lib drwxrwsr-x. 2 www-data www-data 58 Apr 7 21:24 log -rwxrwxr-x. 1 www-data www-data 603311 Apr 7 21:24 manifest.xml drwxrwsr-x. 2 www-data www-data 4096 Apr 7 21:24 pages drwxrwsr-x. 3 www-data www-data 55 Apr 7 21:24 portal drwxrwsr-x. 5 www-data www-data 4096 Apr 7 21:24 setup drwxrwsr-x. 5 www-data www-data 73 Apr 7 21:24 sources drwxrwsr-x. 2 www-data www-data 141 Apr 7 21:24 synchro -rwxrwxr-x. 1 www-data www-data 630 Apr 7 21:24 web.config drwxrwsr-x. 2 www-data www-data 4096 Apr 7 21:24 webservices
據我了解,應用程序 TeemIP 正在使用 http 守護程序寫入日誌並創建目錄。httpd.conf 文件包括 www-data 使用者和組,配置如下。
# Dynamic Shared Object (DSO) Support # # To be able to use the functionality of a module which was built as a DSO you # have to place corresponding `LoadModule' lines at this location so the # directives contained in it are actually available _before_ they are used. # Statically compiled modules (those listed by `httpd -l') do not need # to be loaded here. # # Example: # LoadModule foo_module modules/mod_foo.so # Include conf.modules.d/*.conf # # If you wish httpd to run as a different user or group, you must run # httpd as root initially and it will switch. # # User/Group: The name (or #number) of the user/group to run httpd as. # It is usually good practice to create a dedicated user and group for # running httpd, as with most system services. # User www-data Group www-data # 'Main' server configuration # # The directives in this section set up the values used by the 'main' # server, which responds to any requests that aren't handled by a # <VirtualHost> definition. These values also provide defaults for # any <VirtualHost> containers you may define later in the file. # # All of these directives may appear inside <VirtualHost> containers, # in which case these default settings will be overridden for the # virtual host being defined. # # # ServerAdmin: Your address, where problems with the server should be # e-mailed. This address appears on some server-generated pages, such # as error documents. e.g. admin@your-domain.com # ServerAdmin root@localhost # # ServerName gives the name and port that the server uses to identify itself. # This can often be determined automatically, but we recommend you specify
我試過: Apache2權限問題
我還嘗試將使用者和組更改為 sudo 使用者和組,但這並沒有什麼不同。我將 /var/www 目錄的所有者更改為 www-data 並將 /var/www 目錄的權限更改為 775(遞歸)。另外,我專門為 apache 守護程序創建了 www-data 使用者和組,但除了
adduser user
和groupadd group
.如果您需要任何其他資訊,請告訴我。我不知道還能去哪裡看,因為我沒有關於 Linux 系統的中級或專家級知識。
SELinux 的存在是有原因的。它強制執行高於標准文件系統權限的訪問限制,真正使您的伺服器更安全。
您應該嘗試使用 SELinux 強制執行這項工作:-)
您需要確定哪些 TeemIP Web 目錄是只讀的,哪些是 Apache 可寫的。然後,使用https://wiki.centos.org/HowTos/SELinux中的說明(特別是關於重新標記文件的部分
$$ 5.2 $$),相應地重新標記目錄。 您通常會使用
semanage fcontext -a -t httpd_sys_content_t "/<pathspec>(/.*)?"
只讀目錄和semanage fcontext -a -t httpd_sys_rw_content_t "/<pathspec>(/.*)?"
可寫目錄。然後,restorecon -Rv
在 webroot 上執行 a 以查看奇蹟發生。使用
ausearch -ts recent -m avc -i
在許可模式下執行時 (setenforce 0
) 等命令,您可以檢查 SELinux 審核日誌以查找訪問問題。您甚至可以通過將audit2why -a
單個審計日誌條目發布或傳送到audit2why
.一旦 TeemIP 工作而不會觸發 SELinux 審核日誌中的新條目,您就可以開始了:
setenforce 1
.祝你好運!