GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengatur izin linux untuk folder WWW?

Solusi 1:

Setelah penelitian lebih lanjut, sepertinya cara lain (mungkin cara yang lebih baik) untuk menjawab ini adalah dengan menyiapkan folder www seperti itu.

  1. sudo usermod -a -G developer user1 (tambahkan setiap pengguna ke grup pengembang)
  2. sudo chgrp -R developer /var/www/site.com/ sehingga pengembang dapat bekerja di sana
  3. sudo chmod -R 2774 /var/www/site.com/ sehingga hanya pengembang yang dapat membuat/mengedit file (lain/dunia dapat membaca)
  4. sudo chgrp -R www-data /var/www/site.com/uploads sehingga www-data (apache/nginx) dapat membuat unggahan.

Sejak git berjalan sesuai panggilan pengguna apa pun, selama pengguna berada di grup "pengembang", mereka harus dapat membuat folder, mengedit file PHP, dan mengelola repositori git.

Catatan:Pada langkah (3):'2' pada 2774 berarti 'mengatur ID Grup' untuk direktori. Ini menyebabkan file baru dan sub direktori yang dibuat di dalamnya mewarisi ID grup dari direktori induk (bukan grup utama pengguna) Referensi:http://en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories

Solusi 2:

Saya tidak yakin apakah itu "benar", tapi inilah yang saya lakukan di server saya:

  • /var/www berisi folder untuk setiap situs web.
  • Setiap situs web memiliki pemilik yang ditunjuk, yang ditetapkan sebagai pemilik semua file dan folder di direktori situs web.
  • Semua pengguna yang memelihara situs web dimasukkan ke dalam grup untuk situs web tersebut.
  • Grup ini disetel sebagai pemilik grup dari semua file dan folder di direktori.
  • File atau folder apa pun yang perlu ditulis oleh server web (mis. PHP) diubah pemiliknya menjadi www-data, pengguna yang menjalankan apache.

Ingatlah bahwa Anda harus mengaktifkan bit eksekusi pada direktori sehingga Anda dapat membuat daftar konten.

Solusi 3:

Setelah melakukan penelitian lebih lanjut, tampaknya git/svn ALAT BUKAN masalah karena dijalankan sebagai pengguna apa pun yang menggunakannya. (Namun, daemon git/svn adalah masalah yang berbeda!) Semua yang saya buat/kloning dengan git memiliki izin saya dan alat git terdaftar di /usr/bin yang cocok dengan tesis ini.

Izin Git terpecahkan.

Izin pengguna tampaknya dapat dipecahkan dengan menambahkan semua pengguna yang memerlukan akses ke direktori www ke www-data grup tempat menjalankan apache (dan nginx).

Jadi sepertinya satu jawaban untuk pertanyaan ini seperti ini:

Secara default /var/www dimiliki oleh root:root dan tidak ada dapat menambah atau mengubah file di sana.

1) Ubah pemilik grup

Pertama kita perlu mengubah grup direktori www agar dimiliki oleh "www-data" daripada grup "root"

sudo chgrp -R www-data /var/www

2) Tambahkan pengguna ke www-data

Kemudian kita perlu menambahkan pengguna saat ini (dan siapa saja) ke grup www-data

sudo usermod -a -G www-data demousername

3) Direktori www CHMOD

Ubah izin sehingga HANYA pemilik (root) dan semua pengguna dalam grup "www-data" dapat rwx (membaca/menulis/mengeksekusi) file dan direktori (bahkan tidak ada orang lain yang dapat mengaksesnya ).

sudo chmod -R 2770 /var/www

Sekarang semua file dan direktori yang dibuat oleh setiap pengguna yang memiliki akses (yaitu di grup "www-data") akan dapat dibaca/ditulis oleh apache dan karenanya php.

Apakah ini benar? Bagaimana dengan file yang dibuat oleh PHP/Ruby - dapatkah pengguna www-data mengaksesnya?

Solusi 4:

Kelekatan bukanlah warisan izin. Kelekatan pada direktori berarti hanya pemilik file, atau pemilik direktori, yang dapat mengganti nama atau menghapus file tersebut di direktori, meskipun izin mengatakan sebaliknya. Jadi 1777 di /tmp/.

Di Unix klasik, tidak ada pewarisan izin berdasarkan sistem file, hanya pada umask proses saat ini. Pada *BSD, atau Linux dengan setgid pada direktori, bidang grup dari file yang baru dibuat akan diatur sama dengan direktori induk. Untuk hal lainnya, Anda perlu melihat ACL, dengan ACL 'default' pada direktori, yang memungkinkan Anda mewarisi izin.

Anda harus mulai dengan mendefinisikan:* apa yang pengguna miliki akses ke sistem* apa model ancaman Anda

Misalnya, jika Anda melakukan hosting web dengan banyak pelanggan dan Anda tidak ingin mereka melihat file satu sama lain, maka Anda dapat menggunakan "webcusts" grup umum untuk semua pengguna tersebut dan mode direktori 0705. Kemudian file dilayani oleh proses server web (bukan di "webcusts") akan melihat izin Lainnya dan diizinkan; pelanggan tidak dapat melihat file satu sama lain dan pengguna dapat mengotak-atik file mereka sendiri. Namun, ini berarti saat Anda mengizinkan CGI atau PHP, Anda memilikinya untuk memastikan bahwa proses berjalan sebagai pengguna tertentu (praktik yang baik, untuk banyak pengguna di satu host, untuk akuntabilitas). Jika tidak, pelanggan dapat mengacaukan file satu sama lain dengan meminta CGI melakukannya.

Namun, jika pengguna run-time untuk situs web sama dengan pemilik situs web, maka Anda memiliki masalah karena tidak dapat melindungi konten dari pelaku penyalahgunaan jika ada lubang keamanan pada skrip. Di situlah host khusus menang, sehingga Anda dapat memiliki pengguna run-time yang berbeda dari pemilik konten statis dan tidak perlu terlalu khawatir tentang interaksi dengan pengguna lain.

Solusi 5:

Saya percaya bahwa cara terbaik untuk melakukannya adalah dengan menggunakan Posix ACL. Mereka nyaman digunakan dan menawarkan semua fungsi yang Anda butuhkan.

http://en.wikipedia.org/wiki/Access_control_list#Filesystem_ACLs


Linux
  1. Mendapatkan File Baru Untuk Mewarisi Izin Grup Di Linux?

  2. Cara Menggunakan Perintah find Linux untuk Menemukan File

  3. Bagaimana cara memindahkan file dan direktori ke folder induk di Linux?

  1. Cara Mengatur Hak Istimewa Sudo untuk Pengguna di Linux

  2. Bagaimana cara kerja izin file untuk pengguna root?

  3. Bagaimana cara memaksa izin khusus untuk file/folder baru di server file Linux?

  1. Cara memeriksa file besar di konsol

  2. Linux – Bagaimana Cara Mengatur Izin File Default Untuk Semua Folder / File Di Direktori?

  3. Bagaimana menemukan semua file yang jarang di Linux