高峰和用户权限


10

我看到我的用户是apache组的成员。我通过以下方式添加并确认

$ sudo usermod -a -G apache `whoami`  # add my user to apache group
$ sudo chmod -R g+w .                 # permit group members to write 
$ groups `whoami`                     # confirm I'm in the apache group

但是,当我尝试运行drush更新核心甚至drush cron时

$ drush cc all

unlink(sites/default/files/css/css_71ba7c25a8d3c47c68a8e05608ae525c.css):[warning]
Permission denied file.inc:482

在此处输入图片说明

在这种情况下,CSS缓存看起来像

$ ll
total 1536
drwxrwxr-x.  2 apache apache  12288 Nov 26 10:12 .
drwxrwxr-x. 11 apache apache   4096 Nov 24 20:35 ..
-rw-rw-r--   1 apache apache 162269 Nov 26 10:06 css_00d5f4d7c5c92cd4f.css
-rw-rw-r--   1 apache apache 158090 Nov 26 10:02 css_0605989692a2119d305.css
-rw-rw-r--   1 apache apache 162269 Nov 26 10:02 css_0779dcac71ee9aa8e02d9e.css

在此处输入图片说明

我假设具有sudo访问权限的用户帐户应为apache(或www-data)的组成员,并且文件树应允许组写访问。任何帮助或指向正确方向的信息将不胜感激。


2
newgrp apache不带sudo 运行,然后重试
Hamid Nikmehr 2012年

2
您是否注销然后再次登录?
mpdonadio

Answers:


13

可以说,一种更直接的方法是完全不处理用户的组分配,而以Web服务器用户的身份运行drush(即apache,www-data)。

使用sudo:

sudo -u apache drush

或在debian / ubuntu上:

sudo -u www-data drush

创建命令别名:

然后,为确保始终像这样运行drush,请添加一个别名:

echo "alias drush='sudo -u apache drush'" >> ~/.bash_aliases 

或在debian / ubuntu上:

echo "alias drush='sudo -u www-data drush'" >> ~/.bash_aliases 

现在,当运行任何drush命令时,sudo会提示您输入密码,并且该命令将以Web服务器用户身份运行。没有更多的权限问题,读写文件。


1
当我运行“ sudo -u www-data drush”时,它抱怨drush-backups目录不可写。
Magmatic '18 -4-26

1
@Magmatic只是更改该文件夹的权限,使其可用于www-data,检查谁是所有者。
Beto Aveiga '18

3

尽管其他答案很有用,但我现在使用了如下所述的适当用户权限

保护文件权限和所有权

其中以

应该配置服务器文件系统,以使Web服务器(例如Apache)没有编辑或写入文件的权限,然后执行该文件。也就是说,您的所有文件对于Apache进程应为“只读”,并由单独的用户拥有写权限。


3
您链接到的文章没有提到Drush。请您说明一下正在使用哪个用户运行Drush命令以及该用户的设置方式。
JW。

2
有趣!我认为您还应该提到紧随您已经引用的那
两项的

1
在Drupal文件文件夹中,Web服务器需要写入该文件夹,而在开发中,您可能也需要功能文件夹中的文件夹。
Beto Aveiga '18 -4-28

1

当我运行drush时,www-data由于$ PATH已更改,因此drush不再可用。

作为一种解决方法,您可以输入拖拉的整个路径。

例如

sudo -u www-data /home/vagrant/.composer/vendor/bin/drush status

要获取草绘的路径,可以运行:

which drush

这意味着您还可以运行:

sudo -u www-data `which drush` status

这样就无需对命令中的路径进行硬编码。

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.