Rumah > Tutorial sistem > LINUX > Prinsip asas kawalan kebenaran Linux

Prinsip asas kawalan kebenaran Linux

王林
Lepaskan: 2023-12-31 15:59:50
ke hadapan
1276 orang telah melayarinya

Artikel ini terutamanya memperkenalkan prinsip asas kawalan kebenaran dalam sistem Linux. Prinsip asas kawalan kebenaran Linux

Model Keselamatan

Dalam sistem Linux, semua operasi kami pada dasarnya adalah proses mengakses fail. Untuk mengakses fail, kita perlu mendapatkan kebenaran akses yang sepadan terlebih dahulu, dan kebenaran akses diperoleh melalui model keselamatan dalam sistem Linux.

Untuk model keselamatan dalam sistem Linux, kita perlu mengetahui dua perkara berikut:

  1. Model keselamatan asal pada sistem Linux dipanggil DAC, yang nama penuhnya ialah Discretionary Access Control, yang diterjemahkan sebagai kawalan akses budi bicara.
  2. Kemudian, model keselamatan baharu telah ditambah dan direka bentuk dipanggil MAC, yang nama penuhnya ialah Kawalan Capaian Mandatori, yang diterjemahkan sebagai kawalan akses mandatori.

Perhatikan bahawa MAC dan DAC tidak saling eksklusif adalah model keselamatan paling asas dan biasanya merupakan mekanisme kawalan akses yang paling biasa digunakan yang mesti dimiliki oleh Linux MAC ialah mekanisme keselamatan yang dipertingkatkan yang dibina pada DAC dan tergolong dalam modul Pilihan. Sebelum akses, sistem Linux biasanya melakukan semakan DAC terlebih dahulu. Jika ia gagal, operasi akan gagal secara langsung jika ia lulus semakan DAC dan sistem menyokong modul MAC, ia kemudian melakukan semakan kebenaran MAC.

Untuk membezakan keduanya, kami memanggil sistem Linux yang menyokong MAC SELinux, yang bermaksud bahawa ia adalah sistem yang dipertingkatkan keselamatan untuk Linux.

Di sini, kita akan bercakap tentang model keselamatan DAC dalam sistem Linux.

Model Keselamatan DAC

Kandungan teras DAC ialah: Dalam Linux, proses secara teorinya mempunyai kebenaran yang sama seperti pengguna yang melaksanakannya. Semua yang terlibat adalah berpusat di sekitar teras ini.

Kawalan Maklumat ID Pengguna dan Kumpulan

Maklumat pengguna, kumpulan, kata laluan

Simpan maklumat pengguna dan kumpulan melalui /etc/passwd dan /etc/group, dan simpan kata laluan serta maklumat perubahannya melalui /etc/shadow, dengan satu rekod setiap baris.

Pengguna dan kumpulan masing-masing diwakili oleh UID dan GID Seorang pengguna boleh tergolong dalam berbilang kumpulan pada masa yang sama Secara lalai, setiap pengguna mesti tergolong dalam GID dengan UID yang sama dan nama yang sama.

Untuk /etc/passwd, setiap medan rekod ialah nama pengguna: Kata laluan (disulitkan dan disimpan dalam /etc/shadow): UID: GID (UID lalai): Komen penerangan: Direktori rumah: Log masuk shell (program pertama yang dijalankan )

Untuk /etc/group, medan setiap rekod ialah: Nama kumpulan: Kata laluan (biasanya tiada kata laluan kumpulan): GID: Senarai pengguna ahli kumpulan (senarai UID pengguna dipisahkan koma)

Untuk /etc/shadow, medan setiap rekod ialah: Nama log masuk: Kata laluan yang disulitkan: Masa pengubahsuaian terakhir: Selang masa minimum: Selang masa maksimum: Masa amaran: Masa tidak aktif:

Contoh

Berikut adalah contoh maklumat pengguna dan kumpulan. Maklumat kata laluan dalam /etc/shadow disulitkan dan disimpan, tiada contoh diberikan.

Prinsip asas kawalan kebenaran Linux

Maklumat kawalan kebenaran fail

Jenis Fail

Jenis fail dalam Linux adalah seperti berikut:

  • Fail biasa, termasuk fail teks dan fail binari, boleh dibuat dengan sentuhan
  • Fail soket, yang digunakan untuk komunikasi rangkaian, biasanya dibuat secara tidak langsung oleh aplikasi semasa pelaksanaan
  • Fail paip ialah paip bernama, bukan paip tidak bernama, dan boleh dibuat dengan mkfifo;
  • Fail aksara dan fail blok ialah kedua-dua fail peranti dan boleh dibuat dengan mknod;
  • Fail pautan ialah fail pautan lembut, bukan fail pautan keras, dan boleh dibuat dengan ln.

Kumpulan Kawalan Akses

Terbahagi kepada tiga kumpulan untuk kawalan:

  • pengguna mengandungi kebenaran yang ditetapkan untuk pemilik fail
  • kumpulan mengandungi kebenaran yang ditetapkan untuk kumpulan fail
  • yang lain termasuk kebenaran yang ditetapkan untuk orang lain

Keizinan boleh dikonfigurasi

Nilai kebenaran biasa (tetapi bukan semua) diberikan di bawah, termasuk:

  • r bermaksud kebenaran membaca.
  • w bermaksud kebenaran menulis.
  • x biasanya untuk fail/direktori boleh laku, menunjukkan bahawa ia mempunyai kebenaran pelaksanaan/carian.
  • s biasanya untuk fail/direktori boleh laku, menunjukkan bahawa ia mempunyai kebenaran untuk memberikan kebenaran kepada pemilik fail Hanya pengguna dan kumpulan kumpulan boleh menetapkan kebenaran ini.
  • t Secara amnya untuk direktori, selepas menetapkan bit melekat, pengguna dengan kebenaran hanya boleh menulis dan memadam fail mereka sendiri, jika tidak, mereka boleh menulis dan memadam semua fail dalam direktori. Sistem lama juga bermaksud bahawa selepas fail boleh laku dijalankan, teks disalin ke kawasan swap untuk meningkatkan kelajuan.

Contoh

Anda boleh menyemak jenis fail dan kebenarannya melalui ls -l, dan mengubah suai kebenaran melalui chmod.

Sebagai contoh,

Prinsip asas kawalan kebenaran Linux

Dalam output, aksara pertama menunjukkan jenis fail, termasuk fail biasa (-), fail direktori (d), fail soket (s), fail paip (p), fail aksara (c), dan fail blok (b ) , fail pautan (l); Bahagian -rwxr-xr-x bermula dari aksara kedua mewakili bit kebenaran fail, dengan jumlah 9 bit.

Untuk fail /usr/bin/qemu-i386, maksud kawalan kebenaran ini ialah:

  1. Rwx dalam bit 2~4 menunjukkan bahawa fail boleh diakses oleh pemiliknya dengan kebenaran r, w atau x.
  2. R-x dalam kedudukan 5~7 menunjukkan bahawa fail boleh diakses oleh pengguna dalam kumpulan yang sama dengan fail dengan keizinan r atau x
  3. R-x dalam bit 8~10 bermakna fail itu boleh diakses oleh pengguna lain yang tidak dikenali dengan keizinan r atau x.

Kebenaran ditetapkan untuk ujian/, ujian2/, ujian3/:

    Kebenaran
  1. r,w,x diwakili oleh satu digit perlapanan untuk setiap kumpulan kawalan kebenaran sebagai contoh: 755 bermaksud rwxr-xr-x.
  2. s,t kebenaran akan dipaparkan dan bukannya kedudukan x; untuk menetapkan kebenaran s,t, anda perlu menambahkan nombor sebelum kumpulan kawalan kebenaran oktal yang digunakan untuk mengawal kebenaran r,w,x digunakan untuk kumpulan pemilik kawalan, t digunakan untuk kawalan lain.
  3. Untuk menetapkan pemilik s, tambah 4, untuk menetapkan kumpulan s, tambah 2, dan untuk menetapkan kebenaran orang lain t, tambah 1 sebagai contoh, apabila menetapkan t untuk ujian/, gunakan 1775, yang bermaksud rwxrwxr-t.
Proses maklumat kawalan kebenaran

Keizinan proses

Untuk proses, atribut berikut berkaitan dengan kebenaran akses fail:

  • id pengguna yang berkesan: UID berkaitan dengan kebenaran fail akses proses (disingkat euid).
  • id kumpulan berkesan: GID berkaitan dengan kebenaran fail akses proses (disingkat egid).
  • id pengguna sebenar: UID (disingkatkan ruid) pengguna yang mencipta proses semasa log masuk ke sistem.
  • id kumpulan sebenar: GID (disingkat rgid) pengguna yang mencipta proses semasa log masuk ke sistem.
  • id pengguna set disimpan: disalin daripada euid.
  • id kumpulan set disimpan: disalin daripada egid.

Contoh

Kita boleh menggunakan ps dan atas untuk memilih dan melihat proses dengan euid dan ruid. Atau gunakan bahagian atas untuk melihat euid dan ruid proses

Contoh dilihat melalui atas:

Masukkan bahagian atas dahulu untuk mendapatkan sesuatu seperti berikut

Prinsip asas kawalan kebenaran Linux

Di sini, pilihan -d digunakan untuk memanjangkan kekerapan penyegaran bahagian atas untuk memudahkan operasi. Seperti yang dapat dilihat di sini, hanya medan PENGGUNA mewakili id ​​pengguna yang berkesan bagi proses yang sepadan.

Buka pilihan paparan id pengguna baca:

a. Semasa arahan atas sedang berjalan, masukkan f, dan anda akan melihat baris yang serupa dengan yang berikut:

b. Masukkan c untuk menghidupkan suis paparan nama pengguna sebenar.

c Akhir sekali, tekan Return untuk kembali ke atas, dan anda akan melihat pilihan id pengguna sebenar. Masukkan `o` pada masa ini untuk melaraskan susunan lajur. Akhir sekali, kita dapat melihat output termasuk `id pengguna berkesan` dan `id pengguna sebenar` seperti berikut:

Strategi kawalan kebenaran untuk fail akses proses

Peraturan

Strategi kawalan kebenaran kasar untuk fail akses proses

Untuk proses mengakses fail, perkara yang paling penting ialah euid, jadi atribut kebenarannya semuanya berpusat pada euid.

  • Euid proses secara amnya lalai kepada nilai ruidnya
  • Jika bit kebenaran boleh laku bagi fail boleh laku ialah s, selepas proses memanggil exec padanya, euidnya ditetapkan kepada id pengguna fail boleh laku
  • Id pengguna set yang disimpan bagi proses itu disalin daripada euid.
  • Apabila euid proses sepadan dengan id pengguna fail, proses hanya mempunyai kebenaran yang ditetapkan oleh bit kebenaran pengguna fail
  • Peraturan kawalan untuk kebenaran kumpulan egid adalah serupa.

Ubah suai atribut kebenaran melalui pelaksanaan fail exec

Apabila memanggil fail boleh laku melalui exec:

  • Nilai ruid proses sentiasa kekal tidak berubah
  • ID pengguna set yang disimpan sentiasa datang dari euid ;
  • Nilai euid bergantung pada sama ada bit set-user-ID fail ditetapkan.

Seperti berikut:

Ubah suai atribut kebenaran melalui panggilan sistem setuid(uid)

Apabila mengubah suai atribut kebenaran melalui setuid(uid):

  • superuser boleh mengubah suai dengan lancar, euid, set-user ID yang disimpan;
  • Pengguna yang tidak bernasib baik hanya boleh mengubah suai euid apabila uid dan ruid adalah sama, jika tidak, ia tidak boleh diubah suai.

Contoh

Beberapa lagi contoh istimewa:

set-user-id

Prinsip asas kawalan kebenaran Linux

Seperti yang dinyatakan sebelum ini, maksud output ini ialah, untuk fail /usr/bin/sudo,

  • Rws dalam bit 1~3 bermakna fail boleh diakses oleh pemiliknya dengan kebenaran r atau w atau s
  • R-x dalam bit 4~6 menunjukkan bahawa fail boleh diakses oleh pengguna dalam kumpulan yang sama dengan fail dengan keizinan r atau x.
  • R-x dalam bit 7~9 menunjukkan bahawa fail boleh diakses oleh pengguna lain yang tidak dikenali dengan keizinan r atau x.

Selepas tetapan ini, pemilik telah membaca, menulis dan melaksanakan kebenaran, yang tidak berbeza. Tetapi untuk proses pengguna biasa yang tidak tergolong dalam kumpulan akar, ia agak berbeza.

Apabila proses pengguna biasa melaksanakan perintah sudo, ia memperoleh kebenaran pelaksanaan melalui x dalam yang lain, dan kemudian menggunakan s dalam pengguna untuk mendapatkan kebenaran sementara pemilik (root) fail boleh laku sudo, iaitu keizinan super .

Ini juga sebab pengguna biasa boleh melaksanakan banyak arahan dengan keistimewaan pentadbir melalui arahan sudo.

sediakan stick-bit

Prinsip asas kawalan kebenaran Linux

Selepas tetapan ini, semua orang telah membaca, menulis dan melaksanakan kebenaran untuk direktori /tmp, yang tidak berbeza. Walau bagaimanapun, bit t melekat ditetapkan di bahagian lain, dan fungsinya agak berbeza.

Jika bit melekat tidak ditetapkan dalam direktori, sesiapa yang mempunyai kebenaran menulis ke direktori boleh memadamkan mana-mana fail dan subdirektori di dalamnya, walaupun dia bukan pemilik fail yang sepadan dan tidak mempunyai kebenaran membaca atau menulis selepas sticky bit ditetapkan, pengguna boleh Hanya fail dan subdirektori miliknya boleh ditulis atau dipadam.

Inilah sebabnya sesiapa sahaja boleh menulis fail dan direktori ke direktori /tmp, tetapi hanya boleh menulis dan memadam fail atau direktori yang mereka miliki.

Petik serpihan aplikasi program man untuk menerangkan penggunaan set-user-id dan saved set-user-id

Program lelaki boleh digunakan untuk memaparkan manual bantuan dalam talian Program lelaki boleh dipasang untuk menentukan set-user-ID atau set-group-ID untuk pengguna atau kumpulan tertentu.

Program man boleh membaca atau menulis ganti fail di lokasi tertentu, yang biasanya dikonfigurasikan oleh fail konfigurasi (biasanya /etc/man.config atau /etc/manpath.config) atau pilihan baris arahan.

Program lelaki mungkin melaksanakan beberapa arahan lain untuk memproses fail yang mengandungi halaman manual yang dipaparkan.

Untuk mengelakkan ralat pemprosesan, man bertukar antara dua keistimewaan: keistimewaan pengguna menjalankan perintah man dan keistimewaan pemilik program man.

Urut utama yang perlu difahami: Apabila hanya man dilaksanakan, keistimewaan proses adalah keistimewaan pengguna lelaki Apabila proses anak dilaksanakan melalui man (seperti perintah shell melalui !bash), pengguna beralih kepada pengguna semasa, dan bertukar kembali selepas pelaksanaan.

Prosesnya adalah seperti berikut:

  1. Andaikan bahawa fail program man dimiliki oleh pengguna pengguna dan mempunyai set bit set-pengguna-ID Apabila kami melaksanakannya, kami mempunyai situasi berikut:
    – ID pengguna sebenar = UID pengguna kami
    – ID pengguna berkesan = UID pengguna lelaki
    – set-user-ID yang disimpan = UID pengguna lelaki
  2. Program lelaki akan mengakses fail konfigurasi dan halaman manual yang diperlukan. Fail ini dimiliki oleh pengguna lelaki, tetapi memandangkan ID pengguna yang berkesan ialah lelaki, akses kepada fail dibenarkan.
  3. Apabila manusia menjalankan sebarang arahan untuk kita, ia akan memanggil setuid(getuid())) (getuid() mengembalikan id pengguna sebenar).
    Kerana kami bukan proses superuser, perubahan ini hanya boleh menukar ID pengguna yang berkesan Kami akan mempunyai situasi berikut:
    Sekarang apabila proses man berjalan, ia menggunakan UID kami sebagai ID pengguna yang berkesan Ini bermakna kami hanya boleh mengakses fail yang kami mempunyai kebenaran kami sendiri. Iaitu, ia boleh melaksanakan mana-mana penapis dengan selamat bagi pihak kami.
    – ID pengguna sebenar = UID pengguna kami (tidak akan diubah)
    – ID pengguna berkesan = UID pengguna kami
    – set-user-ID yang disimpan = UID pengguna lelaki (tidak akan ditukar)
  4. Apabila penapis selesai, manusia akan memanggil setuid(euid).
    Di sini, euid ialah UID pengguna lelaki (ID ini disimpan oleh lelaki yang memanggil geteuid.) Panggilan ini OK kerana parameter setuid adalah sama dengan set-user-ID yang disimpan. (Inilah sebabnya kita memerlukan set-user-ID yang disimpan Pada masa ini kita akan mempunyai situasi berikut:
    – ID pengguna sebenar = UID pengguna kami (tidak akan diubah)
    – ID pengguna berkesan = UID lelaki
    – set-user-ID yang disimpan = UID pengguna lelaki (tidak akan ditukar)
  5. Memandangkan ID pengguna yang berkesan ialah man, kini program man boleh mengendalikan failnya sendiri.
    Dengan menggunakan set-user-ID yang disimpan dengan cara ini, kami boleh menggunakan kebenaran tambahan melalui set-user-ID fail program apabila proses bermula dan berakhir. Walau bagaimanapun, dalam tempoh ini kami beroperasi di bawah kuasa kami sendiri. Jika kami gagal menukar kembali kepada set-user-ID yang disimpan pada penghujungnya, kami mungkin mengekalkan kebenaran tambahan semasa kami menjalankan.

Mari kita lihat apa yang akan berlaku jika manusia memulakan cangkang:

  • Cangkang di sini dimulakan oleh manusia menggunakan garpu dan exec.
  • Oleh kerana pada masa ini ID pengguna sebenar dan ID pengguna berkesan adalah kedua-dua UID pengguna biasa kami (lihat langkah3), jadi shell tidak mempunyai kebenaran tambahan lain.
  • Cangkang yang dimulakan tidak boleh mengakses set-pengguna-ID(man) manusia yang disimpan, kerana set-pengguna-ID yang disimpan bagi cangkerang disalin daripada ID pengguna yang berkesan oleh exec.
  • Dalam proses anak (shell) melaksanakan eksekutif, semua ID pengguna adalah ID pengguna biasa kami.

Sebenarnya, cara kami menerangkan cara man menggunakan fungsi setuid tidak betul, kerana program ini mungkin menetapkan-ID-pengguna kepada root Pada masa ini, setuid akan menukar ketiga-tiga uid ke dalam id yang anda tetapkan, tetapi kami hanya perlukan Tetapkan ID pengguna yang berkesan.

Atas ialah kandungan terperinci Prinsip asas kawalan kebenaran Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:linuxprobe.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan