如何让 Apache 以当前用户身份运行

如何让 Apache 以当前用户身份运行

我认为对于开发机器来说,以当前用户身份运行 Apache 更方便,可以简化权限问题?我该怎么做?我认为是 suexec,但是如何在 Ubuntu+Apache 中配置它?

答案1

以 root 身份编辑以下文件:/etc/apache2/envvars

使用以下命令:

sudo nano /etc/apache2/envvars

如果只有一个用户,则将用户和组更改为您自己,这样您就永远不会再遇到权限问题。

即,如果您仅以用户“big_dog”身份登录并运行服务器:

export APACHE_RUN_USER=big_dog
export APACHE_RUN_GROUP=big_dog

哎呀,我确信你可以以某种方式将该用户更改为当前用户。然后,安装 user_dir,这样你就拥有了只有你才能完全控制的网站(除非你修改它)。

重新启动服务器(如果不确定,只需重新启动或谷歌搜索)就可以了。

答案2

我自己会将用户添加到www-data组中...

sudo adduser {username} www-data

简单有效。无需处理配置文件或权限。

答案3

您可以使用mpm_itk_module模块来完成此操作。

在 Ubuntu 20.04 上安装:

sudo apt install libapache2-mpm-itk

为主文件夹中的站点创建虚拟主机

<VirtualHost codealfa:*>
    ServerName codealfa
    ServerAlias codealfa
    DocumentRoot "/home/codealfa/www"

    <IfModule mpm_itk_module>
        AssignUserId codealfa codealfa
    </IfModule>

    <Directory /home/codealfa/www>
        Options Indexes FollowSymLinks Includes ExecCGI
        DirectoryIndex index.html index.php
        Order deny,allow
        Allow from all
        Require all granted
    </Directory>
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

将您的域名(在本例中我使用用户名作为域名)添加到 /etc/hosts

127.0.0.1    codealfa

重启 Apache

sudo systemctl restart apache2

将所有网站安装在 下的子文件夹下/home/codealfa/www,然后从 在您的浏览器中访问它们http://codealfa/。例如,在 安装一个网站/home/codealfa/www/site1,然后您可以在 的浏览器中查看它http://codealfa/site1/

答案4

如果有人尝试在 Docker 容器上实现这一点,这对我来说是有效的。

创建您自己的用户(非root用户因此id为1000)并授予权限:

ENV MY_USER myUserName
RUN useradd -M -u 1000 $MY_USER \
    && chown -R $MY_USER:$MY_USER /var/run/apache2 \
    && chown -R $MY_USER:$MY_USER /var/log \
    && chown -R $MY_USER:$MY_USER /etc/apache2 \
    && chown -R myuser:myuser /var/lib/apache2
USER $MY_USER
CMD apache2ctl -D FOREGROUND

注意:仅安装完所需的所有 apache 模块后才添加此行。

相关内容