Menetapkan izin yang benar untuk mengunggah file

12

Saya memiliki skrip php yang mengunggah file ke direktori yang disebut "unggah". Satu-satunya cara agar unggahan itu berfungsi adalah jika:

chmod 777 uploads

Saya tahu ini tidak benar tetapi saya tidak tahu apa yang harus saya lakukan untuk membuatnya bekerja.

Info server: T1-Micro Amazon Linux AMI 2013.03 di Amazon EC2

Pertanyaan:

  • Bagaimana cara mencari tahu apa yang pengguna perlu akses ... misalnya, apa nama pengguna untuk apache atau server web?

  • Tingkat akses apa yang harus saya berikan dan perintah apa yang akan saya gunakan untuk melakukan itu.

Terima kasih!

Sunting: Saya menemukan banyak jawaban pada stack overflow yang akan saya teliti. Sebagai contoh

/programming/3642241/php-file-upload-permissions

/programming/10842880/setting-permissions-in-php-on-server

/programming/8948537/permission-denied-when-attempting-to-upload-file-with-php

Terima kasih

pemrograman yang menyenangkan
sumber

Jawaban:

20

Coba jalankan:

ps -ef | grep apache

dan lihat kolom paling kiri yang terkait dengan server Apache. Ini adalah pengguna yang menjalankan Apache, dan secara inheren juga PHP.

Ubah kepemilikan direktori unggah ke pengguna ini dan batasi sedikit izin, mis. Jika pengguna server web adalah www-datamilik grup dengan nama yang sama (menggunakan jalur sampel /var/www/uploads):

sudo chown www-data:www-data /var/www/uploads
sudo chmod 755 /var/www/uploads

(atau izin apa pun yang Anda inginkan dalam contoh ini). Saya menggunakan sudodalam contoh perintah - Saya tidak tahu persis bagaimana sistem EC2 diatur dalam hal ini untuk mendapatkan hak pengguna super.

Jika Anda sudah mengunggah file / direktori, Anda mungkin ingin mengubah kepemilikan dan izin juga. Untuk melakukan ini, beralih dari 777ke izin yang lebih masuk akal, Anda dapat menjalankan:

sudo chown -R www-data:www-data /var/www/uploads
sudo chmod -R 755 /var/www/uploads
sudo find /var/www/uploads -type f -exec chmod -x {} \;

Jangan "membabi buta" menjalankan perintah jika Anda tidak memahami setiap bagiannya. Periksa manhalaman jika ada sesuatu yang tidak jelas (itu harus cukup mudah).

Daniel Andersson
sumber
Terima kasih. Ini sangat membantu. apache adalah pengguna. sudo chown dan sudo chmod memerintahkan keduanya berfungsi.
fun_programming
Solusi yang jelas dan mudah, Terima kasih banyak. Sekarang saya tidak perlu izin 777 berisiko lagi
lhrec_106