Hari ini saya akan mencoba mengkonfigurasi Direktori Pengguna di server Apache. Mengalami masalah yang sulit. Proses konfigurasi, masalah dan solusinya dirangkum sebagai berikut:
1. Konfigurasi konvensional:
Tambahkan web pengguna:
web pengguna tambahan
web sandi
Buat direktori public_html di direktori pengguna web dan atur izin ke 755:
mkdir public_html
chmod 755 public_html -R
Ubah /etc/http/httpd.conf:
#
# UserDir: Nama direktori yang ditambahkan ke beranda pengguna
# direktori jika ~permintaan pengguna diterima.
#
# Jalur ke direktori 'public_html' akun pengguna akhir harus berupa
# dapat diakses oleh userid server web. Ini biasanya berarti ~userid
# harus memiliki izin 711, ~userid/public_html harus memiliki izin
# dari 755, dan dokumen yang terkandung di dalamnya harus dapat dibaca oleh seluruh dunia.
# Jika tidak, klien hanya akan menerima pesan "403 Forbidden".
#
# Lihat juga: http://httpd.apache.org/docs/misc/FAQ.html#forbidden
#
#
# UserDir dinonaktifkan secara default karena dapat mengonfirmasi keberadaan
# nama pengguna pada sistem (tergantung pada direktori home
# izin).
#
#UserDir dinonaktifkan
#
# Untuk mengaktifkan permintaan ke /~user/ untuk melayani public_html pengguna
# direktori, hapus baris "UserDir menonaktifkan" di atas, dan batalkan komentar
# baris berikut sebagai gantinya:
#
UserDir public_html
2. Pengujian dan masalah terjadi:
http://127.0.0.1/~web
================================
Terlarang
Anda tidak memiliki izin untuk mengakses /~web di server ini.
Selain itu, kesalahan 403 Terlarang terjadi saat mencoba menggunakan ErrorDocument untuk menangani permintaan.
--------------------------------------------------- -----------------------------------
Server Apache/2.0.54 (Fedora) pada 127.0.0.1 Port 80
Umumnya ketika masalah ini terjadi, masalah yang terlintas dalam pikiran adalah izin akses direktori. Setelah sekian lama dilakukan pengecekan dan penyesuaian, masalah tersebut belum teratasi. Selama periode ini, saya memikirkan apakah ada masalah dengan Selinux. Saya masuk dan melihat sekeliling, tetapi tidak menemukan apa pun yang berubah. (Fakta selanjutnya membuktikan bahwa terkadang intuisi sangat akurat. Perbedaan antara apakah Anda dapat menemukan jawabannya sering kali terletak pada apakah Anda mendalami intuisi).
3. Solusi untuk masalah tersebut. Setelah sekian lama mencari Apache 403 di Google, akhirnya saya melihat di sebuah blog bahwa penulis mengalami masalah yang persis sama dengan saya: konfigurasi Apache dan direktorinya baik-baik saja, tetapi halamannya bisa. tidak ditampilkan. Solusinya adalah dengan mengubah kontrol akses Selinux menjadi public_html.
Gunakan perintah berikut untuk mengubah atribut keamanan folder
chcon -R -t httpd_user_content_t public_html/
4. Ringkasan pengetahuan terkait:
Pertanyaan Umum Fedora Core 5 SELinux
http://fedora.redhat.com/docs/selinux-faq-fc5/#faq-entry-public_html T: Bagaimana cara membuat direktori public_html pengguna berfungsi di SELinux?
J: Proses ini mengasumsikan bahwa Anda telah mengaktifkan direktori HTML publik pengguna di file konfigurasi Apache Anda, /etc/httpd/conf/httpd.conf. Proses ini hanya mencakup penyajian konten Web statis http://fedora.redhat.com/docs/selinux-apache-fc3/.
Jika Anda belum memiliki direktori ~/public_html, buatlah dan isi dengan file dan folder yang akan disajikan.
cd ~mkdir public_htmlcp /path/ke/content ~/public_html
Pada titik ini, httpd dikonfigurasi untuk menyajikan konten, tetapi Anda masih menerima kesalahan terlarang 403. Ini karena httpd tidak diperbolehkan membaca jenis keamanan untuk direktori dan file karena dibuat di direktori home pengguna konteks keamanan folder dan isinya secara rekursif menggunakan opsi -R:
ls -Z -d public_html/drwxrwxr-x auser auser user_u:object_r:user_home_t public_htmlchcon -R -t httpd_user_content_t public_html/ls -Z -d public_html/drwxrwxr-x auser auser user_u:object_r:httpd_user_content_t public_html/ls -Z public_html/- rw-rw-r-- pengguna auser pengguna_u:object_r:httpd_user_content_t bar.html-rw-rw-r-- pengguna auser user_u:object_r:httpd_user_content_t baz.html-rw-rw-r-- pengguna auser user_u:object_r:httpd_user_content_t foo.html
Anda mungkin akan melihat di kemudian hari bahwa kolom pengguna, yang ditetapkan di sini menjadi user_u, diubah menjadi system_u. Hal ini tidak memengaruhi cara kerja kebijakan yang ditargetkan. Kolom yang penting adalah kolom tipe.
Halaman web statis Anda sekarang harus disajikan dengan benar. Jika Anda terus mengalami kesalahan, pastikan bahwa Boolean yang mengaktifkan direktori home pengguna diaktifkan. Anda dapat mengaturnya menggunakan tingkat keamanan konfigurasi sistem. Pilih tab SELinux, lalu pilih Ubah SELinux Area kebijakan. Pilih Izinkan HTTPD membaca direktori home. Perubahan akan segera berlaku.
Analisis perintah yang digunakan:
ls -Z -d public_html/
#Menampilkan konteks keamanan file/direktori -Z, --context
Tampilkan konteks keamanan sehingga sesuai dengan sebagian besar tampilan. Hanya menampilkan mode, pengguna, grup, konteks keamanan, dan nama file.-d, --direktori
daftar entri direktori alih-alih konten, dan jangan melakukan dereferensi tautan simbolik
chcon -R -t httpd_user_content_t public_html/
#Modifikasi konteks keamanan file/direktori -R, --rekursif
mengubah file dan direktori secara rekursif-t, --type
atur tipe TYPE dalam konteks keamanan target