Berikut ini adalah pendekatan tutorial untuk kasus SELinux:
Cari tahu apakah SELinux aktif:
$ sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
Jika demikian, beberapa pemeriksaan komparatif mungkin membantu. Misalnya, server memiliki DocumentRoot default di /var/www/html, tetapi kami menginginkannya di tempat lain seperti /path/to/document/root.
Jika SELinux tidak secara aktif mengacaukan sumber daya, ls -dZpada direktori akan muncul sesuatu seperti:
$ ls -dZ /path/to/document/root
? /path/to/document/root/
Di sisi lain, jika konteks SELinux diterapkan, ls -dZlebih mirip:
$ ls -dZ /path/to/document/root
drwxrws--x+ cfgadm cfgadmin system_u:object_r:file_t:s0 /path/to/document/root
Jika kita dibandingkan dengan DocumentRoot yang berfungsi, itu akan terlihat seperti:
$ ls -dZ /var/www/html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
The _rdan _tberhubungan dengan -r( --roledan -t( --type) argumen untuk chconBerikut ini adalah cut-down halaman manual.:
NAME
chcon - change file security context
SYNOPSIS
chcon [OPTION]... CONTEXT FILE...
chcon [OPTION]... [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE...
chcon [OPTION]... --reference=RFILE FILE...
DESCRIPTION
Change the security context of each FILE to CONTEXT. With --reference,
change the security context of each FILE to that of RFILE.
--reference=RFILE
use RFILE's security context rather than specifying a CONTEXT value
-R, --recursive
operate on files and directories recursively
Pada tebakan pertama, yang berikut ini sepertinya berhasil, tetapi mungkin tidak.
$ sudo chcon -R -t httpd_sys_content_t /path/to/document/root
Jika server web masih tidak dapat melihat DocumentRoot, perhatikan bahwa konteks sangat penting untuk kembali ke root:
$ sudo chcon -R -t httpd_sys_content_t /path/to/document
$ sudo chcon -R -t httpd_sys_content_t /path/to
$ sudo chcon -R -t httpd_sys_content_t /path
Pada titik ini, server web dapat melihat direktori.
Ya, saya belajar dengan cara yang sulit malam ini.
CATATAN: Penggunaan chcon secara konseptual memiliki kelemahan per dokumentasi RedHat ( 5.6.1. Perubahan Sementara: chcon ) yang menyatakan:
The chcon command changes the SELinux context for files. However, changes
made with the chcon command do not survive a file system relabel, or the
execution of the restorecon command.
Gunakan semanage dan restorecon untuk membuat perubahan yang lebih permanen. Contoh singkat:
$ sudo semanage fcontext --add -t httpd_sys_content_t -s system_u \
"/path/to/document/root(/.*)?"
$ sudo restorecon -FR /path/to/document/root
Sehubungan dengan restorecon , perhatikan bahwa -F diperlukan untuk mempengaruhi seluruh konteks (yaitu pengguna dan tipe). Juga, -R berarti melakukan perubahan secara rekursif. Argumen -v atau -p dapat menunjukkan kemajuan baik secara verbose atau singkat. Gunakan -FRnv untuk melihat apa yang akan terjadi tanpa benar-benar membuat perubahan.
Setelah semanage digunakan dengan cara ini, dimungkinkan untuk melihat perubahan keamanan lokal dengan perintah seperti:
$ sudo semanage export
Output dari ekspor semanage dapat disimpan dan digunakan oleh impor semanage untuk membuatnya lebih mudah untuk menerapkan satu set perubahan ke berbagai sistem.
CATATAN: Jawaban ini memberikan konteks tipe paling dasar untuk situs. Keamanan bisa jauh lebih terperinci. Misalnya, lihat daftar jenis yang dapat diterapkan ke halaman server web dengan perintah seperti:
$ seinfo -t | grep http
CATATAN: Utilitas seperti semanage dan seinfo mungkin tidak diinstal secara default. Setidaknya pada beberapa distribusi, paket-paket yang diperlukan dapat dinamai seperti ini:
policycoreutils-python
setools-console
DocumentRoot, yang mungkin memberi Anda beberapa wawasan tentang apa yang dilihat server web. Anda mungkin juga ingin memeriksa direktori lain di sepanjang jalan, meskipun jika itu benar-benar di bawah/var/www/itu seharusnya tidak menjadi masalah