GNU/Linux >> Belajar Linux >  >> Linux

10 Contoh Perintah restorecon Linux untuk Mengembalikan Konteks SELinux

Di server Linux Anda, memiliki konteks keamanan SELinux yang tepat untuk file dan direktori sangatlah penting.

Ketika Anda menambahkan file kustom Anda ke direktori yang sudah dikelola oleh kebijakan SELinux, dan jika file kustom Anda tidak memiliki konteks SELinux yang tepat, maka Anda tidak akan mendapatkan hasil yang diharapkan.

restorecon adalah singkatan dari Restore SELinux Context.

perintah restorecon akan mengatur ulang konteks keamanan SELinux untuk file dan direktori ke nilai defaultnya. Ini hanya akan mengatur ulang atribut type dari konteks SELinux.

Dalam tutorial ini, kami akan menjelaskan cara menggunakan perintah restorecon dengan beberapa contoh praktis.

1. Kembalikan Konteks SELinux dari File

Dalam contoh berikut, file index.html memiliki "user_home_t" dalam konteks SELinux untuk jenisnya. Ini salah, dan Apache tidak akan dapat menyajikan file ini. Anda akan melihat izin ditolak di error_log untuk apache dengan konteks keamanan ini.

# cd /var/www/html

# ls -lZ index.html 
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 index.html

Catatan:Opsi Z (huruf besar Z) pada perintah ls di atas akan menampilkan konteks SELinux untuk file tertentu.

Saat kami menggunakan perintah restorecon, kami benar-benar tidak perlu mengetahui konteks keamanan asli yang benar untuk file tersebut. restorecon akan mencari tahu untuk kami secara otomatis.

Contoh berikut akan mengembalikan konteks keamanan index.html ke nilai yang tepat. Seperti yang Anda lihat di bawah, ia telah mengatur ulang bagian tipe dari konteks SELinux ke "httpd_sys_content_t". Ini adalah tipe yang benar. Sekarang, Apache akan dapat menyajikan file ini tanpa kesalahan.

# restorecon index.html

# ls -lZ index.html 
-rw-rw-r--. centos centos unconfined_u:object_r:httpd_sys_content_t:s0 index.html

2. Tampilkan Perubahan Konteks Keamanan di Layar

Secara default, ketika Anda menjalankan perintah restorecon, itu tidak akan memberi tahu Anda apakah itu mengubah konteks linux keamanan file.

v singkatan dari verbose. Opsi -v akan menampilkan di layar konteks keamanan sebelumnya dan konteks selinux yang baru diubah seperti yang ditunjukkan di bawah ini.

# restorecon -v index.html 
restorecon reset /var/www/html/index.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

3. Gunakan wildcard untuk Memproses Banyak Objek

Sama seperti perintah Linux lainnya, Anda juga dapat menggunakan wildcard untuk nama file seperti yang ditunjukkan di bawah ini.

Ini akan mempengaruhi semua file yang diakhiri dengan ekstensi .html di direktori saat ini

restorecon -v *.html

Ini akan mempengaruhi semua file di bawah direktori saat ini.

restorecon -v *

Ini akan mempengaruhi semua file di bawah direktori /var/www/html.

restorecon -v /var/www/html/*

Ini akan mempengaruhi semua file yang diakhiri dengan .htm (atau) .html (atau) .htm dengan karakter tunggal lainnya di akhir.

restorecon -v *.htm?

4. Memproses File dan Direktori Secara Rekursif

Anda juga dapat mengatur ulang konteks keamanan file secara rekursif. Gunakan opsi -R seperti yang ditunjukkan di bawah ini. Di sini kami menggabungkan opsi R dengan v.

Ini akan mengatur ulang konteks atau semua file di /var/www/html dan di bawah subdirektorinya.

# restorecon -vR /var/www/html
restorecon reset /var/www/html/sales/graph.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

Anda juga dapat menggunakan huruf kecil r untuk rekursif. Berikut ini persis sama dengan perintah di atas.

# restorecon -vr /var/www/html

5. Simpan Daftar File dengan Konteks SELinux yang Salah

Saat Anda mengatur ulang konteks SELinux untuk sekumpulan besar file, jika Anda tertarik untuk melihat hanya file yang diubah, kita dapat menggunakan opsi -v seperti yang dijelaskan sebelumnya. Tapi, ini hanya akan menampilkannya di layar.

Jika Anda ingin menangkap daftar file dengan konteks keamanan yang salah dalam file output, gunakan opsi -o.

o singkatan dari file keluaran.

Dalam contoh berikut, kami menyimpan daftar file yang terpengaruh oleh perintah restorecon di file change.log.

# restorecon -vR -o changed.log /var/www/html
restorecon reset /var/www/html/about.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/contact.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/data.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/index.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/sales context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/sales/graph.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

Seperti yang kami harapkan, file change.log ini akan berisi daftar nama file yang terpengaruh bersama dengan path lengkap seperti yang ditunjukkan di bawah ini.

# cat changed.log
/var/www/html/about.html
/var/www/html/contact.html
/var/www/html/data.html
/var/www/html/index.html
/var/www/html/sales
/var/www/html/sales/graph.html

6. Kembalikan Konteks Berdasarkan File Masukan

Anda juga dapat memulihkan konteks keamanan daftar file yang Anda miliki dari file input.

Berikut ini, di bawah direktori /var/www/html, semua file ini saat ini memiliki konteks keamanan yang salah.

# ls -lZ
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 about.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 contact.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 data.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 index.html
drwxrwxr-x. centos centos unconfined_u:object_r:user_home_t:s0 sales

Buat file input.txt seperti yang ditunjukkan di bawah ini, yang hanya akan memiliki dua file. Di sini harus memberikan menentukan path lengkap dari nama file termasuk direktori.

# cat input.txt
/var/www/html/about.html
/var/www/html/data.html

Untuk menentukan file input ini di restorecon, gunakan opsi -f seperti yang ditunjukkan di bawah ini. Ini akan mengubah konteks SELinux hanya untuk about.html dan data.html seperti yang ditunjukkan di bawah ini.

# restorecon -vf input.txt 
restorecon reset /var/www/html/about.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/data.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

Gunakan perintah ls -lZ untuk memverifikasi bahwa hanya konteks keamanan dua file tersebut yang diubah.

# ls -lZ
-rw-rw-r--. centos centos unconfined_u:object_r:httpd_sys_content_t:s0 about.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 contact.html
-rw-rw-r--. centos centos unconfined_u:object_r:httpd_sys_content_t:s0 data.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 index.html
-rw-r--r--. root   root   unconfined_u:object_r:httpd_sys_content_t:s0 input.txt
drwxrwxr-x. centos centos unconfined_u:object_r:user_home_t:s0 sales

Catatan:Alih-alih menentukan input.txt, Anda juga dapat menentukan – yang akan meminta daftar file input dari input standar.

7. Abaikan File yang Tidak Ada

Dalam contoh berikut, kami telah membuat input.txt yang berisi daftar beberapa file. Kami akan menggunakan daftar ini untuk menyetel ulang konteks keamanan.

# cat input.txt 
/var/www/html/about.html
/var/www/html/meeting.html
/var/www/html/directions.html
/var/www/html/data.html

Namun, seperti yang ditunjukkan di bawah ini, ini akan menampilkan pesan kesalahan ketika file tertentu dalam daftar di atas tidak ada.

# restorecon -f input.txt
restorecon:  lstat(/var/www/html/meeting.html) failed:  No such file or directory
restorecon:  lstat(/var/www/html/directions.html) failed:  No such file or directory

Untuk menghindari ini, Anda dapat menggunakan opsi -i. saya singkatan dari mengabaikan. Seperti yang Anda lihat di bawah, perintah berikut dengan opsi -i tidak memberikan pesan kesalahan apa pun di atas tentang file yang hilang. Ini hanya akan mengabaikan file yang hilang dan melanjutkan dengan sisa file di input.txt.

# restorecon -if input.txt
#

8. Lakukan hanya Dry-Run of Restore SELinux Context

Alih-alih benar-benar mengubah konteks file SELinux, Anda dapat melihat file apa saja yang berpotensi diubah dengan menggunakan opsi -n.

Opsi -n seperti lari kering.

Saat Anda menggunakan ini, ia akan melakukan semua gerakan menjalankan perintah restorecon, tetapi tidak akan benar-benar melakukan apa pun.

Seperti yang Anda lihat di bawah, kami telah menjalankan restorecon dengan opsi -n pada semua file di bawah direktori /var/www/html.

# restorecon -nv /var/www/html/*
restorecon reset /var/www/html/about.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/contact.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/data.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/index.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/sales context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

Meskipun output restorecon di atas menunjukkan bahwa konteks SELinux untuk beberapa file diubah, itu tidak benar-benar melakukan apa-apa, karena kami menggunakan opsi -n.

Ketika Anda melakukan ls -lZ seperti yang ditunjukkan di bawah ini, Anda dapat melihat bahwa konteks SELinux tidak benar-benar berubah.

# ls -lZ /var/www/html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 about.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 contact.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 data.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 index.html
drwxrwxr-x. centos centos unconfined_u:object_r:user_home_t:s0 sales

9. Tampilkan Kemajuan Saat Ini selama Operasi Besar

Saat Anda memulihkan konteks SELinux dari beberapa file, perintah mungkin memerlukan waktu. Jika Anda ingin mengetahui apa yang sedang dilakukan oleh perintah tersebut, Anda dapat menggunakan opsi -p.

Opsi -p akan menampilkan jumlah file yang telah diproses sejauh ini dalam peningkatan 1000 file. p berarti kemajuan.

Seperti yang Anda lihat di bawah, di sini saya mengatur ulang konteks SELinux dari semua file di bawah direktori /var secara rekursif dengan opsi -p.

Ini menunjukkan bahwa sampai sekarang, 2k file (2000 file) sedang diproses.

# restorecon -pr /var
2k

Catatan:Jika Anda mengatur ulang konteks SELinux untuk semua file di sistem operasi Anda menggunakan opsi -p, itu akan menunjukkan persentase selesai saat ini.

10. Kecualikan Direktori yang akan Diproses

Anda juga dapat mengecualikan direktori yang akan diproses menggunakan opsi -e. e singkatan dari Kecualikan.

Dalam contoh berikut, kami memproses semua file di bawah direktori /var/www/html, tetapi mengecualikan file dari sub-direktori /var/www/html/sales.

# restorecon -e /var/www/html/sales -Rv /var/www/html
restorecon reset /var/www/html/about.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/contact.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/data.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/index.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

Harap dicatat bahwa Anda harus menggunakan path lengkap direktori dalam opsi -e. Jika tidak, Anda akan mendapatkan pesan kesalahan berikut.

# restorecon -e sales -Rv /var/www/html
Full path required for exclude: sales.

Anda juga dapat mengecualikan beberapa direktori dengan memberikan beberapa opsi -e seperti yang ditunjukkan di bawah ini.

Berikut ini akan mengecualikan direktori penjualan dan pemasaran dari pemrosesan.

restorecon -e /var/www/html/sales -e /var/www/html/marketing -Rv /var/www/html

Linux
  1. 7 Contoh Perintah Linux df

  2. contoh perintah chcon di Linux

  3. Contoh Perintah setenforce di Linux

  1. Contoh Perintah rm di Linux

  2. Contoh Perintah ps di Linux

  3. restorecon Contoh Perintah di Linux

  1. sa Contoh Perintah di Linux

  2. w Contoh Perintah di Linux

  3. Contoh Perintah ac di Linux