Izin drush dan pengguna


10

Saya melihat bahwa pengguna saya adalah anggota grup apache. Saya menambahkan dan mengkonfirmasi melalui yang berikut ini

$ 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

Namun, ketika saya mencoba untuk menjalankan inti pembaruan drush atau bahkan drron cron

$ drush cc all

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

masukkan deskripsi gambar di sini

Dan sepertinya cache CSS dalam situasi ini

$ 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

masukkan deskripsi gambar di sini

Saya akan berasumsi bahwa akun pengguna saya, yang memiliki akses sudo, harus menjadi anggota grup apache (atau www-data) dan bahwa pohon file harus mengizinkan akses tulis grup. Bantuan atau poin apa pun di arah yang benar akan sangat dihargai.


2
lari newgrp apachetanpa sudo dan coba lagi
Hamid Nikmehr

2
Apakah Anda keluar lalu kembali lagi?
mpdonadio

Jawaban:


13

Dapat diperdebatkan, pendekatan yang jauh lebih mudah adalah tidak membuang tugas grup pengguna Anda sama sekali dan bukannya menjalankan drush sebagai pengguna server web (yaitu: apache, www-data).

Gunakan sudo:

sudo -u apache drush

atau di debian / ubuntu:

sudo -u www-data drush

Buat alias perintah:

Lalu, untuk memastikan Anda selalu menjalankan drush seperti itu, tambahkan alias:

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

atau di debian / ubuntu:

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

Sekarang ketika menjalankan perintah drush, Anda akan dimintai kata sandi oleh sudo, dan perintah itu akan berjalan sebagai pengguna server web. Tidak ada lagi masalah izin membaca dan menulis file.


1
Ketika saya menjalankan "sudo -u www-data drush" itu mengeluh bahwa direktori drush-backup tidak dapat ditulis.
Magmatik

1
@ Magmatic hanya mengubah izin ke folder itu, membuatnya bisa ditulisi untuk data-www, periksa siapa pemiliknya.
Beto Aveiga

3

Meskipun jawaban lainnya informatif, saya sekarang menggunakan izin pengguna yang tepat seperti yang dijelaskan dalam

Mengamankan izin dan kepemilikan file

Yang terbuka dengan

Sistem file server harus dikonfigurasi sehingga server web (mis. Apache) tidak memiliki izin untuk mengedit atau menulis file yang kemudian dieksekusi. Artinya, semua file Anda harus 'hanya baca' untuk proses Apache, dan dimiliki dengan izin menulis oleh pengguna terpisah.


3
Artikel yang Anda tautkan tidak menyebutkan Drush. Bisakah Anda, tolong, jelaskan pengguna mana yang Anda gunakan untuk menjalankan perintah Drush dan bagaimana pengaturan pengguna itu.
JW.

2
Menarik! Saya pikir Anda juga harus menyebutkan 2 pargs yang mengikuti yang sudah Anda kutip ...
Pierre.Vriens

1
Dalam folder file Drupal harus dapat ditulis oleh server web, dan dalam pengembangan Anda mungkin akan memerlukannya untuk folder fitur juga.
Beto Aveiga

1

Ketika saya berlari drush karena www-datadrush tidak lagi tersedia karena $ PATH saya telah berubah .

Sebagai solusinya, Anda dapat memasuki seluruh jalur untuk mabuk.

Misalnya

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

Untuk mendapatkan jalur drush Anda, Anda dapat menjalankan:

which drush

Yang berarti Anda juga bisa menjalankan:

sudo -u www-data `which drush` status

yang menghilangkan kebutuhan untuk mengkodekan jalur pada perintah.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.