Admin server saya ingin saya menyetel izin menulis publik pada direktori

9

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.

Alex Coplan
sumber
12
Lari dari pria ini dan jangan melihat ke belakang.
user9517
Bukan pilihan ... lihat komentar pada jawaban SvenW ...
Alex Coplan

Jawaban:

13

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.

Rilindo
sumber
2
Seandainya aku bisa menang dua kali.
Wesley
Masalahnya adalah benar-benar bahwa situs web tidak boleh menulis ke file dalam struktur itu sendiri daripada izin itu sendiri.
JamesRyan
Kamu benar. Tergantung pada data, Anda mungkin ingin menulis ke file di luar webroot publik.
Rilindo
Di sini saya menulis ke /datafolder - 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/imgfolder)
Alex Coplan
Jadi, gambar-gambar itu perlu dipublikasikan, lalu? Itu mengklarifikasi hal-hal.
Rilindo
18
Leave it as public, it'll be fine

I reckon it's an ip conflict somewhere in the domain resolution, 
but I'm not worried about it.

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 777izin 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.

Sven
sumber
terima kasih - pemikiran saya sebenarnya tentang izin - saya tidak benar-benar memiliki pilihan untuk menyimpannya di tempat lain karena perusahaan yang saya kembangkan tidak akan membayar untuk itu, dan merekomendasikan saya orang ini dan mengatakan bahwa mereka akan membuatnya untuk lakukan secara gratis - dari apa yang saya tahu saya hanya menjalankan salah satu server virtualnya. Jadi bagaimana cara kerjanya, bagaimana skrip PHP dapat dijalankan sebagai "pengguna" dan karenanya dapat menulis apa pun di situs?
Alex Coplan
Yah, saya akan memberi tahu mereka tentang apa yang mereka dapatkan "gratis". Saya tidak punya banyak pengalaman dengan hosting bersama, jadi saya tidak bisa mengomentari itu. Situs saya semua menjalankan server web Debian dan folder yang perlu ditulis akan dimiliki oleh www-datadengan 700izin, tapi ini mungkin tidak akan bekerja dalam kasus Anda.
Sven
Saya pikir mereka membayarnya untuk situs utama mereka juga jadi itu sebabnya - jika ada bantuan di bagian bawah halaman kesalahan server yang mengatakan iniApache/2.2.9 (Debian) PHP/5.2.6-1
Alex Coplan
juga ini vps tidak dibagikan
Alex Coplan
2
Yah, saya mencoba mencari tahu apa yang izin dan kepemilikan file Anda mungkin ditransfer ke server. Jika itu adalah pengguna yang setidaknya bukan anggota www-datagrup, Anda perlu mengubah pengguna / grup setelah transfer atau memang menggunakan 777izin. Tapi ini tidak ada gunanya, kami tidak dapat membantu Anda dengan cara ini.
Sven