สิทธิ์ Drush และผู้ใช้


10

ฉันเห็นว่าผู้ใช้ของฉันเป็นสมาชิกของกลุ่มอาปาเช่ ฉันเพิ่มและยืนยันผ่านทางดังต่อไปนี้

$ 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

อย่างไรก็ตามเมื่อฉันพยายามรัน core update drush หรือ drron 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) และต้นไม้ไฟล์ควรอนุญาตให้กลุ่มเข้าถึงการเขียน ความช่วยเหลือหรือคะแนนในทิศทางที่ถูกต้องจะได้รับการชื่นชมมาก


2
ทำงานnewgrp apacheโดยไม่ต้อง sudo และลองอีกครั้ง
ฮามิด Nikmehr

2
คุณออกจากระบบแล้วกลับเข้ามาใหม่อีกครั้ง?
mpdonadio

คำตอบ:


13

อีกวิธีหนึ่งที่ตรงไปตรงมามากขึ้นคือการไม่ยุ่งกับการมอบหมายกลุ่มของผู้ใช้เลยและเรียกใช้ drush ในฐานะผู้ใช้เว็บเซิร์ฟเวอร์ (เช่น: apache, www-data)

ใช้ sudo:

sudo -u apache drush

หรือบนเดเบียน / อูบุนตู:

sudo -u www-data drush

สร้างนามแฝงคำสั่ง:

จากนั้นเพื่อให้แน่ใจว่าคุณจะใช้งาน drush แบบนั้นเสมอเพิ่ม alias:

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

หรือบนเดเบียน / อูบุนตู:

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

ตอนนี้เมื่อรันคำสั่ง drush คุณจะได้รับพร้อมท์ให้ใส่รหัสผ่านของคุณโดย sudo และคำสั่งจะทำงานเป็นผู้ใช้เว็บเซิร์ฟเวอร์ ไม่มีปัญหาการอนุญาตการอ่านและการเขียนไฟล์


1
เมื่อฉันรัน "sudo -u www-data drush" มันบ่นว่าไดเรกทอรี drush-backups ไม่สามารถเขียนได้
Magmatic

1
@Magmatic เพียงแค่เปลี่ยนการอนุญาตไปยังโฟลเดอร์นั้นทำให้สามารถเขียนได้สำหรับ www-data ตรวจสอบว่าใครเป็นเจ้าของ
Beto Aveiga

3

แม้ว่าคำตอบอื่น ๆ นั้นเป็นข้อมูลฉันก็ใช้สิทธิ์ผู้ใช้ที่เหมาะสมตามที่อธิบายไว้ใน

การรักษาความปลอดภัยการอนุญาตไฟล์และการเป็นเจ้าของ

ซึ่งเปิดด้วย

ควรกำหนดค่าระบบไฟล์เซิร์ฟเวอร์เพื่อให้เว็บเซิร์ฟเวอร์ (เช่น Apache) ไม่ได้รับอนุญาตให้แก้ไขหรือเขียนไฟล์ที่ใช้งาน นั่นคือไฟล์ทั้งหมดของคุณควรเป็น 'อ่านอย่างเดียว' สำหรับกระบวนการ Apache และเป็นเจ้าของสิทธิ์การเขียนโดยผู้ใช้แยกต่างหาก


3
บทความที่คุณเชื่อมโยงไปถึงไม่ได้พูดถึง Drush โปรดอธิบายผู้ใช้ที่คุณกำลังใช้เพื่อเรียกใช้คำสั่ง Drush ได้อย่างไรและผู้ใช้รายนั้นตั้งค่าอย่างไร
เจดับบลิว

2
! ที่น่าสนใจ ฉันคิดว่าคุณควรพูดถึง 2 pargs ที่เป็นไปตามที่คุณยกมาแล้ว ...
Pierre.Vriens

1
ในเว็บไฟล์ Drupal จะต้องสามารถเขียนได้โดย webserver และในการพัฒนาคุณอาจจำเป็นต้องใช้โฟลเดอร์ดังกล่าวด้วย
Beto Aveiga

1

เมื่อฉันวิ่ง drush เป็นwww-datadrush ก็ไม่สามารถใช้ได้อีกต่อไปเป็นของฉัน$ PATH มีการเปลี่ยนแปลง

คุณสามารถเข้าสู่เส้นทางทั้งหมดเพื่อดื่มได้

เช่น

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

ในการรับเส้นทาง drush ของคุณคุณสามารถเรียกใช้:

which drush

ซึ่งหมายความว่าคุณสามารถเรียกใช้:

sudo -u www-data `which drush` status

ซึ่งไม่จำเป็นต้องฮาร์ดโค้ดพา ธ ในคำสั่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.