Drush và quyền người dùng


10

Tôi thấy rằng người dùng của tôi là một thành viên của nhóm apache. Tôi đã thêm và xác nhận thông qua các mục sau

$ 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

Tuy nhiên, khi tôi cố chạy lõi cập nhật drush hoặc thậm chí là cron drush

$ drush cc all

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

nhập mô tả hình ảnh ở đây

Và bộ đệm CSS trong tình huống này trông giống như

$ 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

nhập mô tả hình ảnh ở đây

Tôi cho rằng tài khoản người dùng của tôi, có quyền truy cập sudo, nên là thành viên nhóm của apache (hoặc dữ liệu www) và cây tệp nên cho phép truy cập ghi nhóm. Bất kỳ trợ giúp hoặc điểm theo đúng hướng sẽ được nhiều đánh giá cao.


2
chạy newgrp apachemà không cần sudo và thử lại
Hamid Nikmehr

2
Bạn đã đăng xuất và sau đó trở lại?
mpdonadio

Câu trả lời:


13

Có thể cho rằng, một cách tiếp cận đơn giản hơn nhiều là không thực hiện các bài tập nhóm người dùng của bạn và thay vào đó chạy drush như người dùng máy chủ web (ví dụ: apache, www-data).

Sử dụng sudo:

sudo -u apache drush

hoặc trên debian / ubfox:

sudo -u www-data drush

Tạo một bí danh lệnh:

Sau đó, để đảm bảo rằng bạn luôn chạy drush như thế, hãy thêm một bí danh:

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

hoặc trên debian / ubfox:

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

Bây giờ khi chạy bất kỳ lệnh drush nào, bạn sẽ được nhắc nhập mật khẩu bằng sudo và lệnh sẽ chạy với tư cách là người dùng máy chủ web. Không có quyền vấn đề đọc và ghi tập tin.


1
Khi tôi chạy "sudo -u www-data drush", nó phàn nàn rằng thư mục sao lưu drush không thể ghi được.
Magmatic

1
@Magmatic chỉ cần thay đổi quyền cho thư mục đó, làm cho nó có thể ghi được cho dữ liệu www, kiểm tra ai là chủ sở hữu.
Beto Aveiga

3

Mặc dù câu trả lời khác là thông tin, nhưng bây giờ tôi sử dụng quyền người dùng phù hợp như được mô tả trong

Đảm bảo quyền và quyền sở hữu tệp

Mà mở ra với

Hệ thống tệp máy chủ phải được cấu hình để máy chủ web (ví dụ: Apache) không có quyền chỉnh sửa hoặc ghi các tệp mà sau đó nó thực thi. Nghĩa là, tất cả các tệp của bạn phải là 'chỉ đọc' cho quy trình Apache và được sở hữu với quyền ghi bởi một người dùng riêng.


3
Bài viết mà bạn liên kết đến không đề cập đến Drush. Bạn có thể, xin vui lòng, làm rõ người dùng nào bạn đang sử dụng để chạy các lệnh Drush và cách người dùng đó thiết lập.
JW.

2
Hấp dẫn! Tôi nghĩ bạn cũng nên đề cập đến 2 parg theo sau cái mà bạn đã trích dẫn ...
Pierre.Vriens 16/07/2016

1
Trong thư mục tệp Drupal cần có thể ghi được bởi máy chủ web và trong quá trình phát triển, có thể bạn cũng sẽ cần điều đó cho thư mục tính năng.
Beto Aveiga

1

Khi tôi chạy drush vì www-datadrush không còn nữa vì $ PATH của tôi đã thay đổi .

Như một cách giải quyết, bạn có thể đi vào toàn bộ con đường để say.

Ví dụ

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

Để có được con đường của bạn, bạn có thể chạy:

which drush

Có nghĩa là bạn cũng có thể chạy:

sudo -u www-data `which drush` status

trong đó loại bỏ sự cần thiết phải mã cứng đường dẫn trong lệnh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.