Saya relatif baru dalam pengembangan web, jadi harap bersabar.
Saya terutama adalah pengembang iPhone, tetapi baru-baru ini melakukan situs untuk orang lain menggunakan hosting bersama. Saya bisa menulis ke file dalam PHP di situs itu dengan baik, tanpa harus memikirkan izin.
Saya sedang dalam proses menyebarkan layanan web untuk aplikasi baru yang saya buat, tetapi itu tidak benar-benar berjalan dengan lancar. Perbedaan paling penting di sini adalah saya menggunakan server orang lain, dan hanya memiliki akses FTP / DB.
Pada dasarnya, saya memiliki banyak file PHP yang membentuk CMS saya, seperti:
mysite.com/admin/manage_news.php
mysite.com/admin/manage_events.php
Script tersebut kemudian mengedit database, atau file. Mereka dapat berinteraksi dengan denda DB, namun, skrip saya tidak dapat menulis ke sistem file. Mereka mungkin, misalnya, mencoba menulis ke file-file berikut:
mysite.com/data/img/event_1.png
mysite.com/data/somefile.txt
Ini bekerja dengan baik pada instalasi MAMP saya (secara lokal), tetapi begitu dikerahkan ke server, PHP memuntahkan kesalahan setiap kali penulisan dilakukan ... sesuatu seperti ini:
Tidak dapat membuka file "../data/img/someimage.png" untuk menulis.
Jadi saya mengirim email ke orang yang menjalankan server, dan dia kembali berkata:
Apakah ini bekerja dengan izin publik? (777)
Dan memang - tapi saya sangat berhati-hati dalam menggunakan izin publik, jadi nonaktifkan segera. Saya mengirim email kepadanya mengatakan "bagaimana saya bisa membuat skrip PHP saya menulis menggunakan izin pengguna standar", dan dia berkata:
Biarkan itu sebagai publik, itu akan baik-baik saja
Saya rasa ini adalah konflik ip di suatu tempat dalam resolusi domain, tapi saya tidak khawatir tentang hal itu.
Saya kemudian mengirim email kepadanya mengatakan "pasti ini tidak aman" atau sesuatu seperti itu, dan dia menjawab sebagai berikut:
kenyataannya adalah ada jutaan situs web, termasuk beberapa situs web yang saya kelola yang memiliki 777 folder, itu hanya cara hidup.
Adakah yang bisa memberi saya ide tentang solusi yang bisa saya berikan kepadanya? Atau apa yang bisa saya lakukan untuk menghindari penggunaan 777? Saya benar-benar tidak suka gagasan folder apa pun di situs / layanan saya dapat ditulis untuk umum.
Saya akan sangat menghargai saran Anda karena saya tahu sedikit tentang server web.
sumber
Jawaban:
Mari kita jabarkan :
Anda memerlukan pengguna yang menjalankan skrip untuk membaca, menjalankan, dan menulis pada direktori, jadi seharusnya:
7 = (r) ead, (w) ritus, e (x) ecute
Pengguna lain yang termasuk dalam kelompok yang sama harus dapat mengeksekusi file php dalam direktori, tetapi tidak menulisnya (karena alasan yang jelas); mereka tidak perlu membaca file PHP. Karena itu, kami perlu memberikan izin eksekusi saja:
1 = e (x) ecute
Sama untuk umum. Sebenarnya, hanya itu yang Anda butuhkan untuk pengguna eksternal yang perlu melihat file php dan statis:
1 = e (x) ecute
Jadi minimal harus:
711
Saya mengkonfirmasi pengaturan di atas dengan konfigurasi saya sendiri, jadi itu harus berfungsi; Namun, ini berada di bawah pengguna web default. Jika Anda mengunggah dengan login selain www, file dan direktori mungkin berada di bawah pengguna yang berbeda. Dalam hal itu, pengguna web default mungkin tidak dapat membaca atau menulis file yang Anda miliki. Pada titik itu, Anda mungkin perlu menambahkan pengguna web default ke grup Anda (sysadmin harus melakukan itu) dan kemudian memberikan izin baca, tulis, dan jalankan untuk pengguna yang termasuk dalam grup:
771
Dan itu mungkin akan berhasil. Entah itu, atau minta sysadmin mengubah kepemilikan pengguna dan grup dari file-file itu menjadi pengguna server web default (tetapi BUKAN IZIN!). Jika itu masih tidak berhasil, contoh keluaran dari izin (sesuatu seperti "ls -la dalam direktori") akan membantu kami memecahkan masalah ini lebih lanjut. Yang mengatakan, selama Anda hanya perlu memberikan izin eksekusi kepada publik ( atau "lainnya"), Anda harus baik-baik saja dari sudut pandang keamanan.
sumber
/data
folder - folder ini berisi skrip PHP yang membentuk layanan web JSON saya, dan banyak gambar yang digunakan untuk konten yang diturunkan di layanan web (dalam/data/img
folder)Orang ini idiot dan ini omong kosong. Hak akses tidak ada hubungannya dengan alamat IP atau resolusi domain, ia hanya menjatuhkan kata-kata.
Mengingat kualitas "administrator" ini, saya akan merekomendasikan untuk meng-host situs Anda di tempat lain karena sangat mungkin situs tersebut dikelola dengan sangat buruk dan tidak aman. Hanya memberi
777
izin pada sesuatu sehingga itu berfungsi adalah tanda yang pasti dia tidak mengerti sedikit pun apa yang dia lakukan.Hak akses apa yang benar-benar diperlukan tergantung pada cara sistem digunakan dan dikonfigurasikan dan agak sulit untuk memberi tahu Anda sesuatu tanpa mengetahui hal ini.
sumber
www-data
dengan700
izin, tapi ini mungkin tidak akan bekerja dalam kasus Anda.Apache/2.2.9 (Debian) PHP/5.2.6-1
www-data
grup, Anda perlu mengubah pengguna / grup setelah transfer atau memang menggunakan777
izin. Tapi ini tidak ada gunanya, kami tidak dapat membantu Anda dengan cara ini.