GNU/Linux >> Belajar Linux >  >> Linux

15 Contoh Perintah SELinux chcon untuk Mengubah Konteks Keamanan

Di SELinux, salah satu tugas yang sering Anda lakukan adalah mengubah konteks keamanan suatu objek. Untuk ini, Anda akan menggunakan perintah chcon.

chcon adalah singkatan dari Change Context.

Perintah ini digunakan untuk mengubah konteks keamanan SELinux dari sebuah file.

Tutorial ini menjelaskan contoh perintah chcon berikut:

  1. Ubah Konteks SELinux Lengkap
  2. Ubah Konteks Menggunakan File Lain sebagai Referensi
  3. Ubah Hanya Pengguna dalam Konteks SELinux
  4. Ubah Hanya Peran dalam Konteks SELinux
  5. Ubah Hanya Jenis dalam Konteks SELinux
  6. Ubah Hanya Rentang (Level) dalam Konteks SELinux
  7. Gabungkan Pengguna, Peran, Jenis, Level di chcon
  8. Perilaku Default Chcon pada Tautan Simbolik
  9. Paksa Ubah Konteks SELinux dari Tautan Simbolik
  10. Ubah Konteks SELinux Secara Rekursif
  11. Tampilkan Detail Verbose dari Operasi chcon
  12. Perilaku Default Chcon pada Tautan Simbolik untuk Rekursif
  13. Paksa chcon untuk Melintasi Tautan Simbolik yang Ditentukan untuk Rekursif
  14. Paksa chcon untuk Melintasi SEMUA tautan Simbolik untuk Rekursif
  15. Perilaku Chcon di / direktori root untuk Perubahan Seluruh Sistem

1. Ubah Konteks SELinux Lengkap

Untuk melihat konteks keamanan suatu file, gunakan opsi -Z (huruf besar Z) pada perintah ls seperti yang ditunjukkan di bawah ini.

# ls -lZ httpd.conf
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 httpd.conf

Pada contoh di atas, konteks keamanan file httpd.conf adalah sebagai berikut:

unconfined_u:object_r:admin_home_t:s0

Itu adalah konteks SELinux yang salah untuk file httpd.conf yang berada di bawah direktori /etc/httpd/conf.

Jadi, untuk mengubah konteks keamanan, gunakan perintah chcon berikut.

# chcon system_u:object_r:httpd_config_t:s0 httpd.conf

Pada contoh di atas, kami telah mengubah konteks keamanan file httpd.conf menjadi berikut, yang benar.

system_u:object_r:httpd_config_t:s0

Kami dapat memverifikasi ini dengan menggunakan perintah ls -lZ berikut.

# ls -lZ httpd.conf
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 httpd.conf

Catatan:Dalam contoh di atas, kami memberikan konteks SELinux lengkap dari sebuah file (yaitu pengguna, peran, jenis, dan rentang) dalam format pengguna:peran:tipe:rentang tanpa memecahnya lebih jauh.

Setiap kali Anda dihadapkan dengan beberapa masalah terkait SELinux, Anda mungkin tergoda untuk Menonaktifkan SELinux saja seperti yang kami jelaskan sebelumnya. Namun, dalam banyak situasi, Anda mungkin menemukan bahwa file yang dimaksud memiliki konteks keamanan yang salah, yang dapat diubah menggunakan perintah chcon.

2. Ubah Konteks Menggunakan File Lain sebagai Referensi

Terkadang Anda mungkin tidak tahu konteks SELinux apa yang harus Anda atur untuk sebuah file.

Dalam hal ini, Anda dapat menggunakan konteks keamanan file lain sebagai referensi, dan menggunakannya untuk menetapkannya ke file Anda.

Pada dasarnya, alih-alih menentukan konteks SELinux lengkap untuk file, Anda hanya menggunakan konteks file lain untuk file Anda.

Pada contoh berikut, kita melihat bahwa ssl.conf dan httpd.conf memiliki konteks SELinux yang berbeda.

# ls -lZ
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 ssl.conf
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 httpd.conf

Dalam hal ini, kita tahu bahwa file ssl.conf memiliki konteks keamanan yang benar. Tapi, httpd.conf salah.

Jadi, kami akan mengubah konteks keamanan file httpd.conf, tetapi kami akan menggunakan konteks ssl.conf sebagai referensi untuk perubahan ini seperti yang ditunjukkan di bawah ini.

# chcon --reference=ssl.conf httpd.conf

Setelah perubahan di atas, Anda dapat melihat bahwa file httpd.conf memiliki konteks keamanan yang sama dengan file ssl.conf.

# ls -lZ
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 ssl.conf
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 httpd.conf

Pada catatan terkait, untuk melihat status SELinux saat ini gunakan perintah sestatus. Penting bagi Anda untuk memahami output dari perintah sestatus seperti yang dijelaskan di sini:3 Output Perintah SELinux sestatus Dijelaskan dengan Contoh

3. Ubah Hanya PENGGUNA dalam Konteks SELinux

Alih-alih mengubah seluruh konteks keamanan SELinux, kami juga dapat mengubah hanya sebagian nilainya.

Berikut ini adalah konteks keamanan file httpd.conf saat ini.

# ls -lZ httpd.conf 
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 httpd.conf

Dalam contoh di atas, “unconfined_u” adalah bagian USER dari konteks keamanan.

Menggunakan opsi chcon -u, kita hanya dapat mengubah bagian pengguna dari konteks keamanan.

Dalam contoh berikut, kami menyetel bagian pengguna dari konteks keamanan ke system_u untuk file httpd.conf.

# chcon -u system_u httpd.conf

Seperti yang Anda lihat dari output berikut, hanya bagian USER dari konteks keamanan yang diubah untuk file httpd.conf.

# ls -lZ httpd.conf
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 httpd.conf

Anda juga dapat menggunakan –user alih-alih -u. Kedua perintah berikut persis sama.

# chcon --user system_u httpd.conf

# chcon -u system_u httpd.conf

4. Ubah Hanya PERAN dalam Konteks SELinux

Menggunakan opsi chcon -r, kita hanya dapat mengubah bagian PERAN dari konteks keamanan.

Dalam contoh berikut, kami menyetel bagian peran dari konteks keamanan ke object_r untuk file httpd.conf.

# chcon -r object_r httpd.conf

Seperti yang Anda lihat dari output berikut, hanya bagian PERAN dari konteks keamanan yang diubah untuk file httpd.conf.

# ls -lZ httpd.conf
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 httpd.conf

Saat Anda memberikan peran yang tidak dikenali oleh SELinux, Anda akan mendapatkan kesalahan argumen tidak valid berikut. Dalam contoh ini, tidak ada peran seperti “identity_r”.

# chcon -r identity_r httpd.conf
chcon: failed to change context of ‘httpd.conf’ to ‘system_u:identity_r:admin_home_t:s0’: Invalid argument

Anda juga dapat menggunakan –role sebagai ganti -r. Kedua perintah berikut persis sama.

# chcon --role object_r httpd.conf

# chcon -r object_r httpd.conf

5. Ubah Hanya TYPE di SELinux Context

Ini mungkin yang paling sering Anda gunakan, karena TYPE adalah yang paling sering kami perhatikan dalam pengaturan SELinux biasa.

Berikut ini adalah konteks keamanan file httpd.conf saat ini.

# ls -lZ httpd.conf 
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 httpd.conf

Dalam contoh di atas, “admin_home_t” adalah bagian TYPE dari konteks keamanan.

Menggunakan opsi chcon -t, kita hanya dapat mengubah tipe bagian dari konteks keamanan.

Dalam contoh berikut, kami menyetel bagian jenis dari konteks keamanan ke httpd_config_t untuk file httpd.conf.

# chcon -t httpd_config_t httpd.conf

Seperti yang Anda lihat dari output berikut, hanya bagian TYPE dari konteks keamanan yang diubah untuk file httpd.conf.

# ls -lZ httpd.conf
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 httpd.conf

Anda juga dapat menggunakan –type alih-alih -t. Kedua perintah berikut persis sama.

# chcon -t httpd_config_t httpd.conf

# chcon --type httpd_config_t httpd.conf

6. Ubah Hanya RANGE (Level) di SELinux Context

Menggunakan opsi chcon -l, kita hanya dapat mengubah bagian RANGE (yang juga disebut sebagai level) dari konteks keamanan. Rentang hanya digunakan di MLS dan dalam situasi umum, kami mungkin tidak mengubah rentang.

Dalam contoh berikut, kami menyetel bagian rentang dari konteks keamanan ke “s0” untuk file httpd.conf.

# chcon -l s0 httpd.conf

Seperti yang Anda lihat dari output berikut, hanya bagian PERAN dari konteks keamanan yang diubah untuk file httpd.conf.

# ls -lZ httpd.conf
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 httpd.conf

Anda juga dapat menggunakan –range sebagai ganti -l. Kedua perintah berikut persis sama.

# chcon -l s0 httpd.conf

# chcon --range s0 httpd.conf

7. Gabungkan Pengguna, Peran, Jenis, Level di chcon

Anda dapat menggabungkan opsi pengguna (-u), peran (-r), jenis (-t), atau level (-l) di chcon.

Misalnya, berikut ini akan mengubah keempatnya seperti yang ditunjukkan di bawah ini.

# chcon -u system_u -r object_r  -t httpd_config_t -l s0 httpd.conf

Atau, Anda dapat mencampur dan mencocokkan dan mengubah hanya beberapa dari mereka sekaligus. Misalnya, pada contoh berikut, kami hanya mengubah USER dan TYPE dari file httpd.conf.

# chcon -u system_u -t httpd_config_t httpd.conf

8. Perilaku Default Chcon pada Tautan Simbolik

Dalam contoh berikut, apache.conf adalah tautan simbolis ke file httpd.conf. Keduanya memiliki konteks keamanan yang salah.

# ls -lZ
lrwxrwxrwx. unconfined_u:object_r:admin_home_t:s0 apache.conf -> httpd.conf
-rw-r--r--. unconfined_u:object_r:admin_home_t:s0 httpd.conf

Dalam contoh berikut, saya mengubah USER dan TYPE untuk tautan simbolis apache.conf.

# chcon -u system_u -t httpd_config_t apache.conf

NAMUN, seperti yang Anda lihat di sini, ini benar-benar mengubah konteks SELinux untuk file yang ditunjuknya alih-alih mengubahnya untuk tautan simbolik.

# ls -lZ
lrwxrwxrwx. unconfined_u:object_r:admin_home_t:s0 apache.conf -> httpd.conf
-rw-r--r--. system_u:object_r:httpd_config_t:s0 httpd.conf

Ini adalah perilaku default dari perintah chcon. yaitu Ini akan mengubah konteks file yang ditunjuknya alih-alih tautan simbolik itu sendiri.

Perilaku ini disebut sebagai de-referensi. Chcon memiliki opsi yang disebut –dereference yang akan mengubah file alih-alih tautan simbolik.

Kedua contoh berikut sama persis.

# chcon -u system_u -t httpd_config_t apache.conf

# chcon --dereference -u system_u -t httpd_config_t apache.conf

9. Paksa Ubah Konteks SELinux dari Tautan Simbolik

Alih-alih mengubah konteks keamanan file yang direferensikan oleh tautan simbolik, Anda juga dapat memaksa chcon untuk mengubah konteks tautan simbolik itu sendiri.

Dalam contoh berikut, apache.conf adalah tautan simbolis ke file httpd.conf. Keduanya memiliki konteks keamanan yang salah.

# ls -lZ
lrwxrwxrwx. unconfined_u:object_r:admin_home_t:s0 apache.conf -> httpd.conf
-rw-r--r--. unconfined_u:object_r:admin_home_t:s0 httpd.conf

Saat kita menentukan opsi –no-dereference di chcon, itu akan mengubah konteks tautan simbolik dan bukan file yang ditunjuknya.

Jadi, contoh berikut akan mengubah USER dan TYPE untuk tautan simbolis apache.conf (dan bukan file httpd.conf).

# chcon --no-dereference -u system_u -t httpd_config_t apache.conf

Seperti yang Anda lihat berikut ini, hanya konteks SELinux dari tautan simbolis apache.conf yang diubah menjadi yang kami tentukan di atas.

# ls -lZ
lrwxrwxrwx. system_u:object_r:httpd_config_t:s0 apache.conf -> httpd.conf
-rw-r--r--. unconfined_u:object_r:admin_home_t:s0 httpd.conf

Alih-alih –no-dereference, kami juga dapat menentukan opsi ‘-h’ seperti yang ditunjukkan di bawah ini.

Kedua perintah berikut persis sama.

# chcon -h -u system_u -t httpd_config_t apache.conf

# chcon --no-dereference -u system_u -t httpd_config_t apache.conf

10. Ubah Konteks SELinux Secara Rekursif

Dalam contoh ini, berikut konteks linux keamanan saat ini dari semua file di bawah conf.d

# ls -lZ conf.d/
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 autoindex.conf
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 nss.conf
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 README
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 userdir.conf
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 welcome.conf

Dengan menggunakan opsi chcon -R recursive, kita dapat mengubah secara rekursif semua file di conf.d ke konteks keamanan yang diberikan seperti yang ditunjukkan di bawah ini.

# chcon -R system_u:object_r:httpd_config_t:s0 conf.d

Seperti yang Anda lihat di bawah, konteksnya berubah secara rekursif untuk semua file di conf.d

# ls -lZ conf.d
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 autoindex.conf
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 nss.conf
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 README
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 userdir.conf
-rw-r--r--. root root system_u:object_r:httpd_config_t:s0 welcome.conf

Catatan:Jika ada sub-direktori lain di dalam conf.d, semua sub-direktori tersebut dan file di bawahnya juga akan terpengaruh oleh opsi -R.

Anda juga dapat menggunakan opsi –rekursif. Kedua perintah berikut persis sama.

# chcon --recursive system_u:object_r:httpd_config_t:s0 conf.d

# chcon -R system_u:object_r:httpd_config_t:s0 conf.d

11. Tampilkan Detail Verbose dari Operasi chcon

Menggunakan opsi -v, Anda dapat menampilkan detail apa yang sedang dilakukan chcon.

-v adalah singkatan dari verbose, yang akan menampilkan nama file yang sedang diproses oleh perintah chcon seperti yang ditunjukkan di bawah ini.

Ini sangat membantu ketika Anda menggabungkan dengan -R opsi rekursif, di mana Anda mungkin mengubah konteks banyak file, dan Anda ingin melihat apa yang sedang dilakukan chcon seperti yang ditunjukkan di bawah ini.

# chcon -Rv system_u:object_r:httpd_config_t:s0 conf.d
changing security context of ‘conf.d/README’
changing security context of ‘conf.d/autoindex.conf’
changing security context of ‘conf.d/userdir.conf’
changing security context of ‘conf.d/welcome.conf’
changing security context of ‘conf.d/nss.conf’
changing security context of ‘conf.d’

12. Perilaku Default Chcon pada Tautan Simbolik untuk Rekursif

Dalam contoh ini, "config" adalah tautan simbolis ke direktori conf.d seperti yang ditunjukkan di bawah ini.

# ls -lZ
drwxr-xr-x. system_u:object_r:httpd_config_t:s0 conf.d
lrwxrwxrwx. unconfined_u:object_r:admin_home_t:s0 config -> conf.d

Secara default ketika Anda melakukan operasi rekursif pada tautan simbolik, itu tidak akan melintasi struktur direktori.

Anda dapat melihat ini dengan menggabungkan opsi -v dengan -R, yang tidak menunjukkan nama file apa pun di output. Ini menunjukkan bahwa itu tidak melintasi tautan simbolik “config”.

# chcon -Rv -t httpd_config_t config
changing security context of ‘configuration’

Perilaku default ini juga dirujuk oleh opsi -P (huruf besar P).

Jadi, kedua perintah berikut persis sama. Keduanya tidak akan melintasi tautan simbolis.

# chcon -Rv -t httpd_config_t config

# chcon -RPv -t httpd_config_t configuration

13. Paksa chcon untuk Melintasi tautan Simbolik yang Ditentukan untuk Rekursif

Dalam contoh ini, "config" adalah tautan simbolis ke direktori conf.d seperti yang ditunjukkan di bawah ini.

# ls -lZ
drwxr-xr-x. system_u:object_r:httpd_config_t:s0 conf.d
lrwxrwxrwx. unconfined_u:object_r:admin_home_t:s0 config -> conf.d

Saat Anda menentukan simbolis dalam perintah chcon, Anda dapat memaksa chcon untuk melintasinya menggunakan opsi -H seperti yang ditunjukkan di bawah ini.

Seperti yang Anda lihat dari output berikut, chcon melintasi tautan simbolik config dan memproses semua file ketika kami menentukan opsi “-H” bersama dengan opsi “-R”.

# chcon -RHv -t httpd_config_t config
changing security context of ‘config/README’
changing security context of ‘config/autoindex.conf’
changing security context of ‘config/userdir.conf’
changing security context of ‘config/welcome.conf’
changing security context of ‘config/nss.conf’
changing security context of ‘config/ndd’
changing security context of ‘config’

14. Paksa chcon untuk Melintasi SEMUA tautan Simbolik untuk Rekursif

Dalam contoh ini, "config" adalah tautan simbolis ke direktori conf.d seperti yang ditunjukkan di bawah ini.

# ls -lZ
drwxr-xr-x. system_u:object_r:httpd_config_t:s0 conf.d
lrwxrwxrwx. unconfined_u:object_r:admin_home_t:s0 config -> conf.d

Pada contoh berikut, di dalam direktori config, kita memiliki direktori “ndd”, yang merupakan tautan simbolik.

# ls -l configuration/ndd
lrwxrwxrwx. 1 root root 6 Jul  8 00:13 configuration/ndd -> ../ndd

Jika Anda ingin perintah chcon melintasi semua tautan simbolik yang ditemuinya selama operasi rekursif, Anda harus menentukan opsi -L.

Opsi berikut telah menggabungkan opsi -L dengan opsi -R. Ini akan melintasi setiap tautan simbolis yang ditemuinya. Misalnya, seperti yang Anda lihat di bawah, ini telah melintasi tautan simbolik “ndd” dan memproses semua file yang sesuai.

# chcon -RLv -t httpd_config_t configuration
changing security context of ‘configuration/README’
changing security context of ‘configuration/autoindex.conf’
changing security context of ‘configuration/userdir.conf’
changing security context of ‘configuration/welcome.conf’
changing security context of ‘configuration/nss.conf’
changing security context of ‘configuration/ndd/nd1-conf’
changing security context of ‘configuration/ndd/nd2-conf’
changing security context of ‘configuration/ndd/nd3-conf’
changing security context of ‘configuration/ndd/nd-main.conf’
changing security context of ‘configuration/ndd’
changing security context of ‘configuration’

Catatan:Saat Anda menentukan opsi -P, atau -H, atau -L (bersama dengan -R), jika karena alasan tertentu, Anda telah menggabungkannya, maka apa pun yang ditentukan sebagai opsi terakhir akan berlaku.

15. Perilaku Chcon di / direktori root untuk Perubahan seluruh Sistem

Secara default, Anda dapat menggunakan chcon untuk mengubah konteks SELinux secara rekursif pada semua file di bawah sistem file root Anda seperti yang ditunjukkan di bawah ini.

Ini disebut jangan pertahankan opsi root (yaitu –no-preserve-root adalah perilaku default)

PERINGATAN:Jangan jalankan perintah ini di sistem Anda. Anda akhirnya akan memiliki sistem yang tidak dapat digunakan. Kedua perintah berikut akan berperilaku persis sama.

chcon -Rv system_u:object_r:httpd_config_t:s0 /

chcon -Rv --no-preserve-root system_u:object_r:httpd_config_t:s0 /

Namun, ini tidak disarankan, kecuali Anda tahu apa yang Anda lakukan, karena Anda tidak ingin konteks SELinux untuk semua file di sistem Anda sama. Jika Anda membuat kesalahan dan menetapkan konteks yang salah ke file, Anda mungkin ingin memahami cara menggunakan perintah restorecon untuk memulihkan konteks SELinux

Saat Anda menentukan opsi –no-preserve-root, opsi tersebut tidak akan melintasi root, saat Anda menetapkannya sebagai opsi baris perintah seperti yang ditunjukkan di bawah ini.

# chcon -Rv --preserve-root system_u:object_r:httpd_config_t:s0 /
chcon: it is dangerous to operate recursively on `/'
chcon: use --no-preserve-root to override this failsafe

Karena perilaku default berbahaya, untuk menghindari kesalahan yang tidak disengaja, kapan pun Anda melakukan -R opsi rekursif pada direktori besar (terutama dari dalam skrip shell), saya sarankan Anda menggunakan –preserve-root. Dengan cara ini secara tidak sengaja jika Anda memberikan / di akhir perintah chcon, itu tidak akan secara tidak sengaja mengubah semua file di sistem Anda.


Linux
  1. 7 Contoh Perintah Linux df

  2. contoh perintah chcon di Linux

  3. sa Contoh Perintah di Linux

  1. w Contoh Perintah di Linux

  2. Contoh Perintah ac di Linux

  3. Contoh Perintah df di Linux

  1. 8 Contoh Perintah Linux TR

  2. 5 Contoh Perintah Sentuh Linux (Cara Mengubah Stempel Waktu File)

  3. du Contoh Perintah di Linux