Bagaimana cara memeriksa grup Apache mana yang dapat saya gunakan untuk server web untuk menulis?

13

Saya mencoba membuat Wordpress berfungsi. Saat ini saya memiliki pesan kesalahan ini:

Could not create directory. /var/www/html/wp-content/upgrade/theme_name

ketika mencoba mengunggah tema. Ini adalah izin yang diatur untuk/var/www/html/wp-content/upgrade/

drwxrwxr-x 3 ec2-user apache 4096 Jun 21 00:30 upgrade

chmod 777 upgrademembuat kesalahan hilang. Tapi itu tidak dianggap praktik terbaik. Namun, saya pikir ini harus bekerja juga ... mengapa tidak?

Saya kira server web mungkin tidak termasuk dalam izin di atas. Grup apa yang harus saya gunakan untuk memungkinkan server web menulis?

(Pengaturan saya adalah Amazon EC2, Amazon Linux AMI dengan httpd)

Jeff Schaller
sumber

Jawaban:

16

Saya tidak tahu apa-apa tentang Amazon EC2, tetapi Anda harus dapat:

  1. Ambil nama pengguna yang menjalankan Apache dengan perintah yang mirip dengan ini:

    ps aux | grep apache # The username should be in the first column.
    
  2. Ambil grup yang menjadi bagian dari pengguna ini dengan groups(1)perintah:

    groups [USERNAME]
    
rahmu
sumber
Kolom pertama adalah apache, dan grup apache mengembalikan apache: apache. Garis dari commmand pertama terlihat seperti ini: apache 11171 0.0 3.4 39984 21516? S Jun20 0:02 / usr / sbin / httpd
1
Apache pengguna jelas memiliki izin untuk menulis di direktori. Anda mengatakan chmod 777selesaikan masalahnya, jadi saya kira Anda menggunakan pengguna lain untuk mengunggah tema Anda. Saya tidak kenal Wordpress dengan baik. Menurut jawaban ini coba ubah kepemilikan ke pengguna www-data.
rahmu
Terima kasih telah meluangkan waktu untuk mencari artikel dan semuanya. Itu memang pengguna yang berbeda, ketika saya menyadari Wordpress menggunakan FTP untuk melakukan tugasnya. Saya menemukan pengguna itu dengan apa yang disarankan di bawah ini dan kemudian menambahkan apache grup, ditemukan pada langkah 1, untuk itu. Itu menyelesaikannya.
2

Anda dapat mencoba menggunakan metode baris perintah berikut untuk mengetahui nama grup Apache Anda:

WWW_GROUP=`ps axo user,group,comm | egrep '(apache|httpd)' | grep -v ^root | cut -d\  -f 2| uniq`
echo Apache group is: $WWW_GROUP

Untuk mendapatkan pengguna, periksa: Cara menentukan pengguna Apache dari baris perintah?

kenorb
sumber
1

Pemutakhiran chmod 777 membuat kesalahan hilang.

Nah, dalam hal ini ls -ld /var/www/html/wp-content/upgrade/theme_nameharus mengungkapkan kredensial pencipta, yang dapat Anda gunakan untuk pemberian akses yang tepat.

Dan lebih baik menggunakan 1777(seperti untuk /tmp) karena setidaknya itu menjamin bahwa hanya pemilik file yang dapat memutuskan tautannya.

poige
sumber
1
Buat kesalahan hilang! Pendekatan yang menarik untuk pemecahan masalah. Ini bukan solusi, itu bohong.
iharob
Apa yang Anda sebut "kebohongan" - mengutip teks penulis asli? :) atau saran untuk setidaknya menggunakan 1777, bukan 777? :) atau mencari tahu kepemilikan pembuat dan menggunakannya untuk "pemberian akses tepat"?
poige
Itu bohong pada sistem, karena 777tidak benar dalam konteks apa pun yang saya tahu.
iharob