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


44

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

Answers:


28

我本人可以www-data使用... 将用户添加到组中

sudo adduser {username} www-data

简单有效。不会弄乱配置文件或权限。


6
我一直都这样做,但这不能解决某些权限被拒绝的问题,因为组权限与所有文件的用户权限都不相同。
Kostanos

1
如果CHMOD不允许组写入,则无法解决此问题。
GusDeCooL

对我来说,问题是我有本地安装。当我使用IDE创建文件时,它们具有我的“用户/组”,有时apache无法读取这些文件
Postadelmaga 2014年

仅此一项并不能解决很多权限问题,因为您的主要组通常不是www-data,并且某些php应用程序需要组写权限。(joomla,wordpress)
Eric

2
这不能解决创建文件且www-data无法删除/编辑文件的问题,因为您的主要组不是www-data
billy

56

以超级用户身份编辑以下文件:/ etc / apache2 / envvars

使用命令:

sudo nano /etc/apache2/envvars

如果只有一个用户,则将用户和组更改为您自己,并且您再也不会遇到权限问题。

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

export APACHE_RUN_USER=big_dog
export APACHE_RUN_GROUP=big_dog

哎呀,为此,您可以将该用户更改为当前用户。然后,安装user_dir,您都拥有网站,只有您可以完全控制(除非您对此进行修改)。

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


3
这是一种魅力!谢谢。我唯一要补充的是:sudo chown big_dog.big_dog /var/lock/apache2
Kostanos

3
也可能您需要sudo chown big_dog.big_dog -R /var/log/apache2
Kostanos

在OpenSUSE-风滚草(可能还有其他)上,文件位于/etc/apache2/uid.conf
Dilawar

您不必一定要更改envvars文件,我只是在使用脚本启动Apache之前更新了环境变量。这样,您不会被锁定在单个用户上,而是运行脚本,运行apache的用户。我曾经在脚本中export APACHE_RUN_USER=#$(id -u)提供用户ID并类似地id -g用于组,最后我调用apache来运行。
inblueswithu

1

您为什么要这样做,我过去一直在处理烫发问题,但这是我从今天开始的开发过程:

  • 安装新的Linux机器(虚拟或本地笔记本电脑)
  • 运行标准的sudo apt-get install lamp-server^程序来点亮灯泡
  • 使符号链接到我的主目录,其中项目是这样的:

    ln -s /home/user/html /var/www/html

  • 使符号链接到主机配置文件

    ln -s /home/user/html/Apache-VirtualHosts.conf /etc/apache/sites-enabled/000-default

而已 :)

它的工作方式方面,用户权限或与Apache服务器类似的东西都没有问题,对于mysql,我的处理时间更长。

hth,欢呼


这不能解决大多数其他答案中解决的任何权限问题。
HörmannHH

0

避开“您应该这样做”的问题,您可以通过运行以下命令找到设置Apache用户的位置:

grep www- /etc/apache2/apache2.conf

这是在其中编辑这些实例/etc/apache2/apache2.conf并重新加载Apache(sudo /etc/init.d/apache2 reload)的情况。


apache2.confwww-对我而言不包含任何东西
孟洁(Jiew Meng)2012年

我感觉你的意思是grep -HR "www-" /etc/apache2/。如果您已经知道它在apache2.conf中,则只需编辑该文件。在我的情况下,它不存在,但是在/ etc / apache2 / envvars中,正如Eric的答案所指出的那样。
2014年

那是因为apache.conf寻找${APACHE_RUN_USER}${APACHE_RUN_GROUP}。不www-data直接。
Yahya Uddin

0

创建一个新的用户组webdev并将www-data用户添加到其中。

sudo addgroup webdev
sudo adduser www-data webdev

然后继续,将您的用户添加到该组,并使其成为您的用户的默认组。

sudo adduser {your-user} webdev
sudo addgroup webdev

最后要做的是确保webdev组对文件具有rwx权限

sudo chmod 775 -R /path/to/project

现在唯一可能发生的事情是,例如www-data创建一个新的日志文件,而您不能rwx该文件。


1
与仅将我自己的用户添加到www-data组中相比,这样做的好处是什么,特别是因为我们在谈论开发环境时?
Dan

很好,如果您采用这种方式,并且将775权限设置为例如public_html或/ var / www,则您的开发机上的权限不会有问题。其他方法,让您有其他步骤要做或做不到我想要的那样。因此,我认为,这是在开发机上处理它的最佳方法。对于生产型服务器,我建议使用其他设置。同样,您可以轻松添加用户。
Thomas Venturini 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.