Hizmet ve kullanıcı izinleri


10

Kullanıcımın apache grubunun bir üyesi olduğunu görüyorum. Aşağıdakileri ekledim ve onayladım

$ 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

Ancak, bir güncelleme güncellemesi çekirdeği veya hatta drush cron çalıştırmaya çalıştığımda

$ drush cc all

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

resim açıklamasını buraya girin

Ve bu durumda CSS önbelleği

$ 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

resim açıklamasını buraya girin

Sudo erişimi olan kullanıcı hesabımın apache'nin (veya www-data) bir grup üyesi olması ve dosya ağacının grup yazma erişimine izin vermesi gerektiğini varsayabilirim. Doğru yönde herhangi bir yardım veya puan çok takdir edilecektir.


2
newgrp apachesudo olmadan koş ve tekrar dene
Hamid Nikmehr

2
Oturumu kapatıp tekrar girdiniz mi?
mpdonadio

Yanıtlar:


13

Muhtemelen, çok daha basit bir yaklaşım, kullanıcınızın grup atamalarını hiç yapmamak ve bunun yerine web sunucusu kullanıcısı olarak drush çalıştırmaktır (yani: apache, www-data).

Sudo kullan:

sudo -u apache drush

veya debian / ubuntu'da:

sudo -u www-data drush

Komut takma adı oluşturun:

Ardından, her zaman böyle bir şekilde çalıştığınızdan emin olmak için bir takma ad ekleyin:

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

veya debian / ubuntu'da:

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

Şimdi herhangi bir drush komutu çalıştırırken, sudo tarafından parolanız istenecek ve komut web sunucusu kullanıcısı olarak çalışacaktır. Artık izin okuma ve dosya yazma sorunu yok.


1
"Sudo -u www-data drush" çalıştırdığımda, drush-backups dizininin yazılabilir olmadığından şikayet ediyor.
Magmatic

1
@Magmatic sadece bu klasöre izinleri değiştirin, www verileri için yazılabilir yapın, kimin sahibi olduğunu kontrol edin.
Beto Aveiga

3

Diğer cevap bilgilendirici olmasına rağmen, şimdi açıklandığı gibi uygun kullanıcı iznini kullanıyorum

Dosya izinlerini ve sahipliğini koruma

Hangi ile açılır

Sunucu dosya sistemi, web sunucusunun (örn. Apache) daha sonra yürüttüğü dosyaları düzenleme veya yazma iznine sahip olmayacak şekilde yapılandırılmalıdır. Yani, tüm dosyalarınız Apache işlemi için 'salt okunur' olmalı ve ayrı bir kullanıcı tarafından yazma izinlerine sahip olmalıdır.


3
Bağlantı verdiğiniz makale Drush'tan bahsetmiyor. Lütfen, Drush komutlarını çalıştırmak için hangi kullanıcıyı kullandığınızı ve bu kullanıcının nasıl kurulduğunu açıklar mısınız?
JW.

2
İlginç! Sanırım daha önce alıntıladığınız kişiyi takip eden 2 paçavradan da bahsetmelisiniz ...
Pierre.Vriens

1
Drupal dosyalarında klasörün web sunucusu tarafından yazılabilir olması gerekir ve geliştirme sırasında muhtemelen özellikler klasörü için de buna ihtiyacınız olacaktır.
Beto Aveiga

1

Ben $ PATH değişti gibi www-datadrush artık mevcut değildi gibi drush koştu .

Geçici bir çözüm olarak tüm yol boyunca girebilirsiniz.

Örneğin

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

Acelenizin yolunu bulmak için koşabilirsiniz:

which drush

Yani, sadece çalıştırabileceğiniz anlamına gelir:

sudo -u www-data `which drush` status

bu da komuttaki yolu sabit kodlama gereğini ortadan kaldırır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.