GNU/Linux >> Belajar Linux >  >> Linux

Apache Tidak Dapat Mengakses File Saat Memiliki Izin?

Saya tidak ingin mengizinkan akses baca orang lain, jadi saya telah menambahkan pengguna saya dan apache pengguna ke grup yang disebut apachme dan kemudian atur grup itu ke semua file dan folder yang saya inginkan apache untuk memiliki akses ke, termasuk akar halaman web. Saya kemudian memberi grup dan pemilik semua izin. Setelah apache ini masih tidak dapat mengakses file tanpa mengatur izin baca untuk mengizinkan semua (rwxrwxr--(0774) ).

Folder yang berisi file indeks, itu milik apache dengan grup apachme dan izin rwxrwxr-x(0775)

dengan ini saya mendapatkan kesalahan 500, mengubahnya menjadi 0774 akan membiarkannya berjalan dengan baik

Ini hanya untuk mengonfirmasi apache pengguna apa yang sedang berjalan dan bahwa itu telah ditambahkan ke grup.

Jawaban yang Diterima:

Dari sudut pandang keamanan, bukanlah ide yang baik untuk mengatur halaman web dengan pengguna Apache yang sama. Pengguna Apache harus dapat membaca halaman web, tetapi tidak dapat menulisnya.

Dengan demikian, dalam konfigurasi standar, adalah normal jika struktur web dapat dibaca oleh semua orang, dan ketika ada kebutuhan untuk menulis, biasanya dapat ditulis oleh pengguna Apache, yang merupakan mimpi buruk keamanan.

Salah satu strategi untuk menghindarinya adalah menginstal/menggunakan mod_ruid2. https://github.com/mind04/mod-ruid2

Adapun Debian, cukup melakukan:

apt-get install libapache2-mod-ruid2

Harap dicatat pengguna default Apache bervariasi dengan distribusi. Di Debian, ini adalah www-data, di RH/CentOS adalah apache, dan di SuSE, wwwrun. Saya akan merujuknya mulai sekarang sebagai pengguna default Apache.

Jika Anda tidak mendefinisikan arahan apa pun di vhost, itu akan berperilaku dengan cara tradisional; jika tidak, perilakunya akan berubah.

Idenya adalah menjalankan proses di vhost dengan pengguna yang memiliki hak atas vhost, dan dengan demikian, file akan memiliki kepemilikan itu, dan seperti yang Anda inginkan, pengguna lain tidak akan dapat membacanya. Biasanya Anda menentukan pengguna per vhost.

Dalam arahan Virtualhost atau Direktori di vhost, Anda menentukan pengguna dan grup yang akan aktif untuk direktori itu. User:usergroup adalah izin efektif yang akan digunakan Apache saat mengakses Host/direktori Virtual, dan dengan demikian, setiap pengguna yang termasuk dalam grup tersebut akan dapat menulis/melihat direktori.

    <Directory "/vhostdir/">
            RMode config
            RUidGid user usergroup

    ....

Dengan demikian, saat menulis direktori, sekarang file dapat dibuat sebagai 660 dengan kepemilikan user:usergroup jika dikelola oleh sekelompok pengguna. Demikian pula, file juga dapat dibuat oleh pengguna lain dengan izin membaca untuk dunia; namun untuk menulis, itu bukan pengguna default Apache, melainkan pengguna lain ini.

Kelebihan mod_ruid2 adalah:

  • di lingkungan perumahan hosting virtual, pengguna tidak dapat membaca file pengguna lain;
  • dalam satu pengguna, Anda masih dapat membuat file sebagai pengguna lain, dan baik pengguna default Apache, maupun pengguna ruid2 tidak akan dapat menimpanya
  • yang lebih penting, file tertulis sekarang akan dilakukan dengan pengguna ruid2, dan tidak lagi secara global dengan pengguna default Apache.
Terkait:Centos – Bagaimana cara mengecilkan sistem file root tanpa mem-boot livecd?

Dari halaman github:

TENTANG mod_ruid2 adalah modul suexec untuk apache 2.0, 2.2 dan 2.4, berdasarkan
pada mod_ruid dan mod_suid2

-ini hanya berjalan di Linux karena hanya kernel Linux yang mengimplementasikan kemampuan proses yang diperlukan.
-Ini memiliki kinerja yang lebih baik daripada mod_suid2 karena tidak perlu membunuh anak-anak httpd setelah satu permintaan. itu menggunakan kapabilites
kernel dan setelah menerima permintaan baru suids lagi.
-ada beberapa masalah keamanan, misalnya jika penyerang berhasil mengeksploitasi proses httpd, ia dapat mengatur kemampuan yang efektif dan
setuid ke root. saya sarankan untuk menggunakan beberapa patch keamanan di kernel
(grsec), atau sesuatu..

-ada dua mode operasi utama:stat dan config
1. config adalah default, Anda harus mendefinisikan uid dan gid. Jika tidak ada [ug]id yang ditentukan, pengguna dan grup default akan digunakan.

  1. stat httpd setuid dan setgid ke uid dan gid dari nama file(script)/direktori yang diminta ini bagus jika Anda menggunakan mod_vhost_alias
    untuk hosting virtual

INSTALL
1. unduh dan instal libcap terbaru dari sini
2. jalankan /apachedir/bin/apxs -a -i -l cap -c mod_ruid2.c
3. konfigurasikan httpd.conf
4. restart apache

OPSI KONFIGURASI:RMode config|stat (default adalah config) RUidGid
user|#uid group|#gid – ketika RMode adalah config, set ke uid dan gid ini

RMinUidGid user|#uid group|#gid – ketika uid/gid disetel ke default uid/gid RDefaultUidGid user|#uid group|#gid

RGroups group1 group2 – grup tambahan diatur melalui setgroups @none –
hapus semua grup yang ditentukan sebelumnya.

RDocumentChrRoot – Mengatur direktori chroot dan root dokumen di dalam

CONTOH:

<VirtualHost example.com>    
ServerAdmin [email protected]    
RDocumentChRoot /home /example.com/public_html    
ServerName     example.com    
ServerAlias    www.example.com    
RMode          config     # unnecessary since config is the default    
RUidGid        user1 group1    
RGroups        apachetmp

<Directory /home/example.com/public_html/dir>
   RMode stat    </Directory>

<Directory /home/example.com/public_html/dir/test>
   RMode config
   RUidGid user2 group2
   RGroups groups1    </Directory>

<Directory /home/example.com/public_html/dir/test/123>
   RUidGid user3 group3    </Directory>

<Location /yustadir>
   RMode config
   RUidGid user4 user4
   RGroups groups4    </Location>


Linux
  1. [CentOS 7 Apache]:Izin ditolak:izin file menolak akses server

  2. Pemantauan Akses File Linux?

  3. 'cat':Tidak Dapat Membuka File:Izin Ditolak?

  1. Berikan akses sudo di Debian dan sistem operasi Ubuntu

  2. Berikan akses sudo di RHEL dan CentOS

  3. Cara mengoptimalkan cache file statis Apache di Ubuntu 18.04

  1. Konsep izin file Linux

  2. Cara Mengaudit Akses File di Linux

  3. Konversikan file ke PDF menggunakan LibreOffice di bawah user apache (yaitu saat menggunakan PHP)