我已经尝试安装 TeemIP 大约 6 个多月了,但我一直无法在 Centos7 上解决这个问题。
我得到的错误如下:
目录“/var/www/teemp/public_html/web/log”存在,但应用程序不可写。
TeemIp 需要目录“/var/www/temip/public_html/web/env-product”可写。目录 '/var/www/teemp/public_html/web/env-product' 不存在且 '/var/www/teemp/public_html/web/' 不可写,应用程序无法创建目录 'env-product'在里面。
TeemIp 需要目录“/var/www/temip/public_html/web/env-products-build”可写。目录 '/var/www/teemp/public_html/web/env-product-build' 不存在且 '/var/www/teemp/public_html/web/' 不可写,应用程序无法创建目录 'env-其中的“生产-构建”。
TeemIp 需要目录“/var/www/temip/public_html/web/conf”可写。目录“/var/www/teemp/public_html/web/conf”不存在且“/var/www/teemp/public_html/web/”不可写,应用程序无法在其中创建目录“conf”。
目录“/var/www/teemp/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. [email protected]
#
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 系统的中级或专家级知识。
答案1
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
。
祝你好运!
答案2
我今天遇到了类似的问题,并决定为那些对 SELinux 读/写权限不耐烦的人写一个快速答案。
Getenforce # see current mode.
getsebool -a # find al boolean values
Sudo setenforce 0 # shut it down, but its back at reboot -NOT RECOMMENDED other than debug.
永久解决方案如下。第 2 行可以工作,但无法在重命名和恢复操作中幸存(第 3 行将在此类情况下幸存)。
ls -dZ /var/www/html # See SELinux context of
sudo chcon -R -t httpd_sys_content_t /var/www/html/website-document-root
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
我过去也做过以下操作来授予 apache 写入权限。
Selinux 允许 httpd 读取和写入 /var/www/html/my-project。
sudo chcon -R -t httpd_sys_script_rw_t /var/www/html/my-project/
sudo chcon -R -t httpd_sys_script_rw_t /var/www/my-Symfony-project/var/log/
答案3
解决方案是使用命令“setenforce 0”禁用 SELinux。要永久允许写入此目录并更改文件,请禁用 SELinux 或通过执行以下操作将 SELinux 强制设置为宽松模式:
- 输入命令:“nano /etc/selinux/config”
- 将行“SELINUX=Enforcing”更改为“SELinux=Permissive”或“SELinux=Disabled”(取决于您是否希望 SELinux 记录违反其策略的操作)
- 输入命令:“重新启动”